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主主复制的主要内容,如果未能解决你的问题,请参考以下文章

MySQL主主复制试验

MySQL 主主复制

mysql主主复制汇总整理

Keepalived+Lvs+Mysql主主复制

转载-Mysql主主复制架构配置

MySQL主主复制