MYSQL master-slave 双向同步

高峰时期的网站压力很巨大,
别说开发别的产品,连运行效率都这么低,这样会导致用户体验非常差。
为了解决这个问题,我一直在探索,思考了整整1年,解决方法不是一时半刻就能出来的。
但是绝不是那种升级服务器,买更好的服务器这种没脑的想法。
能买到服务器那是最好,但是在没服务器的前提下,必须能找到绝处逢生的方法。
操作方法大概这样
第一步:
在A数据库的my.ini中添加
复制代码 代码如下:
server-id=1
log-bin=C:\mysqlback #同步事件的日志记录文件
binlog-do-db=test1 #提供数据同步服务的数据库
binlog-do-db=test2 #提供数据同步服务的数据库
binlog-do-db=test3 #提供数据同步服务的数据库
master-host=192.168.0.102 #主机B的地址
master-user=use102 #主机B提供应B的用户,该用户中需要包括数据库test1 test12test3的权限
master-password=usepwd102 #访问密码
master-port=3306 #端口,主机的MYSQL端口
master-connect-retry=60 #重试间隔60秒
replicate-do-db=test1 #同步的数据库
replicate-do-db=test2 #同步的数据库
replicate-do-db=test3 #同步的数据库
 
第二步:
在B数据库的my.ini中添加
复制代码 代码如下:
server-id=2
log-bin=C:\mysqlback #同步事件的日志记录文件
binlog-do-db=test1 #提供数据同步服务的数据库
binlog-do-db=test2 #提供数据同步服务的数据库
binlog-do-db=test3 #提供数据同步服务的数据库
master-host=192.168.0.101 #主机B的地址
master-user=use101 #主机A提供给A的用户,该用户中需要包括数据库test1 test12test3的权限
master-password=usepwd101 #访问密码
master-port=3306 #端口,主机的MYSQL端口
master-connect-retry=60 #重试间隔60秒
replicate-do-db=test1 #同步的数据库
replicate-do-db=test2 #同步的数据库
replicate-do-db=test3 #同步的数据库
 
第三步:
将A的mysql数据的权限给B
mysql>GRANT FILE ON *.* TO ‘use101’@’192.168.0.102’IDENTIFIEDBY ‘pwd101′;
将B的Mysql数据的权限给B操作同上。
第四步:
重启AB数据库,后:
B机器:
mysql>slave start;
查看同步配置情况
A机器:
mysql>show master status;
B机器:
mysql>show slave status;
 
每次遇到的问题都是
Slave_IO_Running = no
为了解决这个问题,纠结了2个月。今天终于成功了

需要注意的地方是:

1 从服务器的Master_Log_File和Master_Log_Pos 一定要设置正确(我就坑死在这个地方)

2 防火墙不能把mysql的端口挡住

3 同步的用户要有足够的访问权限

 
mysql>resetmaster;(清除日志文件)
 
修改slaver配置
slave stop;
CHANGE MASTER TO MASTER_LOG_FILE=”mysql-bin.000001″,MASTER_LOG_POS=106;
slave start;

发表评论