centos6.5下做mysql主主同步,下边只是做个记录,方便以后查找:
一、mysql服务器介绍:
服务器名称 | IP | 系统 | mysql版本 |
mysql1 | 192.168.10.5 | centos 6.5 | 5.1.73 |
mysql2 | 192.168.10.6 | centos 6.5 | 5.1.73 |
二、创建同步账户
需要同步的数据库名称为dedecms
在mysql1上做如下操作:
mysql> grant replication slave on *.* to 'keepalived'@'192.168.10.6' identified by 'keepalived2016'; Query OK, 0 rows affected (0.00 sec) mysql> flush privileges; Query OK, 0 rows affected (0.00 sec)
在mysql2上做如下操作:
mysql> grant replication slave on *.* to 'keepalived'@'192.168.10.5' identified by 'keepalived2016'; Query OK, 0 rows affected (0.11 sec) mysql> flush privileges; Query OK, 0 rows affected (0.00 sec)
三、修改my.cnf文件添加如下内容:
暂停两个服务器上的mysql服务
在mysql1上的my.cnf添加如下内容:
log-bin=mysql-bin #开启日志功能 server-id=1 #设置server-id唯一的 binlog-do-db=dedecms #需要记录日志的数据库名称,可用逗号分割写多个数据库名称,或写多个binlog-do-db binlog-ignore-db=mysql #不需要记录日志的数据库名称,可用逗号分割写多个数据库名称,或写多个binlog-ignore-db replicate-do-db=dedecms #需要同步的数据库名称,可用逗号隔开,或者写多个此选项 replicate-ignore-db=mysql,information_schema #不需要同步的数据库,可用逗号隔开,或者写多个此选项 #下面是一些同步参数,可改。 log-slave-updates sync_binlog=1 auto_increment_offset=1 auto_increment_increment=2 slave-skip-errors=all
在mysql2上的my.cnf添加如下内容:
log-bin=mysql-bin #开启日志功能 server-id=2 #设置server-id唯一的 binlog-do-db=dedecms #需要记录日志的数据库名称,可用逗号分割写多个数据库名称,或写多个binlog-do-db binlog-ignore-db=mysql #不需要记录日志的数据库名称,可用逗号分割写多个数据库名称,或写多个binlog-ignore-db replicate-do-db=dedecms #需要同步的数据库名称,可用逗号隔开,或者写多个此选项 replicate-ignore-db=mysql,information_schema #不需要同步的数据库,可用逗号隔开,或者写多个此选项 #下面是一些同步参数,可改。 log-slave-updates sync_binlog=1 auto_increment_offset=2 auto_increment_increment=2 slave-skip-errors=all
四、启动两个服务器上的mysql服务,然后在两个服务器上查看作为master的状态
在mysql1上查看,执行如下操作:
mysql> flush tables with read lock; #防止进入新的数据 Query OK, 0 rows affected (0.00 sec) mysql> show master status\G; *************************** 1. row *************************** File: mysql-bin.000001 Position: 106 Binlog_Do_DB: dedecms Binlog_Ignore_DB: mysql 1 row in set (0.00 sec) 记好:file、postition
在mysql2上查看,执行如下操作:
mysql> flush tables with read lock; Query OK, 0 rows affected (0.00 sec) mysql> show master status\G; *************************** 1. row *************************** File: mysql-bin.000001 Position: 106 Binlog_Do_DB: dedecms Binlog_Ignore_DB: mysql 1 row in set (0.01 sec) 记好:file、postition
五、在mysql1和mysql2上用change master语句指定同步位置:
在mysql1上做如下操作:
mysql> change master to master_host='192.168.10.6',master_user='keepalived',master_password='keepalived2016',master_log_file='mysql-bin.000001',master_log_pos=106;
在mysql2上做如下操作:
mysql> change master to master_host='192.168.10.5',master_user='keepalived',master_password='keepalived2016',master_log_file='mysql-bin.000001',master_log_pos=106;
master_log_file和master_log_pos根据上边查询出来的为准
六、在两台服务器上解锁表并启动线程:
在mysql1上做如下操作:
mysql> unlock tables; Query OK, 0 rows affected (0.00 sec) mysql> start slave; Query OK, 0 rows affected (0.00 sec)
在mysql2上做如下操作:
mysql> unlock tables; Query OK, 0 rows affected (0.00 sec) mysql> start slave; Query OK, 0 rows affected (0.00 sec)
七、分别在两台服务器上查看服务器状态:
使用如下代码查看: mysql> show slave status\G; 以下两个参数正确即可: ... ... Slave_IO_Running: Yes Slave_SQL_Running: Yes ... ...
八、测试结果如下:
分别在两个服务器上创建dedcms数据库,然后在mysql1上创建表

然后在mysql2上查询此表:

在mysql1上插入数据:

在mysql2上查询:

相反,在mysql2上插入数据,在mysql1上查询:


上述只是做个记录,如有错误地方可以及时联系我更改处理。