版本不一致

1.主从同步错误 SQL线程报错
问题描述:zabbix报警mysql数据库主从不同步,登录后查询发现SQL线程错误。
解决方案:查看错误代码为1062,1032 导致出现问题的原因有很多,这次并没有去深入分析原因,直接将错误跳过。
1.临时在mysql中操作:
stop slave; # 停止主从复制
SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1 #跳过一个事务
start slave; # 开启主从复制
show slave status\G # 查看状态
2.在配置文件中永久生效
/etc/my.cnf
在mysql配置文件[mysqld]下面增加
slave-skip-errors = 1064, 1032 # 主从复制时忽略错误
2.今天在进行数据库操作时,导致一个从库发生主从同步错误,ERROR的意思是创建用户的语法错误,在5.7可以,然后在8.0进行Binlog重放错误.
image.png
问题处理:
出现这个错误的原因是在主库执行的语句是创建用户并授权,但是对于8.0数据库,创建用户和授权语句需要分开写,随意会出现以上错误。
链接:(20条消息) MySQL_8.0与5.7区别之账户与安全_weixin_30652879的博客-CSDN博客
image.png
解决步骤:
1.stop slave;
2.SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1 跳过这个事务
3.start slave;
4.show slave status\G 查看主从异常是否解决
5.set global read_only=0;
6.create user ‘query_data_analysis’@’%’ identified by ‘Han2rZY7uEn9m!Asana’;
7.GRANT all privileges on data_analysis.* to query_data_analysis@’%’;
8.set global read_only=1;
9.show global variables like “%read_only%”; 查看是否开启成功

从节点插入数据导致不一致

问题:
从节点插入数据 insert into test1.t1 values(1);
主节点未同步。但是主从未失效,从节点I/O、SQL线程仍为YES,而且主节点创建数据,从节点仍能同步
但是主节点再次插入数据insert into test1.t1 values(1);
出现下面报错:
从节点查看show slave status\G
image.png
image.png

  1. # 先停止同步
  2. mysql> stop slave;
  3. Query OK, 0 rows affected (0.01 sec)
  4. # 跳过一个事务,
  5. mysql> set global sql_slave_skip_counter=1;
  6. Query OK, 0 rows affected (0.00 sec)
  7. # 重新开启同步
  8. mysql> start slave;
  9. Query OK, 0 rows affected (0.00 sec)
  10. # 再次查看同步状态
  11. mysql> show slave status\G

image.png
总结:
由于master节点添加的数据,从节点已经存在,导致从节点执行同样的sql语句时报错,从而出现sql线程错误;
但是主从的数据是一致的;
所以只需要从节点执行以上操作即可;

以上方案是临时解决方案:
以下是永久解决方案:

修改从节点mysql的配置文件

  1. [root@mysql-slave ~]# vim /etc/my.cnf

image.png

  1. [root@mysql-slave ~]# systemctl restart mysqld
  2. [root@mysql-slave ~]# mysql -uroot -p'Qf@12345!'
  3. mysql> show slave status\G

image.png