我目前正在试验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”
为了测试并行复制,我现在做了以下工作:
我的期望是"Database2“中的插入直接在从服务器上执行,尽管"Database1”中的插入仍然运行在从服务器上。
相反,"Database2“中的插入只在"Database1”中的插入在从服务器上完成之后才在从服务器上执行。
我的理解错误在哪里?
背景:我们在生产中遇到的问题是,由于长时间运行插入到另一个数据库,从服务器上的数据写入得太晚了。我的猜测是,这是因为复制是按顺序处理数据,而不是并行处理。
发布于 2022-03-03 19:43:44
MyISAM可能是主要的问题。对表的任何写入(包括复制写入)都会阻止所有其他写入,甚至在某种程度上甚至会阻止读取。因此,“并行”复制线程有时彼此阻塞。甚至副本上的SELECTs也会被阻止和/或阻止复制。
我强烈建议您切换到InnoDB,如果您仍然有问题,请返回。
即使没有完全停止其他复制线程,InnoDB事务和复制也可以保持有序。
https://dba.stackexchange.com/questions/308170
复制相似问题