设定好主从同步之后,show slave status\G显示同步正常,但是不直观,第一次弄这个,担心数据是否完全同步,决定使用测试网站连接从服务器的数据库看看,发现网站数据同步正常。
因为主从mysql服务器其实是一个服务器上的两台虚拟机,万一服务器出问题,主从mysql其实都会当掉,还是不保险,所以准备再配置一个异地从。配置主从的时候需要停止主服务器,网站也不能访问,有点不划算,既然这从服务器数据同步正常,就尝试配置下主-从-从模式好了
一主带一丛,从另外为主再带一丛
配置思路:暂停本地从服务器,拷贝数据到异地从服务器上,配置本地从服务器和异地从同步,然后再开启本地从服务器,应该自动和主服务器同步了
想法是好的,但操作出错了
为停止从服务器上的数据同步操作,我使用了锁表命令 FLUSH TABLES WITH READ LOCK;
结果 解锁UNLOCK TABLES; 之后发现和主之间的同步出错了
分析原因:
锁表之后同步并没有停止,Read_Master_Log_Pos:参数不一致了
网上查了不少恢复同步的办法,均失败告终,重新配置主从同步吧,还是得暂停网站了
重新配置主从完必之后,再重新来配置本地从和异地从之间的同步
本地从服务器的外网IP229.119.8.11
正确的操作方法应该是:
1.添加授权并停止本地从同步,清理日志
GRANT REPLICATION SLAVE ON *.* to slave@'%' identified by '123456';
flush privileges;
stop slave;
reset master;
2.锁表
FLUSH TABLES WITH READ LOCK;
3.打包数据库
4.异地从服务器下载恢复数据,并开启从复制
CHANGE MASTER TO MASTER_HOST='229.119.8.11', MASTER_PORT=3306,MASTER_USER='slave', MASTER_PASSWORD='123456';
start slave;
检查同步状态show slave status\G
5.本地从数据库解锁
UNLOCK TABLES;
做到这步的时候出了点小问题
6.本地从服务器恢复与主同步
start slave;
检查与主同步状态show slave status\G
两台从服务器都正常
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
所以说单纯看这个状态不直观,网站连接数据库查看数据同步状态才是最可靠的,有没新帖一目了然,位于最尾端的异地从服务器并没有新帖,也就是说同步还是有问题
网上搜索了下,原来需要Log-slave-updates参数
配置从库上的更新操作是否写入二进制文件,如果这台从库,还要做其他从库的主库,那么就需要打这个参数,以便从库的从库能够进行日志同步。
编辑本地从服务器的my.cnf
vi /etc/my.cnf
添加 log-slave-updates
再重新配置本地从与异地从服务器之间的同步,好在本地主服务器不需要再停止了
步骤1-6再重新运行一遍,这次成功了,mysql服务器配置为主-从-从模式