背景
主库有大量数据更新100W+,导致从库(sql_thread失败)Last_SQL_Errno: 1755
写在前面
原文链接https://www.cnblogs.com/ajiangg/p/9399892.html
link
环境介绍
GTID复制,主库5.6.51(基于database的复制),从库5.7.32(基于并行复制LOGICAL_CLOCK)
不推荐主从版本不一致的架构
问题复现
对应少了数据更新,主从同步正常。大数据量变更之后,从库报错Last_SQL_Errno: 1755
报错内容:
Last_SQL_Errno: 1755
Last_SQL_Error: Cannot execute the current event group in the parallel mode. Encountered event Gtid, relay-log name ./oracle-relay-bin.000093, position 152912092 which prevents execution of this event group in parallel mode. Reason: The master event is logically timestamped incorrectly..
从库配置:
show variables like '%para%';
+------------------------+---------------+
| Variable_name | Value |
+------------------------+---------------+
| slave_parallel_type | LOGICAL_CLOCK |
| slave_parallel_workers | 8 |
+------------------------+---------------+
再检查主库配置:
show variables like '%para%';
+------------------------+-------+
| Variable_name | Value |
+------------------------+-------+
| slave_parallel_workers | 5 |
+------------------------+-------+
发现主库根本就没有slave_parallel_type这项配置。想起来主库是mysql5.6了。
select version();
+------------+
| version() |
+------------+
| 5.6.51-log |
+------------+
问题原因
主库5.6只支持基于DATABASE的并行复制,而5.7的从库配置成LOGICAL_CLOCK导致了异常。
解决方案
把从库的slave_parallel_type改为DATABASE,再重启sql_thread
从库:
set global slave_parallel_type='DATABASE';
show global variables like '%slave_parallel_type%';
+---------------------+----------+
| Variable_name | Value |
+---------------------+----------+
| slave_parallel_type | DATABASE |
+---------------------+----------+
stop slave sql_thread;
start slave sql_thread;
show slave status\G
之后会把主库从5.6升级到5.7,然后改为并行复制。
本文说明,主要技术内容来自互联网技术大佬的分享,还有一些自我的加工(仅仅起到注释说明的作用)。如有相关疑问,请留言,将确认之后,执行侵权必删