logical_clock 并发复制mysql5.7解决复制延迟问题

slave-parallel-type=LOGICAL_CLOCK ##默认database ,logical_clock可能还存在bug,5.7.19修复主从不一致bug

     * Replication: In certain cases, the master could write to

       the binary log a last_committed value which was smaller

       than it should have been. This could cause the slave to

       execute in parallel transactions which should not have

       been, leading to inconsistencies or other errors. (Bug

#84471, Bug #25379659)

MySQL 5.7.19版本修复

slave-parallel-workers=4  # 根据并发度设置,如果不需要并发,设置为0,不要设置为1.  1的性能比0差。

以前的sql单线程变成4个线程 Waiting for an event from Coordinator

mysql> show processlist;
+----+-------------+-----------+------+---------+--------+--------------------------------------------------------+------------------+
| Id | User        | Host      | db   | Command | Time   | State                                                  | Info             |
+----+-------------+-----------+------+---------+--------+--------------------------------------------------------+------------------+
| 18 | system user |           | NULL | Connect | 606530 | Slave has read all relay log; waiting for more updates | NULL             |
| 19 | system user |           | NULL | Connect | 606593 | Waiting for an event from Coordinator                  | NULL             |
| 20 | system user |           | NULL | Connect | 838818 | Waiting for an event from Coordinator                  | NULL             |
| 21 | system user |           | NULL | Connect | 841404 | Waiting for an event from Coordinator                  | NULL             |
| 22 | system user |           | NULL | Connect | 841404 | Waiting for an event from Coordinator                  | NULL             |
| 31 | system user |           | NULL | Connect | 862799 | Waiting for master to send event                       | NULL             |
| 40 | root        | localhost | NULL | Query   |      0 | starting                                               | show processlist |
+----+-------------+-----------+------+---------+--------+--------------------------------------------------------+------------------+
7 rows in set (0.06 sec)

并不是严格要求所有同时进入Prepare阶段的事务都在备库并发执行,因此一组提交的事务中可能存在不同的seq no

可以发现较之原来的二进制日志内容多了last_committed和sequence_number,last_committed表示事务提交的时候,

上次事务提交的编号,如果事务具有相同的last_committed,表示这些事务都在一组内,可以进行并行的回放。

#170623 22:27:43 server id 45  end_log_pos 2781491 CRC32 0x1dcd41fa     GTID    last_committed=816      sequence_number=817
#170623 22:27:43 server id 45  end_log_pos 2785022 CRC32 0x2d28e1b7     GTID    last_committed=816      sequence_number=818

master_info_repository=TABLE

relay_log_info_repository=TABLE

relay_log_recovery=ON

时间: 2024-10-03 13:44:59

logical_clock 并发复制mysql5.7解决复制延迟问题的相关文章

搭建MHA环境【2】安装mysql-5.6 + mysql复制

本例中mysql的安装方式选用了二进制包安装方案.mysql复制用半同步复制方案 [1]安装mysql-5.6.31 要在所有的数据节点上都安装上mysql,安装方式大致相同,所以我这里就不重复写多次了,只以一台为例. 1.1 解压安装包到/usr/local/ tar -xzvf mysql-5.6.31-linux-glibc2.5-x86_64.tar.gz -C /usr/local 1.2 为了创建linux系统的mysql用户 useradd mysql 1.3 创建连接文件 cd

ArcGIS帮助文档VS帮助文档不能复制图片的解决方法

ArcGIS帮助文档VS帮助文档不能复制图片的解决方法(非常有用) ? 问题:ArcGIS的学习文档,开发文档,vs的帮助文档,一般都不能复制图片,有的甚至不能复制文本. ? 解决方法 在文档空白处右键,点击view source,然后保存txt文件为htm,然后再打开,用IE或者Chrome都可以 ArcGIS帮助文档VS帮助文档不能复制图片的解决方法

TimesTen 数据库复制学习:19. 解决复制冲突

本文针对的是classic复制的双向复制模式 复制冲突是如何产生的 有update冲突,insert冲突,delete/update冲突,在本节中都有示例说明.基本都是由于两个master同时操作同一条记录所致,导致从两方发出的操作交织在一起,导致不一致,如果是串行的倒也无所谓了.还需强调一点,这些冲突可以检测到,但并不会自动解决,需要应用来处理 Within a single database, update conflicts are prevented by the locking pro

GTID复制异常的解决步骤

GTID复制异常的解决方法 主从复制使用的是GTID方式. 下面这个环境,出问题的原因不提了. 下面是从库的截图: Retrieved_Gtid_Set:167b4197-09fa-11e7-993f-000c296a2c0d:1-6 Executed_Gtid_Set:167b4197-09fa-11e7-993f-000c296a2c0d:1-5, 261aafbc-0ace-11e7-9ea6-000c298f384b:1-305 第一行表示收到的事务,第二行表示已经执行完的事务.也就是说

【MySQL】MySQL5.7传统复制切换为GTID复制

赞赏支持 [MySQL]MySQL5.7传统复制切换为GTID复制 前言:最近还是在做MariaDB10.1.12升级为MySQL5.7的升级方案,其中有一个环节涉及到传统复制到GTID复制的在线切换,本文就介绍下如何是现在线切换. 一.参数解析 下面对GTID_MODE变量如下解释: 值 解释 OFF 新事务是非GTID, Slave只接受不带GTID的事务,传送来GTID的事务会报错 OFF_PERMISSIVE 新事务是非GTID, Slave即接受不带GTID的事务也接受带GTID的事务

MariaDB数据库主从复制、双主复制、半同步复制、基于SSL的安全复制实现及其功能特性介绍

一.复制概述 MariaDB/MySQL内建的复制功能是构建大型,高性能应用程序的基础.将MySQL的数据分布到多个系统上去,这种分布的机制,是通过将MySQL的某一台主机的数据复制到其它主机(slaves)上,并重新执行一遍来实现的.复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器.主服务器将更新写入二进制日志文件,并维护文件的一个索引以跟踪日志循环.这些日志可以记录发送到从服务器的更新.当一个从服务器连接主服务器时,它通知主服务器从服务器在日志中读取的最后一次成功更新的位

mysql主从复制、半同步复制、主主复制、及从库升级为主库讲解

一.主从复制结构 binlog dump --- io thread  ---  relay log ---- sql thread 1.总体讲解 主从复制时是异步的 半同步是在主从架构下安装插件来达到半同步的 半同步的优点:保证至少一个节点的数据和主节点的数据一致,缺点影响性能 导致主从不同步的原因是 现在的服务器都是单核多线程或者多核多线程,导致主节点可以同时执行多条读写操作,而记录二进制日志则必须按顺序有先后的记录,从节点在一条一条复制过去,生成中继日志,再执行语句. 多个库复制的话,可以

mariadb-10GTID复制及多源复制

---本文大纲 一.什么是GTID 二.应用场景 三.多线程复制说明 四.实现过程 五.多源复制原理 六.实现过程 ---------------------------------- 一.什么是GITD 自MySQL 5.6引入的GTID(Global Transaction IDs)使得其复制功能的配置.监控及管理变得更加易于实现,且更加健壮.官方文档在这篇文档里,我们可以知道全局事务 ID 的官方定义是:GTID = source_id:transaction_id gtid 是一个 un

详解mysql复制机制--异步复制,半同步复制和并行复制

详解MySQL复制机制--异步复制,半同步复制和并行复制 **# 异步复制 异步复制是MySQL自带的最原始的复制方式,主库和备库成功建立复制关系后,在备库上会有一个IO线程去主库拉取binlog,并将binlogx到本地,就是下图中Relaylog,然后备库会开启另外一个SQL线程取回放Relay log,通过这种方式达到Master-Slave数据同步的目的. 通常情况下,slave是只读的,可以承担一部分读流量,而且可以根据实际需要,添加一个或者多个slave,这样在一定程度上可以缓解主库