MySQL主主复制
Posted Mr.Liang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL主主复制相关的知识,希望对你有一定的参考价值。
1 mysql5.6 主主复制 环境如下: CentOS6.4_64 MySQL5.6 master1:192.168.10.11 master2:192.168.10.12 1.1 配置 master1 a. 修改 my.cnf 文件,增加如下内容: server-id=1 #数据库 ID 号 log-bin=mysql-bin #启用二进制日志; binlog-do-db=baba1 #需要同步的数据库名,这里同步 baba1、baba2 两数据库 binlog-do-db=baba2 binlog-ignore-db=mysql #不同步的数据库名,如果不设置可以将其注释掉 log-bin=/var/log/mysqlbin/bin_log #设定生成的 log 文件名,如果没有/var/log/mysqlbin 目录, 则创建,并执行 chown -R mysql.mysql /var/log/mysqlbin log-slave-updates #把从库的写操作,记录到 binlog 中 expire_logs_days=365 #日志文件过期天数,默认是 0,表示不过期 auto-increment-increment=2 #设定为主服务器的数量,防止 auto_increment 字段重复 auto-increment-offset=1 #自增长字段的初始值,在多台 master 环境下,不会出现自增 长 ID 重复 b. 添加一个复制帐号 backup [[email protected] ~]# mysql -uroot -p123456 mysql>grant replication slave on *.* to [email protected]‘%‘ identified by ‘123456‘; mysql>flush privileges; c. 在 master2 上测试是否能连接到 master1,记得把 3306 添加到 iptables 里 [[email protected] ~]# mysql -ubackup -h 192.168.10.11 -p123456 1.2 配置 master2 a. 修改 my.cnf 文件,增加如下内容: server-id=2 #数据库 ID 号 log-bin=mysql-bin #启用二进制日志; binlog-do-db=baba1 #需要同步的数据库名,这里同步 baba1、baba2 两数据库 binlog-do-db=baba2 binlog-ignore-db=mysql #不同步的数据库名,如果不设置可以将其注释掉 log-bin=/var/log/mysqlbin/bin_log #设定生成的 log 文件名,如果没有/var/log/mysqlbin 目录, 巴巴网(www.baba.io)为您提供图书、文档、源码、工具等资源的下载,是您最好的资源下载网。 本系列文档,由巴巴网(www.baba.io)独家发行,如需最新版本,请访问 www.baba.io 则创建,并执行 chown -R mysql.mysql /var/log/mysqlbin log-slave-updates #把从库的写操作,记录到 binlog 中 expire_logs_days=365 #日志文件过期天数,默认是 0,表示不过期 auto-increment-increment=2 #设定为主服务器的数量,防止 auto_increment 字段重复 auto-increment-offset=2 #自增长字段的初始值,在多台 master 环境下,不会出现自增 长 ID 重复 b. 添加一个复制帐号 backup [[email protected] ~]# mysql -uroot -p123456 mysql>grant replication slave on *.* to [email protected]‘%‘ identified by ‘123456‘; mysql>flush privileges; c. 在 Master1 上测试是否能连接到 Master2,记得把 3306 添加到 iptables 里 [[email protected] ~]# mysql -ubackup -h 192.168.10.12 -p123456 1.3 设置 master-master 同步 a. 重启 master1、master2 上的 MySQL [[email protected] ~]# service mysql restart b. 查看 master1 的状态 [[email protected] ~]# mysql -uroot -p123456 mysql> show master status; +----------------+----------+--------------+------------------+-------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +----------------+----------+--------------+------------------+-------------------+ | bin_log.000028 | 120 | baba1,baba2 | mysql | | +----------------+----------+--------------+------------------+-------------------+ 1 row in set (0.00 sec) c. 查看 master2 的状态 [[email protected] ~]# mysql -uroot -p123456 mysql> show master status; +----------------+----------+--------------+------------------+-------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +----------------+----------+--------------+------------------+-------------------+ | bin_log.000028 | 120 | baba1,baba2 | mysql | | +----------------+----------+--------------+------------------+-------------------+ 1 row in set (0.00 sec) c. 设置 master1 从 master2 同步数据 mysql>CHANGE MASTER TO MASTER_HOST=‘192.168.10.12‘,MASTER_PORT=3306, 巴巴网(www.baba.io)为您提供图书、文档、源码、工具等资源的下载,是您最好的资源下载网。 本系列文档,由巴巴网(www.baba.io)独家发行,如需最新版本,请访问 www.baba.io MASTER_USER=‘backup‘,MASTER_PASSWORD=‘123456‘,MASTER_LOG_FILE=‘bin_log.00 0028‘,MASTER_LOG_POS=120; mysql> start slave; #查询数据库的 slave 状态 mysql> show slave status\G; #如果下面两个参数都是 Yes,则说明 master1 配置成功 Slave_IO_Running: Yes Slave_SQL_Running: Yes d. 设置 master2 从 master1 同步数据 mysql>CHANGE MASTER TO MASTER_HOST=‘192.168.10.11‘,MASTER_PORT=3306, MASTER_USER=‘backup‘,MASTER_PASSWORD=‘123456‘,MASTER_LOG_FILE=‘bin_log.00 0028‘,MASTER_LOG_POS=120; mysql> start slave; #查询数据库的 slave 状态 mysql> show slave status\G; #如果下面两个参数都是 Yes,则说明 master1 配置成功 Slave_IO_Running: Yes Slave_SQL_Running: Yes 1.4 测试主主复制 a. 在 master1 上,执行如下操作: [[email protected] ~]# mysql -uroot -p123456 mysql> create database baba1; mysql> use baba1; mysql> create table test(id int AUTO_INCREMENT,name varchar(20),PRIMARY KEY (`id`)); mysql> insert into test(name)values(‘aaa‘); mysql> insert into test(name)values(‘bbb‘); mysql> insert into test(name)values(‘ccc‘); mysql> select * from test; +----+------+ | id | name | +----+------+ | 1 | aaa | | 3 | bbb | | 5 | ccc | +----+------+ 3 rows in set (0.00 sec) b. 在 master2 上,执行如下操作: 巴巴网(www.baba.io)为您提供图书、文档、源码、工具等资源的下载,是您最好的资源下载网。 本系列文档,由巴巴网(www.baba.io)独家发行,如需最新版本,请访问 www.baba.io [[email protected] ~]# mysql -uroot -p123456 mysql> use baba1; mysql> select * from test; +----+------+ | id | name | +----+------+ | 1 | aaa | | 3 | bbb | | 5 | ccc | +----+------+ 3 rows in set (0.00 sec) mysql> insert into test(name)values(‘ddd‘); mysql> insert into test(name)values(‘eee‘); mysql> insert into test(name)values(‘fff‘); mysql> select * from test; +----+------+ | id | name | +----+------+ | 1 | aaa | | 3 | bbb | | 5 | ccc | | 6 | ddd | | 8 | eee | | 10 | fff | +----+------+ 6 rows in set (0.00 sec)
以上是关于MySQL主主复制的主要内容,如果未能解决你的问题,请参考以下文章