设定好主从同步之后,show slave status\G显示同步正常,但是不直观,第一次弄这个,担心数据是否完全同步,决定使用测试网站连接从服务器的数据库看看,发现网站数据同步正常。

因为主从mysql服务器其实是一个服务器上的两台虚拟机,万一服务器出问题,主从mysql其实都会当掉,还是不保险,所以准备再配置一个异地从。配置主从的时候需要停止主服务器,网站也不能访问,有点不划算,既然这从服务器数据同步正常,就尝试配置下主-从-从模式好了

一主带一丛,从另外为主再带一丛

 

配置思路:暂停本地从服务器,拷贝数据到异地从服务器上,配置本地从服务器和异地从同步,然后再开启本地从服务器,应该自动和主服务器同步了

想法是好的,但操作出错了

为停止从服务器上的数据同步操作,我使用了锁表命令 FLUSH TABLES WITH READ LOCK;

结果 解锁UNLOCK TABLES; 之后发现和主之间的同步出错了

分析原因:

锁表之后同步并没有停止,Read_Master_Log_Pos:参数不一致了

网上查了不少恢复同步的办法,均失败告终,重新配置主从同步吧,还是得暂停网站了

http://tt520.blog.51cto.com/4530575/1117734

 

重新配置主从完必之后,再重新来配置本地从和异地从之间的同步

本地从服务器的外网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; 

做到这步的时候出了点小问题 http://tt520.blog.51cto.com/4530575/1122123

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服务器配置为主-从-从模式

 

 

有点不明白的地方,据说从服务器不能有写操作,否则会导致同步出问题,我考虑的解决办法是作为环状主从结构,3台机器互为主从,这样就不担心有时用测试论坛连接从数据库监测同步状况的时候出问题了,但做这个配置需要停主服务器,所以暂时还是放弃了