首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >理解MySQL 5.7中的并行复制

理解MySQL 5.7中的并行复制
EN

Database Administration用户
提问于 2022-03-02 11:15:07
回答 1查看 215关注 0票数 0

我目前正在试验MySQL中的并行复制(5.7)。

我已经设置了主从(MyISAM,基于语句)之间的复制,并设置了以下设置,用于在从服务器上进行并行复制:

log_slave_updates=1 log-bin=/home/mysqlbinlog/mysql slave_parallel_type=LOGICAL_CLOCK slave_parallel_workers=7 slave_preserve_commit_order=ON

有两个数据库。"Datebase1“和"Database2”

为了测试并行复制,我现在做了以下工作:

  1. 在"Database1“中启动一个长时间的插入。
  2. 直到从服务器开始执行INSERT (显示进程列表)。
  3. 在"Database2“中开始快速插入。

我的期望是"Database2“中的插入直接在从服务器上执行,尽管"Database1”中的插入仍然运行在从服务器上。

相反,"Database2“中的插入只在"Database1”中的插入在从服务器上完成之后才在从服务器上执行。

我的理解错误在哪里?

背景:我们在生产中遇到的问题是,由于长时间运行插入到另一个数据库,从服务器上的数据写入得太晚了。我的猜测是,这是因为复制是按顺序处理数据,而不是并行处理。

EN

回答 1

Database Administration用户

发布于 2022-03-03 19:43:44

MyISAM可能是主要的问题。对表的任何写入(包括复制写入)都会阻止所有其他写入,甚至在某种程度上甚至会阻止读取。因此,“并行”复制线程有时彼此阻塞。甚至副本上的SELECTs也会被阻止和/或阻止复制。

我强烈建议您切换到InnoDB,如果您仍然有问题,请返回。

即使没有完全停止其他复制线程,InnoDB事务和复制也可以保持有序。

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

https://dba.stackexchange.com/questions/308170

复制
相关文章

相似问题

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