mysql 5.7 主从同步问题

1、slave同步状态中出现Slave_SQL_Running: No ,即slave不同步!

解决办法:

第一种方法:忽略错误后,继续同步。

该方法适用于主从库数据相差不大,或者要求数据可以不完全统一的情况,数据要求不严格的情况(下面均为在slave机器上的操作)mysql> stop slave;
mysql> set global sql_slave_skip_counter =1;   //表示跳过一步错误,后面的数字可变;或者在my.cnf里添加slave-skip-errors = all(上面已在配置中添加)
mysql> start slave;
mysql> show slave status\G      //查看:

第二种方法:重新做主从,完全同步

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

1--master主库上操作
mysql> flush tables with read lock;  //进行锁表,防止数据写入。注意该处是锁定为只读状态,语句不区分大小写

mysqldump --lock-all-tables --all-databases --flush-logs --master-data=2 > /root/allsql.sql   //主库完全备份(如果是指定库同步,就备份指定库),注意数据库备份一定要定期进行,确保数据万无一失

mysql> show master status;      //查看master状态,注意log file和pos节点,slave同步会用到

# scp mysql.bak.sql [email protected]:/tmp/        //把备份文件传到slave从库机器,进行数据恢复

2--slave从库操作

mysql> stop slave;
mysql> source /tmp/mysql.bak.sql
mysql> change master to master_host = '192.168.1.101', master_user = 'slave', master_port=3306.......;
mysql> start slave;
mysql> show slave status\G 
.......
Slave_IO_Running: Yes
Slave_SQL_Running: Yes

1--master主库上操作

解锁数据库

unlock  tables

此种方法中最为关键主要有两步:
①主服务器上锁表做完全备份,并滚动日志;
②从服务器上进行半道恢复.

2、slave同步状态中出现Slave_IO_Running: NO

原因:如果数据库为复制虚拟机过去的,那么auto.cnf 中记录的数据库唯一UUID 会冲突导致,从数据库的sql_io 进程无法启动。

解决:重新安装数据库

猜你喜欢

转载自www.cnblogs.com/fanggege/p/10856102.html
今日推荐