我的编程空间,编程开发者的网络收藏夹
学习永远不晚

MySQL主从不一致的问题分析

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

MySQL主从不一致的问题分析

这篇文章主要讲解了“MySQL主从不一致的问题分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“MySQL主从不一致的问题分析”吧!

   今天和同事一起看了一个问题,她在一个主从环境中发现了数据不一致,存在主键冲突。

    show slave status的报错信息大概是下面的样子。

Last_Error: Coordinator stopped because there were error(s) in the worker(s). The most recent failure being: Worker 0 failed executing transaction '0e454161-3169-11e7-98f6-02004d9d000a:665' at master log mysql-bin.000001, end_log_pos 274391. See error log and/or performance_schema.replication_applier_status_by_worker table for more details about this failure or others, if any.      这是一个MySQL 5.7版本的主从环境,还没有投入线上业务使用,是在搭建的过程中碰到了这类问题。

    一般来说,如果主从数据不一致,可以使用pt工具来尝试检查和修复。而这个问题是在搭建主从的时候出现,主从搭建貌似也没有太多的技巧,开启GTID,完全够用了,听起来确实有些奇怪。

    同事在使用pt工具修复失败之后,准备重建,但是重建的过程也很曲折,slave总是会有主键数据的冲突。我们检查了主库端,数据是没有冲突的,难道这又是bug,我觉得细细看看。

     我拿到环境,准备向从搭建从库突破,因为数据量不大,所以我重新导入了一次数据,是使用最简单的重定向方式来导入。

# mysql -pxxxxx < db-dump-201705121718.sql
Logging to file '/home/mysql/query.log'
mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 1840 (HY000) at line 24: @@GLOBAL.GTID_PURGED can only be set when @@GLOBAL.GTID_EXECUTED is empty.  但是我运行之后发现,导入的时候报错了,在导出的时候其实可以加一个选项,这样就不会有这类干扰了。

  因为是重新搭建从库,所以我使用了reset master的方式,

> reset master;
Query OK, 0 rows affected (0.01 sec)  再次导入就没有问题了。

  接下来就是change master的设置.

CHANGE MASTER TO       MASTER_HOST='xxxx',        MASTER_USER='rep_user',        MASTER_PASSWORD='xxxx',        MASTER_PORT=3306,        MASTER_AUTO_POSITION = 1;
  启动slave后发现同事碰到的错误没有了。

  对于这个问题,我们进行了沟通,同事导入的时候使用source的方式导入,说没有看到错误,我们对比了一下搭建方法,也就这个地方不同了。

   带着试试看的态度,我使用source的方式搭建了一次。

>source db-dump-201705121718.sql   看到后台输出了很多的日志,总体来看是没有什么异常的地方。然后重启slave错误可以重现了。所以通过这个过程可以基本断定和bug无关。

  这个时候我们的关注点逐步缩小,经过论证,就是这个地方的问题,我们来通过几个小测试来说明。

  我写了几行SQL,文件a.sql包含创建表,插入两行数据的操作。

# cat a.sql
create table test(id int);
insert into test values('aaa');
insert into test values(100);使用mysql test < a.sql 还是source的方式都没有任何报错。

运行后表test的数据为:

> select *from test;
+------+
| id   |
+------+
|    0 |
|  100 |
+------+这一点确实让我有些意外。当然问题的重点不在这里,我们继续改一下脚本。

# cat a.sql
create table test(id int);
insert into test values('aaa','aa');
insert into test values(100);这个时候差别就很明显了。

# mysql test < a.sql
Logging to file '/home/mysql/query.log'
ERROR 1136 (21S01) at line 2: Column count doesn't match value count at row 1查看数据情况,是没有数据插入的。

> select *from test;
Empty set (0.00 sec) 而使用source的方式,日志如下:

> source a.sql
Query OK, 0 rows affected (0.01 sec)
ERROR 1136 (21S01): Column count doesn't match value count at row 1
Query OK, 1 row affected (0.01 sec)查看数据,是有1行数据的。

所以很大的一个差别就在于此,使用重定向的方式,如果有错误会直接退出,而使用source会依次执行,错误的地方跳过,继续执行下面的步骤。这样一个细小的地方可谓是细思恐极。对于我们做数据变更类的操作而言,是尤其重要的。

感谢各位的阅读,以上就是“MySQL主从不一致的问题分析”的内容了,经过本文的学习后,相信大家对MySQL主从不一致的问题分析这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

MySQL主从不一致的问题分析

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

redis主从数据不一致问题如何解决

使用Redis的复制(Replication)功能来保证数据一致性。可以将主节点写入的数据同步到从节点,确保从节点的数据与主节点保持一致。定期检查主从节点的同步状态,及时发现数据不一致的情况并进行修复。在数据不一致的情况下,可以通过重新同步
redis主从数据不一致问题如何解决
2024-04-09

redis 数据库主从不一致问题解决方案

在聊数据库与缓存一致性问题之前,先聊聊数据库主库与从库的一致性问题。 问:常见的数据库集群架构如何?答:一主多从,主从同步,读写分离。如上图:(1)一个主库提供写服务(2)多个从库提供读服务,可以增加从库提升读性能(3)主从之间同步数据画外音:任何方案不要忘了
redis 数据库主从不一致问题解决方案
2020-05-07

MySQL主从数据不一致怎么解决

MySQL主从数据不一致的解决方法可以分为以下几个步骤:检查主从同步状态:可以通过查看主从服务器的状态信息来确认同步是否正常。可以使用SHOW SLAVE STATUS命令来查看从服务器的状态信息,包括主从同步是否正常、延迟情况等。检查主从
2023-10-27

mysql怎么解决主从数据不一致

解决 mysql 主从数据不一致问题的方法包括:检查并修复二进制和中继日志;重置从服务器;克隆数据;使用 mysql replication fix 库;保证版本一致、检查网络连接、避免大规模数据修改、定期监控复制进程。MySQL 主从数据
mysql怎么解决主从数据不一致
2024-05-30

编程热搜

目录