实例解读:MySQL并行复制如何解决特定的主从问题?
发表于:2025-02-03 作者:千家信息网编辑
千家信息网最后更新 2025年02月03日,并行复制存世已多年,但是在实际应用场景中的使用并不常见。这次很幸运,我们刚好遇到一个客户,主的写入工作量非常大,但是从难以跟上,在这种情况下,我建议它使用并行从属线程。那么,如何衡量并行复制是否在客户
千家信息网最后更新 2025年02月03日实例解读:MySQL并行复制如何解决特定的主从问题?
并行复制存世已多年,但是在实际应用场景中的使用并不常见。这次很幸运,我们刚好遇到一个客户,主的写入工作量非常大,但是从难以跟上,在这种情况下,我建议它使用并行从属线程。
那么,如何衡量并行复制是否在客户的场景中发挥了作用?对于客户业务能够带来多大的帮助?下面我们就一起来看看吧!
在客户业务场景中, slave_parallel_workers 是0,很明显我应该去增大,但增大的幅度是多少呢?1还是10,这个问题我们会在另一篇文章中解释,先说一下本文的场景中,我们将slave_parallel_workers 调整到了40。
同时,我们对slave还做了以下更改:
slave_parallel_type = LOGICAL_CLOCK;slave_parallel_workers = 40;slave_preserve_commit_order = ON;
40个线程听起来是很多,但是这是取决于特定的工作负载的,如果事务是独立的,那么它就可能派上用场。
接下来,我们再来看看哪些线程在工作:
mysql> SELECT performance_schema.events_transactions_summary_by_thread_by_event_name.THREAD_ID AS THREAD_ID, performance_schema.events_transactions_summary_by_thread_by_event_name.COUNT_STAR AS COUNT_STARFROM performance_schema.events_transactions_summary_by_thread_by_event_nameWHERE performance_schema.events_transactions_summary_by_thread_by_event_name.THREAD_ID IN(SELECT performance_schema.replication_applier_status_by_worker.THREAD_IDFROM performance_schema.replication_applier_status_by_worker);+-----------+------------+| THREAD_ID | COUNT_STAR |+-----------+------------+| 25882 | 442481 || 25883 | 433200 || 25884 | 426460 || 25885 | 419772 || 25886 | 413751 || 25887 | 407511 || 25888 | 401592 || 25889 | 395169 || 25890 | 388861 || 25891 | 380657 || 25892 | 371923 || 25893 | 362482 || 25894 | 351601 || 25895 | 339282 || 25896 | 325148 || 25897 | 310051 || 25898 | 292187 || 25899 | 272990 || 25900 | 252843 || 25901 | 232424 |+-----------+------------+
从上述代码中,我们可以看到哪些线程是在工作,但是这些线程真的加速复制了吗?Slave能在同一时间内写出更多的东西吗?
先来看一下 replication lag:
我们可以看大lag很快就降下来了,这是因为线程数增加了吗?还是因为生成多个插件的作业完成了,没有更多的写入了?(复制延迟没有达到0,因为这个Slave故意拖延了一个小时。)
幸运的是,在PMM中我们还有其他图表可以看,例如显示InnoDB Row操作:
Slave插入了比之前更多的行,那实际插入了多少行呢?下面我们创建一个新的图表来查看
每小时插入了多少行。在PMM中,我们已经拥有了所有这些信息,只需要使用下面的查询创建一个新的图表:
increase(mysql_global_status_innodb_row_ops_total{instance="$host",operation!="read"}[1h])
结果显示:
从图中我们可以看到每小时插入行数大幅增加,从每小时约50Mil到200-400Mil。我们可以得出结论,增加slave_parallel_workers数量确实有帮助。
线程
场景
客户
小时
工作
图表
更多
幸运
业务
实际
是在
还是
这是
帮助
问题
明显
接下来
东西
事务
代码
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
霸州管理软件开发
金融建设网络安全平台
贵州大数据时间频率同步服务器
增加大学生网络安全意识
计算机网络技术教程例题解析
数据库 工资 计算
外网远程服务器
软件开发与编程那个好
贵阳海信软件开发工资
网络安全渗透测试工程师培训
安全的快速服务器
服务器支架滑轨之安装浪潮
移动互联网通信科技龙头股
配置服务器管理口ip
在对学生进行网络安全教育时
服务器为什么选择在贵州云空间
linux下数据库导入
wifi服务器如何重启
中国农行浙江分行 软件开发
服务器如何看网卡
数据库取值表单自动填充
数据库插入时有的是空值怎么插入
软件开发20万项目交多少税
2k21哪个服务器人最多
手机公积金数据库信息为空
天猫评论数据库
无线网络技术人员考试答案
大数据库的战略和实践意义
驰讯网络技术有限公司
测试服务器端口的速度