先查看从服务器的状态
1 mysql>SHOW SLAVE STATUS;
如果发现以下两个字段
1 Slave_IO_Running: No
2 Slave_SQL_Running: NO
其中有一个为No,则同步出错,需要恢复。出错信息可以参考Last_Error字段。
一般情况下,在从服务器上执行
1 mysql>stop slave;
2 mysql>start slave;
即可恢复。
如果运行这个之后,依然不能恢复,则可尝试以下方法。
先锁定表,在主服务器上执行
1 mysql>FLUSH TABLES WITH READ LOCK;
2 mysql>SHOW MASTER STATUS;
第一句锁定表,第二句显示主服务器的状态,记下
这两个字段的值,再把需要同步的数据库的目录,在主服务器上操作,复制到从服务器
1 scp -r db_1 db_2 root@192.168.1.200:/var/lib/mysql/
这里,把db_1,db_2两个数据库目录,复制到从服务器的MySql数据目录下,复制后,注意权限问题。
完成复制之后,在主服务器上操作,解锁表
在从服务器上操作
1 STOP SLAVE;
2
3 CHANGE MASTER TO
4 MASTER_LOG_FILE='mysql-bin.000098',
5 MASTER_LOG_POS=22926865;
6
7 START SLAVE;
8
9 SHOW SLAVE STATUS;
这里,LOG_FILE与LOG_POS分别对应之前在主服务器上查询出来的File与Position字段。
完成。
其中的CHANGE MASTER TO语句,通常还有以下值,按需选择设置
1 CHANGE MASTER TO
2 MASTER_HOST='192.168.1.199',
3 MASTER_USER='repl',
4 MASTER_PASSWORD='repl',
5 MASTER_PORT=3306
6 MASTER_LOG_FILE='MYSQL-BIN.000098',
7 MASTER_LOG_POS=22926865,
8 MASTER_CONNECT_RETRY=30;
|