实例解读:MySQL并行复制如何解决特定的主从问题?
发表于:2024-11-27 作者:千家信息网编辑
千家信息网最后更新 2024年11月27日,并行复制存世已多年,但是在实际应用场景中的使用并不常见。这次很幸运,我们刚好遇到一个客户,主的写入工作量非常大,但是从难以跟上,在这种情况下,我建议它使用并行从属线程。那么,如何衡量并行复制是否在客户
千家信息网最后更新 2024年11月27日实例解读: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安全错误
数据库的锁怎样保障安全
华为畅连通话激活时显示服务器
网络技术csnet
泉州一力科技软件开发黄生
网络安全自查整改效果
vs中数据库查询中有中文怎么办
学软件开发学校叫名字
网络安全知识英语竞赛入口
网络安全知识科普竞赛网址
电商软件开发就业
北仑租房软件开发
吴中区正规网络技术资质
衡水盘古网络技术公司怎么样
gis 选中属性创建数据库
数据库挂起文件
网络安全资金使用说明
明师讲谈校园网络安全
施工生产调度管理软件开发
数据更新日志是用什么数据库
浙江全闪块分布式存储数据库
数据库中入职时间的类型
数据库中13b和12哪个大
领唐软件开发
国家网络安全 案例分析
智悦网络技术
哪种网络安全性好
gis 选中属性创建数据库
网络安全的龙头公司
消费者数据库能为平台提供什么
开票网络配置服务器连接异常
c 做上位机软件开发