Chinaunix首页 | 论坛 | 博客
  • 博客访问: 350333
  • 博文数量: 34
  • 博客积分: 251
  • 博客等级: 二等列兵
  • 技术积分: 419
  • 用 户 组: 普通用户
  • 注册时间: 2012-07-21 15:50
文章分类

全部博文(34)

文章存档

2017年(5)

2016年(19)

2012年(10)

我的朋友

分类: 系统运维

2017-06-12 09:04:29

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

一.MySQL双主复制原理

1.  双主复制原理

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

二.验证环境

1.  操作系统

CentOS-6.7-x86_64

2.  MySQL版本

MySQL版本是5.6.36:

3.  拓扑图


1) 采用VMware ESXi虚拟出的2台服务器master/backup,地址10.11.4.196/197

2) MySQL已安装并配置完成,可参考http://blog.chinaunix.net/uid-26168435-id-5715005.html中的MySQL部分;

3) 主从配置可参考:http://blog.chinaunix.net/uid-26168435-id-5766005.html

三.master配置

1.  my.cnf配置

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

点击(此处)折叠或打开

  1. [root@master ~]# vim /etc/my.cnf
  2. [mysqld]
  3. server_id = 196
  4. log_bin = /mysql/mysql-bin
  5. max_binlog_size = 1G
  6. sync_binlog = 0
  7. binlog-format = mixed
  8. binlog-ignore-db = information_schema,mysql,performance_schema,test
  9. # 中继日志执行之后将变化写入自己的binlog文件,即从库从主库复制的文件默认不会写入自己的binlog文件,需要开启后才生效;
  10. # 通常此从库同时作为主库时,即链式复制时,需要开启此参数;
  11. # 默认参数为0,表示OFF, 设置为1表示ON,参数可直接带OFF或ON.
  12. log-slave-updates = 1
  13. # 做双主时,每台数据库都可能在同一个表中插入数据,如果表有一个自动增长的主键,那么就会在多服务器上出现主键冲突;解决方案是让每个数据库的自增主键不连续;
  14. # 参数auto_increment_increment表示自增值,一般有n台主库,自增值就采用n;
  15. # auto_increment_offset表示起始序号,一般offset不超过自增值,且各主库的自增值不一样.
  16. auto_increment_increment = 2
  17. auto_increment_offset = 1

点击(此处)折叠或打开

  1. [root@master ~]# service mysqld stop
  2. [root@master ~]# mysqld_safe --skip-slave-start &

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

2.  创建复制用户

点击(此处)折叠或打开

  1. [root@master ~]# mysql -uroot -p
  2. Enter password:

  3. mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'10.11.4.%' IDENTIFIED BY 'repl';
  4. mysql> flush privileges;

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

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

点击(此处)折叠或打开

  1. [root@master ~]# mysql -uroot -p
  2. Enter password:

  3. mysql> show master status;

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

4.  iptables

点击(此处)折叠或打开

  1. [root@master ~]# vim /etc/sysconfig/iptables
  2. -A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
  3. [root@master ~]# service iptables restart

四.backup配置

1.  my.cnf配置

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

点击(此处)折叠或打开

  1. [root@master ~]# scp /usr/local/mysql/my.cnf backup:/usr/local/mysql/
  2. root@backup's password:

点击(此处)折叠或打开

  1. [root@backup ~]# vim /etc/my.cnf
  2. [mysqld]
  3. server_id = 197
  4. auto_increment_increment = 2
  5. auto_increment_offset = 2

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

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

点击(此处)折叠或打开

  1. [root@backup ~]# service mysqld stop
  2. [root@backup ~]# mysqld_safe --skip-slave-start &

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

2.  创建复制用户

点击(此处)折叠或打开

  1. [root@backup ~]# mysql -uroot -p
  2. Enter password:

  3. mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'10.11.4.%' IDENTIFIED BY 'repl';
  4. mysql> flush privileges;

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

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

点击(此处)折叠或打开

  1. [root@backup ~]# mysql -uroot -p
  2. Enter password:

  3. mysql> show master status;

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

4.  iptables

点击(此处)折叠或打开

  1. [root@backup ~]# vim /etc/sysconfig/iptables
  2. -A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
  3. [root@backup ~]# service iptables restart

五.同步复制

1.  master配置同步复制

点击(此处)折叠或打开

  1. [root@master ~]# mysql -uroot -p
  2. Enter password:

  3. mysql> change master to
  4.        master_host = '10.11.4.197',
  5.        master_user = 'repl',
  6.        master_password = 'repl',
  7.        master_log_file = 'mysql-bin.000009',
  8.        master_log_pos = 1306;
  9. mysql> start slave;

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

# master-hostmaster-usermaster-passwordmaster-port等也可在my.cnf文件中指定;

#"start slave"启动复制。

2.  backup配置同步复制

点击(此处)折叠或打开

  1. [root@backup ~]# mysql -uroot -p
  2. Enter password:

  3. mysql> change master to
  4.        master_host = '10.11.4.196',
  5.        master_user = 'repl',
  6.        master_password = 'repl',
  7.        master_log_file = 'mysql-bin.000003',
  8.        master_log_pos = 2462;
  9. mysql> start slave;

六.验证

1.  查看线程

1)   master服务器

点击(此处)折叠或打开

  1. [root@master ~]# mysql -uroot -p
  2. Enter password:

  3. mysql> show processlist;

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

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

2)   backup服务器

点击(此处)折叠或打开

  1. [root@backup ~]# mysql -uroot -p
  2. Enter password:

  3. mysql> show processlist;

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

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

2.  查看从库状态

1)   master服务器

点击(此处)折叠或打开

  1. [root@master ~]# mysql -uroot -p
  2. Enter password:

  3. mysql> show slave status\G;

#重点关注Slave_IO_RunningSlave_SQL_Running,状态均为YES时正常。

2)   backup服务器

点击(此处)折叠或打开

  1. [root@backup ~]# mysql -uroot -p
  2. Enter password:

  3. mysql> show slave status\G;

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

1)   master服务器新建数据库与表

点击(此处)折叠或打开

  1. [root@master ~]# mysql -uroot -p
  2. Enter password:

  3. mysql> create database dbtest2;
  4. mysql> use dbtest2;
  5. mysql> create table tabtest2(id int);
  6. mysql> insert into tabtest2() values(1),(2);

2)   backup服务器查看数据库与表

点击(此处)折叠或打开

  1. [root@backup ~]# mysql -uroot -p
  2. Enter password:

(1)查看数据库

点击(此处)折叠或打开

  1. mysql> show databases;

(2)查询表

点击(此处)折叠或打开

  1. mysql> select * from dbtest2.tabtest2;

3)   backup服务器修改数据表

点击(此处)折叠或打开

  1. [root@backup ~]# mysql -uroot -p
  2. Enter password:
  3.  
  4. mysql> use dbtest2;
  5. mysql> insert into tabtest2() values(3),(4);

4)   master服务器查看修改后的数据表

点击(此处)折叠或打开

  1. [root@master ~]# mysql -uroot -p
  2. Enter password:
  3.  
  4. mysql> select * from dbtest2.tabtest2;

阅读(1924) | 评论(0) | 转发(0) |
0

上一篇:MySQL主从复制

下一篇:没有了

给主人留下些什么吧!~~