数据库多源复制同步错误修复

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库多源复制同步错误修复相关的知识,希望对你有一定的参考价值。

报错是这样的:

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

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

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

网上对类似问题有修复的方法。
http://www.bcty365.com/content-35-5816-1.html

因一下没看明白。(后续实践,再补充)

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;

同步恢复正常了。

以上是关于数据库多源复制同步错误修复的主要内容,如果未能解决你的问题,请参考以下文章

mysql数据库多源复制方案

mysql多源复制(多主一从)配置

mysql多源复制(多主一从)配置

MySQL双主双从 + 多源复制配置

mariadb多源主从复制错误跳过.md

mysql 5.7多源复制(用于生产库多主库合并到一个查询从库)