注意:下面是我们打开5.7副本以实现并行复制的参数:
slave_preserve_commit_order = 1
slave_parallel_type = LOGICAL_CLOCK
slave_parallel_workers = 10
log_slave_updates = 1
backup retention enabled for 1 day on the slave在5.7主服务器上,设置了以下参数:
binlog_order_commits = 1
binlog_group_commit_sync_delay = 50从以下查询可以看出,只有单个线程复制正在发生:
select * from performance_schema.threads where name="thread/sql/slave_worker";通过执行上面的查询,我们看到实际上只有一个从工作人员正在提交数据库,而对于所有其他线程,它显示了“等待协调员的事件”的状态。
想知道为什么精确的并行复制不能工作。
发布于 2019-04-09 09:48:21
考虑到您的数据库工作负载,MySQL只能使用复制实际需要的线程数。这些线程是可见的,这意味着并行执行是有效的。看看“展示PROCESSLIST”产生了什么结果。更具体地说,查看复制线程的"time“列显示了什么。
发布于 2019-04-11 08:58:22
在任何5.7实例(它是5.7主的从实例)上可以实现的并行性在很大程度上取决于工作负载。
但是,我们可以使用主服务器上的联木_组_提交_同步_延迟变量在一定程度上调整并行度。增加此变量通常会增加组中提交的事务数(在主目录的二进制日志中),从而增加从服务器上的并行事务数。
通常,在oltp事务的大多数情况下,让binlog_order_commit=1在主服务器上,而slave_preserve_commit_order=1在从服务器上是一种方法,因为提交不正常会导致从数据变得不一致。注意,要启用slave_preser_commit_order,必须在从服务器上启用二进制日志。从技术上讲,这会减慢从服务器的速度,从而影响性能,但是这是mysql和slave_preserve_commit_order的技术限制,实际上与二进制日志记录无关。人们已经将其已报告到mysql,并且它可能会在以后的版本中被删除。
https://dba.stackexchange.com/questions/234209
复制相似问题