首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MariaDB复制-由于中继日志中的gtid语句而导致的从属滞后

MariaDB复制-由于中继日志中的gtid语句而导致的从属滞后
EN

Stack Overflow用户
提问于 2018-04-11 16:20:25
回答 1查看 978关注 0票数 0

我正在从MySql迁移到涉及复制的MariaDB,一切正常,主MySql (5.5.59)与从MariaDB (10.1.26)的兼容性很好。

当我启用从MariaDB主服务器到MariaDB从服务器的复制(相同版本: 10.1.26)时,就会出现问题。在某些情况下,通过大量更新确定,奴隶开始滞后。如果我将主服务器恢复到MySql (5.5.59),并且在MariaDB中复制到同一个从服务器,那么在同一组更新中永远不会发生延迟。

我检查了滞后的MariaDB从站中的中继日志,比较了当MySql是主站和MariaDB是主站时收到的中继日志,唯一的区别是当主站是MariaDB时,我可以看到与gtid相关的语句。

当主服务器为MariaDB时,我希望在中继日志中禁用gtid语句,并进行类似于不带gtid的“旧样式”MySql复制的复制,但我没有发现是否可以这样做。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-22 21:44:58

复制滞后是由于从服务器中的表mysql.gtid_slave_pos中设置的引擎造成的,默认情况下这个表是InnoDB,接收复制更新的表不是InnoDB。

正如下面的链接所解释的,由从服务器执行的每个事务也会导致mysql.gtid_slave_pos上的更新,如果表的引擎不同,这可能会导致性能不好(在我的示例中,服务器延迟了4000+秒,更改了mysql.gtid_slave_pos中的引擎--复制现在是即时的)。

pos-table/

在MariaDB 10.3.1中,引入了一个新的参数来帮助解决这个问题: gtid_pos_auto_engines这个参数将为复制中涉及的每个引擎创建一个不同的表mysql.gtid_slave_pos。不幸的是,使用先前版本的MariaDB似乎无法做到这一点,表mysql.gtid_slave_pos必须是唯一的,其引擎的选择取决于DBA和复制中涉及的表/查询。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49780059

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档