数据库多源复制同步错误修复
admin
2023-05-06 15:21:52
0

报错是这样的:

发现有一个数据库报错了。报错如下。

Coordinator stopped because there were error(s) in the worker(s). The most recent failure being: Worker 1 failed executing transaction 'ANONYMOUS' at master log mysql-bin.000029, end_log_pos 6389312. See error log and/or performance_schema.replication_applier_status_by_worker table for more details about this failure or others, if any.

解决方法:
进入从服务器,mysql

1.查看从库状态
mysql> show slave status;

2.按照从库的提示查找原因。
select * from performance_schema.replication_applier_status_by_worker\G

是说主库某个表删除时,从库却找不到删除的记录。

既然,两个表的此记录都已经删除了。就可以略过这个错误。
解决办法。
停止同步,略过1步,再开启同步。
stop slave for channel 'channelname';
set global sql_slave_skip_counter=1;
start slave for channel 'channelname';

网上对类似问题有修复的方法。相关的几篇文章大家看看。
http://blog.csdn.net/u011277123/article/details/53487831
http://www.bcty365.com/content-35-5816-1.html

https://www.jb51.net/article/109107.htm

http://www.cnblogs.com/zhoujinyi/p/5704567.html

http://www.bubuko.com/infodetail-2472122.html

MySQL5.7多源复制(Multi-Source Replication)

如果数据量小,才采用下面的方法。但数据量大,不宜,因为整个同步一次,要花许多时间。

3.先停止主从同步。

mysql> stop slave;

4.用navicate工具把数据库同步。
navicate的菜单栏,工具->数据同步。
先 结构同步,再 数据同步。

然后,同步完后,到主库。用命令。
mysql>SHOW MASTER STATUS;

因为我这里做的是多源复制。所以把两个数据库同步后,先后记录下来。
得到:
'mysql-bin.000029', '20698487',
'mysql-bin.000042', '84950954',

5.清空原来的同步设置
mysql>reset slave all;

6.再设置同步。
下面的ip地址,username,password,是举例的。大家按自己的来。

change master to master_host='192.168.0.1',master_user='username1',master_port=3306,master_password='password1',master_log_file='mysql-bin.000029',master_log_pos=20698487 for channel 'databasename1';

change master to
master_host='192.168.0.2',master_user='username2',master_port=3306,master_password='password2',master_log_file='mysql-bin.000042',master_log_pos=84950954 for channel 'databasename2';

7.启动同步
mysql> start slave;

8.查看同步状态
mysql> show slave status;

同步恢复正常了。

补充:可以单独
START SLAVE; //启动所有线程所有通道的复制,常用
START SLAVE SQL_THREAD; //启动所有通道的SQL_THREAD线程
START SLAVE IO_THREAD; //启动所有通道的IO_THREAD线程

START SLAVE FOR CHANNEL 'master_3306';
START SLAVE SQL_THREAD FOR CHANNEL 'master_3306';
START SLAVE IO_THREAD FOR CHANNEL 'master_3306';

停止复制命令也START类似,把START换成STOP;

重置可以选择重置所有和重置单一通道:

RESET SLAVE;
RESET SLAVE FOR CHANNEL CHANNELNAME;

对于多源复制的几点说明:

  1. 使用多源复制要避免源库是有同名 的库,这样在复制时会发生错误

  2. 对于mysql库,建议使用REPLICATE_IGNORE_DB将其屏蔽掉,在MySQL5.7里,已经支持动态对这些参数的操作

CHANGE REPLICATION FILTER REPLICATE_IGNORE_DB = (mysql);

在主库上对mysql库进行操作时,需要加use mysql,否则不会进行过滤

  1. 对于REPLICATE_DO_DB也一样,在操作时需要use db,否则不会进行同步

  2. 对于主从复制中出错,不管是基于binlog_position还是GTID,和普通一对一复制解决思路一样,只是在启动复制的时候单独启动这一通道,等这一通道复制没问题后,再启动其它通道。例master_3307出错,本例是基于binlog_position:

STOP SLAVE;

SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;

START SLAVE FOR CHANNEL 'master_3307';

相关内容

热门资讯

伊朗外长:科威特“非法”攻击伊... △伊朗外长阿拉格齐(资料图)当地时间13日晚,伊朗外长阿拉格齐对外表示,科威特“非法”攻击了一艘伊朗...
欧盟召开紧急会议,协调应对汉坦... 当地时间13日,欧盟各成员国常驻欧盟代表在布鲁塞尔举行紧急会议,重点讨论在汉坦病毒疫情背景下加强跨境...
菲律宾总统称未下达逮捕德拉罗萨... 新华社马尼拉5月13日电(记者赵晨捷 李萌)据菲律宾媒体报道,菲总统马科斯13日称未下达逮捕参议员德...
时隔九年再度来京,特朗普有何诉... ◆5月12日,特朗普登上“空军一号”前对着镜头挥手告别。(图源:美联社)文/何平编辑/漆菲5月13日...
硬科技管控,中美关系的新压舱石 特朗普此次访华,英伟达CEO黄仁勋随行的消息提振美股市场,凸显芯片与人工智能已成为中美关系的核心议题...
报告:今年一季度AI原生APP... 中国青年网北京5月12日电(记者 高蕾)近日,第三方智能数据服务商QuestMobile发布了《中国...
七大新品发布!国轩高科第15届... 央广网合肥5月13日消息(记者徐鹏)5月16日至17日,电池龙头企业国轩高科将在合肥举办第15届全球...
百度伐谋2.0发布,李彦宏:能... 5月13日举办的Create2026百度AI开发者大会开幕式上,自我演化决策智能体百度伐谋升级至2....
泰顶级豪门曝性侵丑闻!哥哥侵犯... 泰国最有影响力的巨头之一Singha集团(胜狮集团),这两天爆出性侵丑闻。集团第四代成员,环保活动家...
什么信号?多地要求干部带头缴纳... 多地要求干部带头缴纳物业费。最近一段时间,物业费成了社会关注的焦点。原因竟然是多地密集出台文件,号召...