码迷,mamicode.com
首页 > 数据库 > 详细

MySQL双主复制

时间:2017-09-28 15:10:52      阅读:292      评论:0      收藏:1      [点我收藏+]

标签:conf   sql   1.4   双主复制   新建   默认   top   tar   vim   

原文发表于cu2017-06-12

本文简单介绍MySQL双主复制原理及1个简单是双主复制验证。

  1. MySQL双主复制原理

  1. 双主复制原理

master-master复制的两台服务器,既是master,又是另一台服务器的slave本质上互为主从。

  1. 验证环境

  1. 操作系统

CentOS-6.7-x86_64

  1. MySQL版本

MySQL版本是5.6.36:

https://cdn.mysql.com//Downloads/MySQL-5.6/mysql-5.6.36.tar.gz

  1. 拓扑图

技术分享

  1. 采用VMware ESXi虚拟出的2台服务器master/backup,地址10.11.4.196/197;
  2. MySQL已安装并配置完成,可参考http://blog.chinaunix.net/uid-26168435-id-5715005.html中的MySQL部分;
    1. master配置

  3. my.cnf配置

在主从复制配置文件的基础上增加3个参数项。

[root@master ~]# vim /etc/my.cnf

[mysqld]

server_id = 196

log_bin = /mysql/mysql-bin

max_binlog_size = 1G

sync_binlog = 0

binlog-format = mixed

binlog-ignore-db = information_schema,mysql,performance_schema,test

 

# 中继日志执行之后将变化写入自己的binlog文件,即从库从主库复制的文件默认不会写入自己的binlog文件,需要开启后才生效;

# 通常此从库同时作为主库时,即链式复制时,需要开启此参数;

# 默认参数为0,表示OFF, 设置为1表示ON,参数可直接带OFFON.

log-slave-updates = 1

 

# 做双主时,每台数据库都可能在同一个表中插入数据,如果表有一个自动增长的主键,那么就会在多服务器上出现主键冲突;解决方案是让每个数据库的自增主键不连续;

# 参数auto_increment_increment表示自增值,一般有n台主库,自增值就采用n;

# auto_increment_offset表示起始序号,一般offset不超过自增值,且各主库的自增值不一样.

auto_increment_increment = 2

auto_increment_offset = 1

 

[root@master ~]# service mysqld stop

[root@master ~]# mysqld_safe --skip-slave-start &

#使用--skip-slave-start启动,可以不立即启动从库的复制线程,方便后续配置操作

  1. 创建复制用户

[root@master ~]# mysql -uroot -p

Enter password:

 

mysql> GRANT REPLICATION SLAVE ON *.* TO ‘repl‘@‘10.11.4.%‘ IDENTIFIED BY ‘repl‘;

mysql> flush privileges;

#在主库上10.11.4.0网段的主机授权,从库用户repl获得REPLICATION SLAVE权限。

  1. 获取master binlog文件名与偏移量

[root@master ~]# mysql -uroot -p

Enter password:

 

mysql> show master status;

技术分享

#获取到binlog文件名与偏移量,可为从库设定同步复制点。

  1. iptables

[root@master ~]# vim /etc/sysconfig/iptables

-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT

[root@master ~]# service iptables restart

  1. backup配置

  1. my.cnf配置

将主库服务器上的my.cnf文件拷贝到从库服务器

[root@master ~]# scp /usr/local/mysql/my.cnf backup:/usr/local/mysql/

root@backup‘s password:

 

[root@backup ~]# vim /etc/my.cnf

[mysqld]

server_id = 197

 

auto_increment_increment = 2

auto_increment_offset = 2

#修改server id值与主库服务器不同;

#auto_increment_offset参数,各服务器的offset值应不一样。

 

[root@backup ~]# service mysqld stop

[root@backup ~]# mysqld_safe --skip-slave-start &

#使用--skip-slave-start启动,可以不立即启动从库的复制线程,方便后续配置操作。

  1. 创建复制用户

[root@backup ~]# mysql -uroot -p

Enter password:

 

mysql> GRANT REPLICATION SLAVE ON *.* TO ‘repl‘@‘10.11.4.%‘ IDENTIFIED BY ‘repl‘;

mysql> flush privileges;

#在主库上10.11.4.0网段的主机授权,从库用户repl获得REPLICATION SLAVE权限。

  1. 获取master(backup节点) binlog文件名与偏移量

[root@backup ~]# mysql -uroot -p

Enter password:

 

mysql> show master status;

技术分享

#获取到binlog文件名与偏移量,可为从库设定同步复制点。

  1. iptables

[root@backup ~]# vim /etc/sysconfig/iptables

-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT

[root@backup ~]# service iptables restart

  1. 同步复制

  1. master配置同步复制

[root@master ~]# mysql -uroot -p

Enter password:

 

mysql> change master to

master_host = ‘10.11.4.197‘,

master_user = ‘repl‘,

master_password = ‘repl‘,

master_log_file = ‘mysql-bin.000009‘,

master_log_pos = 1306;

mysql> start slave;

#配置从库向主库提交的参数,如果参数有错误,可以重新配置;

# master-host、master-user、master-password、master-port等也可在my.cnf文件中指定;

#"start slave"启动复制。

  1. backup配置同步复制

[root@backup ~]# mysql -uroot -p

Enter password:

 

mysql> change master to

master_host = ‘10.11.4.196‘,

master_user = ‘repl‘,

master_password = ‘repl‘,

master_log_file = ‘mysql-bin.000003‘,

master_log_pos = 2462;

mysql> start slave;

  1. 验证

  1. 查看线程

  2. master服务器

[root@master ~]# mysql -uroot -p

Enter password:

 

mysql> show processlist;

技术分享

#master服务器做为主库的binlog dump线程已由backup服务器从库的repl用户启动;

#master服务器做为从库的I/0线程与SQL线程由系统用户启动。

  1. backup服务器

[root@backup ~]# mysql -uroot -p

Enter password:

 

mysql> show processlist;

技术分享

#backup服务器做为主库的binlog dump线程已由master服务器从库的repl用户启动;

#backup服务器做为从库的I/0线程与SQL线程由系统用户启动。

  1. 查看从库状态

  2. master服务器

[root@master ~]# mysql -uroot -p

Enter password:

 

mysql> show slave status\G;

技术分享

#重点关注Slave_IO_Running与Slave_SQL_Running,状态均为YES时正常。

  1. backup服务器

[root@backup ~]# mysql -uroot -p

Enter password:

 

mysql> show slave status\G;

技术分享

  1. 查看新建数据数据库同步情况

  2. 在master服务器新建数据库与表

[root@master ~]# mysql -uroot -p

Enter password:

 

mysql> create database dbtest2;

mysql> use dbtest2;

mysql> create table tabtest2(id int);

mysql> insert into tabtest2() values(1),(2);

技术分享

  1. 在backup服务器查看数据库与表

[root@backup ~]# mysql -uroot -p

Enter password:

(1)查看数据库

mysql> show databases;

技术分享

(2)查询表

mysql> select * from dbtest2.tabtest2;

技术分享

  1. 在backup服务器修改数据表

[root@backup ~]# mysql -uroot -p

Enter password:

 

mysql> use dbtest2;

mysql> insert into tabtest2() values(3),(4);

技术分享

  1. 在master服务器查看修改后的数据表

[root@master ~]# mysql -uroot -p

Enter password:

 

mysql> select * from dbtest2.tabtest2;

技术分享

MySQL双主复制

标签:conf   sql   1.4   双主复制   新建   默认   top   tar   vim   

原文地址:http://www.cnblogs.com/netonline/p/7606704.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!