返回顶部
首页 > 资讯 > 数据库 >MySQL级联复制的同步问题(一)
  • 400
分享到

MySQL级联复制的同步问题(一)

2024-04-02 19:04:59 400人浏览 八月长安
摘要

今天碰到一个有些奇怪的问题,有一套环境,在主从复制的时候有一些问题。 大体的流程设计如下: 三个节点位于三个不同的区域,因为节点1和节点3之间的网络存在问题,所以走了节点2来中转,由此可见延迟是难免的,但

今天碰到一个有些奇怪的问题,有一套环境,在主从复制的时候有一些问题。
大体的流程设计如下:
MySQL级联复制的同步问题(一)
三个节点位于三个不同的区域,因为节点1和节点3之间的网络存在问题,所以走了节点2来中转,由此可见延迟是难免的,但是延迟不能太大。最终的数据还是要通过节点3来做统计分析查询。这套环境的数据量不大,但是数据变更貌似是比较频繁。早上开发的同事反馈,节点同步感觉延迟很大,想让我帮忙看看到底是哪里出了问题。
查看节点1,节点2没有延迟,问题就出在节点2到节点3的延迟。
在节点3中查看slave状态:
> show slave status\G
*************************** 1. row ***************************
               Slave_io_State: Waiting for master to send event
                  Master_Host:xxxx
                  Master_User: repl
                  Master_Port: 3307
                Connect_Retry: 10
              Master_Log_File: Mysql-bin.000009
          Read_Master_Log_Pos: 16186388
               Relay_Log_File: relay-bin.000004
                Relay_Log_Pos: 13599457
        Relay_Master_Log_File: mysql-bin.000009
             Slave_IO_Running: Yes
            Slave_sql_Running: No
              Replicate_Do_DB:
          Replicate_Ignore_DB:
...
                   Last_Errno: 1032
                   Last_Error: Could not execute Delete_rows event on table test_mbi.test_dist_online; Can't find record in 'test_dist_o
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 13599294
              Relay_Log_Space: 16304336
              Until_Condition: None
...
        Seconds_Behind_Master: NULL
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0
                Last_IO_Error:
               Last_SQL_Errno: 1032
               Last_SQL_Error: Could not execute Delete_rows event on table test_mbi.test_dist_online; Can't find record in 'test_dist_o
  Replicate_Ignore_Server_Ids:
             Master_Server_Id: 23307
                  Master_UUID: 189a00c4-16a3-11e6-a678-06c76b65c01e
             Master_Info_File: mysql.slave_master_info
                    SQL_Delay: 0
          SQL_Remaining_Delay: NULL
      Slave_SQL_Running_State:
           Master_Retry_Count: 86400
1 row in set (0.00 sec)
发现在日志应用中出现了1032的错误,即删除的数据在从库中找不到。一般来看这类问题,感觉好像说小也小,那skip一下吧,发现这个不是权宜之计,因为skip了这个问题之后接着又碰到了同样的问题,所以反反复复修改skip本身就是一件隔靴挠痒的事情,而且实际上数据已经不一致了。
因为需求紧迫,时间又比较紧张,数据的延迟较大,所以简单评估之后发现还是重建从库。
当然这个步骤就很常规了。我也简单列举一下:
因为是多实例的场景,所以使用了如下的命令来导出:
 /opt/mysql/bin/mysqldump -S /data2/bmbidb/mysql.sock --single-transaction --master-data=2  -B  test_ad test_mbi test_sys_mgr  |gzip > test.sql.gz
然后在各种网络层面周旋,总算是把这个dump从节点2拷贝到了从库环境节点3
然后在节点3停止slave,开始导入数据:
gunzip < test.sql.gz | /opt/mysql/bin/mysql  --Socket=/home/bmbidb/mysql.sock --port=3307
start slave
接着开始change master,当然这个时候对于MASTER_LOG_FILE,MASTER_LOG_POS可以通过dump来得到这些信息
 gunzip < tes.sql.gz | head -50
