随笔分类 -  MySQL Replication

摘要:基础信息 MySQL提供参数slave_exec_mode来控制主从复制中遇到的数据冲突和错误,有严格模式(STRICT)和冥等模式(IDEMPOTENT)两种选项,默认为严格模式。 在严格模式下,MySQL会严格检查每次需要APPLY的BINLOG和当前节点数据是否匹配,并在下列场景中抛出错误并停 阅读全文
posted @ 2023-03-14 15:39 TeyGao 阅读(62) 评论(0) 推荐(0) 编辑
摘要:问题场景 MySQL版本:5.7.26-29-log Percona Server (GPL) 操作系统版本:CentOS Linux release 7.6.1810 (Core) BINLOG产生速度: 问题描述 配置半同步的集群频繁报警,提示集群主节点状态rpl_semi_sync_maste 阅读全文
posted @ 2023-02-13 10:59 TeyGao 阅读(200) 评论(0) 推荐(0) 编辑
摘要:无损半同步复制基础 不管是无损半同步(lossless semi-sync replication)还是增强半同步,说的都是AFTER_SYNC模式的半同步复制,针对参数rpl-semi-sync-master-wait-point,官方文档如是说: This variable controls t 阅读全文
posted @ 2022-08-28 16:57 TeyGao 阅读(410) 评论(0) 推荐(1) 编辑
摘要:官方参数解释 binlog_transaction_dependency_tracking specifies the source of dependency information that the source records in the binary log to help replica 阅读全文
posted @ 2021-04-11 13:36 TeyGao 阅读(2092) 评论(0) 推荐(0) 编辑
摘要:WRITESET_SESSION特殊点 /* This object encapsulates the state kept between transactions of the same client in order to compute logical timestamps based on 阅读全文
posted @ 2021-04-11 13:15 TeyGao 阅读(426) 评论(0) 推荐(0) 编辑
摘要:基础知识 基于 COMMIT_ORDER 的并行复制只有在有压力的情况下才可能会形成一组,压力不大的情况下在从库的并行度并不会高。但是基于 WRITESET 的并行复制目标就是在ORDER_COMMIT 的基础上再尽可能的降低 last commit ,这样在从库获得更好的并行度(即便在主库串行执行 阅读全文
posted @ 2021-04-11 13:10 TeyGao 阅读(195) 评论(0) 推荐(0) 编辑
摘要:MySQL复制延迟排查思路: 阅读全文
posted @ 2020-01-19 11:13 TeyGao 阅读(300) 评论(0) 推荐(0) 编辑
摘要:BINLOG中的TABLE_ID 在ROW格式的二进制中,事件信息中没有列的信息,需要通过Table_Map将表名对于的表信息加载到cache中,然后根据事件信息中的列下标来定位到数据列,每次表信息加载到Cache中时,会得到一个自增的ID值,即Table_ID: 在基于行的复制模式下,为什么BIN 阅读全文
posted @ 2019-07-17 21:34 TeyGao 阅读(534) 评论(0) 推荐(0) 编辑
摘要:复制工作原理(1) master将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log events);(2) slave将master的binary log events拷贝到它的中继日志(relay log);(3) slave重做中继日志中的事件,将 阅读全文
posted @ 2019-07-17 20:59 TeyGao 阅读(539) 评论(0) 推荐(0) 编辑
摘要:RELAY LOG相关参数 设置如何保存从节点接收到的主库BINLOG 设置如何保存从节点接收主库BINLOG的进度信息 设置如何保存从节点上应用RELAYLOG的进度信息 设置如何恢复RELAY LOG 如果从节点上relay_log_info_repository= file 或sync_rel 阅读全文
posted @ 2019-07-17 18:30 TeyGao 阅读(1687) 评论(0) 推荐(1) 编辑
摘要:半同步复制 默认配置下,MYSQL主从库通过binlog来保持一致,主库事务提交后,将binlog日志写入磁盘,然后返回给用户,备库通过拉取主库的binlog来同步主库的操作,无法保证主备节点数据实时一致,只能保证最终一致,因此属于异步复制。 为保证在主备切换时,主备节点数据完全一致,MYSQL提供 阅读全文
posted @ 2019-07-08 18:14 TeyGao 阅读(3805) 评论(0) 推荐(0) 编辑
摘要:事务组提交和多线程复制 在MySQL 5.7版本引入基于LOGICAL_CLOCK的多线程复制,依赖于BINLOG事件中的last_committed属性,该last_committed属性是否与事务组提交特性有关呢? 测试环境: 虽然参数binlog_group_commit_sync_no_de 阅读全文
posted @ 2019-07-08 17:00 TeyGao 阅读(629) 评论(0) 推荐(0) 编辑
摘要:多线程复制 多线程复制MTS(Mult-Threaded Slave Applier)指使用多个线程来并发应用二进制日志。在MYSQL5.6版本中,多线程复制基于schema来实现,将多个数据库下的事务按照数据库拆分到多个线程上执行,保证数据库级别的事务一致性。在MYSQL5.7版本后,多线程复制基 阅读全文
posted @ 2019-07-08 15:40 TeyGao 阅读(1837) 评论(0) 推荐(0) 编辑
摘要:复制延迟(Seconds_Behind_Master)测试 测试环境: MySQL 5.7.19 测试主从时间差: 在主库上执行(使用基于语句格式复制): 主库上上执行效果: 主库上生成的binlog解析结果: 从库上relay log解析结果: 从库上生成binlog解析结果(从库上默认binlo 阅读全文
posted @ 2019-06-24 19:31 TeyGao 阅读(635) 评论(0) 推荐(0) 编辑
摘要:本人完全不懂MySQL源码,以下文字纯属瞎猜,如有误导,概不负责!、 源码版本:MySQL 5.6.28 在sql/rpl_slave.cc文件中,time_diff的计算代码为: 1、当SQL线程停止时,返回NULL 2、当SLAVE正常运行时,如果SQL线程执行的位置是relay log的最后位 阅读全文
posted @ 2019-06-24 11:47 TeyGao 阅读(417) 评论(0) 推荐(0) 编辑
摘要:双主架构图 双主架构实现原理当从库IO线程接受到主库传递来的二进制日志(Binlog)并将之保存为从库的中继日志(relay log),然后从库SQL线程将中继日志(relay log)的事件重做到从库上,实现主从数据同步。如果SQL线程发现该事件的server_id与当前从库的server_id相 阅读全文
posted @ 2019-05-27 16:14 TeyGao 阅读(7056) 评论(0) 推荐(0) 编辑
摘要:错误环境: OS: CentOS release 6.5 (Final) MySQL: MySQL 5.7.19 主从参数配置: 错误描述: 从库SQL进程异常停止(从库在此前刚因内存异常重启),报错内容为: 出库执行位点: 按照位点信息去主库上解析binlog 输出内容为: 网上关于错误“Row 阅读全文
posted @ 2019-05-18 15:16 TeyGao 阅读(2140) 评论(0) 推荐(0) 编辑
摘要:问题描述 由于运维失误,从库未及时设置read_only,导致从库上某库数据被修改,由于整个实例数据量较大,重做成本较高,而该数据库数据较少,因此考虑如何修复该数据库的数据。 操作前提 1、复制使用位点同步,未使用MASTER_AUTO_POSITION=1选项 2、程序对数据库操作不存在跨库事务, 阅读全文
posted @ 2019-05-05 19:52 TeyGao 阅读(189) 评论(0) 推荐(0) 编辑
摘要:参数定义gtid_executed,全局参数,GTID集合包含所有在该服务器上执行过的事务编号和使用set gtid_purged语句设置过的事务编号,使用SHOW MASTER STATUS和SHOW SLAVE STATUS命令得到的Executed_Gtid_Set列值就取自于全局参数gitd 阅读全文
posted @ 2019-04-10 16:08 TeyGao 阅读(2792) 评论(0) 推荐(0) 编辑
摘要:SHOW PROCESSLIST方式 为保证二进制日志在从库的执行时间和顺序的正确性,二进制日志中的每个语句都设置了时间戳,因此如果主库上的语句正不断执行,那么可以根据最后一条执行语句时间戳和当前备库时间进行对比,可以估算出出复制延迟的时间。 使用SHOW PROCESSLIST可以看出从库上最后一 阅读全文
posted @ 2019-03-31 22:46 TeyGao 阅读(468) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示