mysql主从不一致解决方法
方法一:忽略错误,同步
该方法适用于主从库数据相差不大,或者要求数据可以不完全统一的情况,数据要求不严格的情况
解决:
1 2 3 4 5 6 7 8 9 10 11 12 13 | stop slave;
#表示跳过一步错误,后面的数字可变
setglobalsql_slave_skip_counter =1;
start slave;
之后再用mysql> show slave status\G 查看:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes |
ok,现在主从同步状态正常了。。。
方式二:重新做主从,完全同步
该方法适用于主从库数据相差较大,或者要求数据完全统一的情况
--主机开两个窗口,一个进入mysql,一个是shell --主机阻断写操作 mysql> FLUSH TABLES WITH READ LOCK; Query OK, 0 rows affected (0.00 sec) mysql> mysql> mysql> SHOW MASTER STATUS; +------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000002 | 1529881 | openser | mysql,test | +------------------+----------+--------------+------------------+ 1 row in set (0.00 sec) --另外一个窗口导出主机数据库 mysqldump -u root -p123456 --opt -R openser > openser20121203.sql --刚才的窗口主机解锁 mysql> UNLOCK TABLES; Query OK, 0 rows affected (0.00 sec) mysql> --打包数据文件到从机 drop database openser; create database openser; mysql -u root -p123456 openser < openser20121127.sql --从机操作 SLAVE STOP; reset slave; CHANGE MASTER TO MASTER_HOST='192.168.21.26', MASTER_USER='repl_user', MASTER_PASSWORD='123456', MASTER_LOG_FILE='mysql-bin.000002', MASTER_LOG_POS=1529881; start slave; show slave status\G