会发现下面这么一段内容:
-- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000008', MASTER_LOG_POS=241903809;
这就是需要我们关注的地方,然后直接使用即可。
 CHANGE MASTER TO MASTER_HOST='xxxx',MASTER_USER='repl',MASTER_PASSWord='xxxx',MASTER_PORT=3307,MASTER_LOG_FILE='mysql-bin.000008', MASTER_LOG_POS=241903809,MASTER_CONNECT_RETRY=10;
这样从库的设置就完成了。    
然后在下午的晚些时间又碰到了类似的问题,这可让我很纠结了,不可能一出现这种情况我就重建从库吧。
排除了很多潜在的原因,包括sync_binlog,表结构差异,节点中的数据库权限,表的存储引擎等。貌似还是没有找到要领。
通过mysqlbinlog去解析relay日志,依旧是无功而返。
/opt/mysql/bin/mysqlbinlog  -vv relaylog.05     --base64-output decode-rows > relay05.tmp
所以这个问题还是很让人纠结的。
在同事的协助下,暂时使用了一个临时方案先来过渡。对于这类的DML操作如果数据不存在,可以选择忽略,即设置slave_exec_mode为IDEMPOTENT,而默认职位STRICT
> set global slave_exec_mode='IDEMPOTENT';
Query OK, 0 rows affected (0.00 sec)
> stop slave;set global sql_slave_skip_counter=1;start slave;
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
修改完成后,这类问题暂时告一段落,还需要找到根本的原因。这种情况下比对了部分的数据,没有发现其他的数据冲突,但是解决方案也需要一个合理的解释。我们下一篇来继续聊聊这个,应该会有一个答复。



您可能感兴趣的文档:

--结束END--

本文标题: MySQL级联复制的同步问题(一)

