mysql 主从同步不一致_MYSQL主从复制数据不一致解决方案

先上Master库:使用show processlist;命令查看下进程是否Sleep太多。

使用show master status; 命令查看当前状态。

使用show slave status;命令查看某个slave当前状态

从上面看到Slave_SQL_Runnnig状态为No,说明当前Slave未同步

该方法适用于主从库数据相差不大,或者要求数据可以不完全统一的情况,数据要求不严格的情况

①使用stop slave;命令停止同步②使用set globalsql_slave_skip_counter =1;命令跳过一步错误,后面的数字可变

使用start slave;命令开启同步

使用show slave status\G 命令查看当前状态

如果显示Slave_IO_Running: Yes,Slave_SQL_Running: Yes,说明主从开始正常同步

主键冲突、表已存在等错误代码如1062,1032,1060等,可以在mysql主配置文件指定略过此类异常并继续下条sql同步,这样也可以避免很多主从同步的异常中断

使用slave-skip-errors= 1062,1032,1060命令忽略指定错误

使用servicemysqld restart命令重新启动mysql服务

使用用mysql>show slave status\G 查看当前状态:

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

该方法适用于主从库数据相差较大,或者要求数据完全统一的情况

解决步骤如下:

1.先进入主库,使用命令flush tables with read lock; 进行锁表,防止数据写入

注意:该处是锁定为只读状态,语句不区分大小写

2.进行数据备份

使用mysqldump-uroot -p -hlocalhost > mysql.bak.sql把数据备份到mysql.bak.sql文件

这里注意一点:数据库备份一定要定期进行,可以用shell脚本或者python脚本,都比较方便,确保数据万无一失

3.查看master 状态

mysql> show master status;

4. 使用scp mysql.bak.sql [email protected]:/tmp/命令把mysql备份文件传到从库机器进行数据恢复

5.使用stop slave;命令停止从库的状态

6.然后到从库执行mysql命令,导入数据备份mysql> source /tmp/mysql.bak.sql

7.设置从库同步,注意该处的同步点,就是主库show master status信息里的| File| Position两项

change master to master_host = '192.168.128.100', master_user ='rsync', master_port=3306, master_password='', master_log_file ='mysqld-bin.', master_log_pos=3260;

8.重新开启从同步

mysql> stop slave;

9.查看同步状态

mysql> show slave status\G 查看:

你可能感兴趣的:(mysql,主从同步不一致)