mysql gitd 数据结构同步失败_mysql 5.7 gtid主从同步错误修复

错误发生的原因是我们在从库上插入了一条数据,又马上在主库上插入相同的数据,这样就造成主从不同步了.

系统:centos 7.x(64位)

软件版本:mysql 5.7(64位)

以下错误都是事后找的:

第一个错误:

2018-03-21T08:39:48.606372Z 8 [ERROR] Slave SQL for channel '': Worker 0 failed executing transaction 'c4e174e2-1368-11e7-8120-00163e12b9a9:401338043' at master log master-bin.001906, end_log_pos 287308541; Could not execute Write_rows event on table qx_lottery_g2.lot_audit_log; Duplicate entry '1074' for key 'PRIMARY', Error_code: 1062; handler error HA_ERR_FOUND_DUPP_KEY; the event's master log master-bin.001906, end_log_pos 287308541, Error_code: 1062

解决办法:

1.查看表结构:

[root@localhost][(none)]> desc qx_lottery_g2.lot_audit_log;

+-------------------+--------------+------+-----+---------+-------+

| Field | Type | Null | Key | Default | Extra |

+-------------------+--------------+------+-----+---------+-------+

| _id | bigint(20) | NO | PRI | NULL | |

| _company_id | bigint(20) | YES | | NULL | |

| _open_id | varchar(255) | YES | | NULL | |

| _name | varchar(255) | YES | | NULL | |

| _apply_open_id | varchar(255) | YES | | NULL | |

| _apply_name | varchar(255) | YES | | NULL | |

| _apply_wx_img | varchar(255) | YES | | NULL | |

| _telephone | varchar(255) | YES | | NULL | |

| _store_id | bigint(20) | YES | | NULL | |

| _street_name | varchar(255) | YES | | NULL | |

| _area_name | varchar(255) | YES | | NULL | |

| _store_name | varchar(255) | YES | | NULL | |

| _status | int(11) | YES | | NULL | |

| _create_time | bigint(20) | YES | | NULL | |

| _product_id | bigint(20) | YES | | NULL | |

| _apply_product_id | bigint(20) | YES | | NULL | |

| _member_id | bigint(20) | YES | | NULL | |

| _apply_member_id | bigint(20) | YES | | NULL | |

| _apply_wx_name | varchar(100) | YES | | NULL | |

+-------------------+--------------+------+-----+---------+-------+

19 rows in set (0.00 sec)

19 rows in set (0.00 sec)

2.删除重复的主键

[root@localhost][qx_lottery_g2]>stop slave;

[root@localhost][qx_lottery_g2]>delete from lot_audit_log where _id=1074;

[root@localhost][qx_lottery_g2]>start slave;

第二个错误:

Last_Error: Coordinator stopped because there were error(s) in the worker(s). The most recent failure being: Worker 1 failed executing transaction 'c4e174e2-1368-11e7-8120-00163e12b9a9:401340325' at master log master-bin.001906, end_log_pos 295832505. See error log and/or performance_schema.replication_applier_status_by_worker table for more details about this failure or others, if any.

解决办法:

stop slave;

Set @@SESSION.GTID_NEXT='c4e174e2-1368-11e7-8120-00163e12b9a9:401340325';

Begin;

Commit;

Set @@SESSION.GTID_NEXT = AUTOMATIC;

start slave;

show slave status\G

看是否还有错误,如果还报错误的话,再执行,我们这里就报错了:

Last_Error: Coordinator stopped because there were error(s) in the worker(s). The most recent failure being: Worker 1 failed executing transaction 'c4e174e2-1368-11e7-8120-00163e12b9a9:401341631' at master log master-bin.001906, end_log_pos 295832505. See error log and/or performance_schema.replication_applier_status_by_worker table for more details about this failure or others, if any.

再执行了一次:

stop slave;

Set @@SESSION.GTID_NEXT='c4e174e2-1368-11e7-8120-00163e12b9a9:401341631';

Begin;

Commit;

Set @@SESSION.GTID_NEXT = AUTOMATIC;

start slave;

show slave status\G

这次就没有报错了,mysql主从正常同步了.

ps:

如果你想实时查看mysql主从同步状态,可以用shell脚本监控mysql主从同步状态这个脚本.

夜空- 本站版权

1、本站所有主题由该文章作者发表,该文章作者与夜空享有文章相关版权

2、其他单位或个人使用、转载或引用本文时必须同时征得该文章作者和夜空的同意

3、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责

4、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意

5、原文链接:blog.slogra.com/post-720.html

post-720.html

MySQL 5.7引入了GTID(Global Transaction Identifier)特性,这对于高可用性和故障恢复非常重要。GTID提供了一种跟踪跨多个数据库实例的事务的方式,使得主从复制更为可靠。下面是安装和配置MySQL 5.7 GTID主从的一般步骤: 1. **安装MySQL 5.7**: - 下载MySQL 5.7的二进制包,可以从MySQL官网下载适用于你操作系统的版本。 - 按照官方文档的指示进行安装,确保在安装过程中选择“GTID”作为复制模式。 2. **初始化主服务器**: - 配置my.cnf文件,开启GTID相关选项,例如设置`gtid_mode=ON` 和 `enforce_gtid_consistency=ON`。 - 启动MySQL服务并创建一个包含GTID的初始数据库实例。 3. **启用二进制日志**: - 在my.cnf中配置`log_bin`和`expire_logs_days`以管理二进制日志,这对主从复制至关重要。 4. **配置主从复制**: - 创建复制用户并分配合适的权限,如`REPLICATION SLAVE`。 - 在主服务器上执行`CHANGE MASTER TO`命令来指定从服务器的信息,包括GTID的位置(例如,`MASTER_GTID_FILE`和`MASTER_BINLOG_POS`)。 5. **启动从服务器**: - 使用相同的GTID配置启动从服务器。 - 运行`START SLAVE`命令,让从服务器开始同步数据。 6. **监控和调试**: - 定期检查`SHOW MASTER STATUS`和`SHOW SLAVE STATUS\G`来确保复制状态正常。 - 如果遇到问题,查看错误日志和使用`mysqlbinlog`工具分析事务历史。 **相关问题--:** 1. GTID是什么,它如何提高复制的可靠性? 2. 在配置主从复制时,如何正确设置`CHANGE MASTER TO`命令? 3. 有哪些常见的GTID复制问题及解决方法?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值