本文链接: https://lsjlt.com/news/47528.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • MySQL级联复制的同步问题(一)
    今天碰到一个有些奇怪的问题,有一套环境,在主从复制的时候有一些问题。 大体的流程设计如下: 三个节点位于三个不同的区域,因为节点1和节点3之间的网络存在问题,所以走了节点2来中转,由此可见延迟是难免的,但...
    99+
    2024-04-02
  • 排查mysql半同步复制问题详细步骤
    本文主要给大家简单讲讲排查mysql半同步复制问题详细步骤,相关专业术语大家可以上网查查或者找一些相关书籍补充一下,这里就不涉猎了,我们就直奔主题吧,希望排查mysql半同步复制问题详细步骤这篇文章可以给大...
    99+
    2024-04-02
  • Mysql异步复制、同步复制、半同步复制的区别
    这篇文章主要介绍“Mysql异步复制、同步复制、半同步复制的区别”,在日常操作中,相信很多人在Mysql异步复制、同步复制、半同步复制的区别问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望...
    99+
    2024-04-02
  • MYSQL完全备份、主从复制、级联复制、半同步的知识点总结
    本篇内容介绍了“MYSQL完全备份、主从复制、级联复制、半同步的知识点总结”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,...
    99+
    2024-04-02
  • mysql5.7.19的半同步复制问题分享
    ===异步复制(Asynchronous replication)MySQL默认的复制即是异步的,主库在执行完客户端提交的事务后会立即将结果返给给客户端,并不关心从库是否已经接收并处理,这样就会有一个问题,...
    99+
    2024-04-02
  • MySQL的半同步复制
    MySQL5.5 除了支持内置的异步复制机制,还提供了接口支持半同步复制的机制。 异步复制的缺点: MySQL复制默认是异步复制,Master将事件写入binlog,但并不知道Slave是否...
    99+
    2024-04-02
  • mysql主备复制I/O线程不能同步问题
    问题,做完mysql准备复制,为什么备机的I/O线程不能同步? 查看错误日志文件错误原因:由于主机和备机的UUID一致解决方法:修改UUID保证主备机不一致(即修改配置文件/var/lib/mysql/au...
    99+
    2024-04-02
  • mysql 半同步复制
    一.半同步复制 半同步复制特点 1. 与传统的异步复制相比,半同步复制在多个Slave节点中会选取一个节点进行半同步复制。也就是说,当Master提交一个事务的时候,在这个半同步复制的Slave端返回一...
    99+
    2024-04-02
  • 【MySQL】半同步与增强半同步复制
    首先要明白事务提交的三个阶段,这里不再赘述。     半同步复制:主上已经提交了,但是日志还没来得及传到备库,这时候宕机了,在半同步看来,主库其...
    99+
    2024-04-02
  • MySQL复制(二):半同步复制(Semisynchronous replicaiton)
    目录 一、半同步复制介绍 二、搭建半同步复制 2.1 安装半同步插件 2.2 启用半同步复制 三、配置半同步复制 四、监控半同步复制 一、半同步复制介绍 MySQL基础复制有三种模式:异步复制/同步复制/半同步复制,3种模式各有利弊,下...
    99+
    2023-09-20
    mysql 数据库 sql
  • SQL级别数据同步与复制
    SQL级别数据同步与复制是一种将数据库中的数据复制到另一个数据库中以保持数据一致性的方法。通过SQL级别的数据同步和复制,可以确保数据在不同的数据库之间的一致性,并且可以在多个数据库之间实现数据的备份和恢复。 SQL级别的数据同步和复制通常...
    99+
    2024-08-04
    sql
  • 配置mysql数据库级联同步具体步骤
    下面讲讲关于配置mysql数据库级联同步具体步骤,文字的奥妙在于贴近主题相关。所以,闲话就不谈了,我们直接看下文吧,相信看完配置mysql数据库级联同步具体步骤这篇文章你一定会有所受益。mysql数据库级联...
    99+
    2024-04-02
  • MySQL主从半同步复制
    目录一、半同步复制1.半同步复制概念2.配置半同步1)主库操作2)从库操作3)额外参数 一、半同步复制 1.半同步复制概念 从MYSQL5.5开始,支持半自动复制。之前版本的MySQL Replication都是异步(asynchronou...
    99+
    2022-01-18
    MySQL主从半同步复制 数据库入门 数据库基础教程 数据库 mysql
  • redis主从复制同步数据死循环问题
    redis主从复制同步数据死循环问题发现现象:最近有问必答codis一个从库端口6504一直时不时,主从延时和从库连接不上的报警,开始怀疑是redis备份导致,没有深入去找原因,后面发现白天也在报警,故深入...
    99+
    2024-04-02
  • MySQL入门--MySQL复制技术之主从从级联复制
    MySQL复制技术之主从从级联复制 主数据库:192.168.12.181 上的mysqld1 中继slave:192.168.12.182上的mysqld1 级联slave:192....
    99+
    2024-04-02
  • mysql同步复制和异步复制有什么区别
    这篇文章主要介绍mysql同步复制和异步复制有什么区别,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!区别:异步复制是Master将事件写入binlog,提交事务,自身并不知道slav...
    99+
    2024-04-02
  • MySQL异步复制和半同步复制怎么实现
    这篇文章主要介绍“MySQL异步复制和半同步复制怎么实现”,在日常操作中,相信很多人在MySQL异步复制和半同步复制怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”My...
    99+
    2024-04-02
  • mysql多主双向和级联复制
    目录一.解读二.web设计三.mysql设计四、实操1.mysql架构图(草稿)2.配置前言: 公司项目需求,要做一个内网用的物品管理的web系统,其中一个要求是要每个单位的本地PC...
    99+
    2024-04-02
  • Mysql主从三种复制模式(异步复制,半同步复制,组复制)
    目录mysql异步复制半同步复制组复制MGR的解决方案现在具备的特性MGR的解决方案目前的影响MySQL异步复制 MySQL异步复制是主从复制过程中默认的复制模式。主从复制涉及三个线程,master I/O线程、slav...
    99+
    2022-08-10
    Mysql主从复制模式 Mysql异步复制 Mysql半同步复制 Mysql组复制
  • 实现mysql级联复制的方法示例
    所谓级联复制就是master服务器,只给一台slave服务器同步数据,然后slave服务器在向后端的所有slave服务器同步数据,降低master服务器的写压力,和复制数据的网络IO。 一,配置master...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作