mysql主主同步配置步骤

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上查询:

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