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 复制的复制,但我还没有发现是否可以这样做。

4

1 回答 1

1

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

正如下面链接中所解释的,从服务器执行的每个事务也会导致 mysql.gtid_slave_pos 上的更新,如果表的引擎不同,则可能导致性能不佳(在我的情况下,服务器滞后 4000+ 秒,改变mysql.gtid_slave_pos 中的引擎复制现在是立即的)。

https://mariadb.com/kb/en/library/mysqlgtid_slave_pos-table/

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

于 2018-04-22T21:44:58.950 回答