广告
返回顶部
首页 > 资讯 > 数据库 >实例解读:MySQL并行复制如何解决特定的主从问题?
  • 528
分享到

实例解读:MySQL并行复制如何解决特定的主从问题?

2024-04-02 19:04:59 528人浏览 安东尼
摘要

并行复制存世已多年,但是在实际应用场景中的使用并不常见。这次很幸运,我们刚好遇到一个客户,主的写入工作量非常大,但是从难以跟上,在这种情况下,我建议它使用并行从属线程。 那么,如何衡量并行复制是否在客

并行复制存世已多年,但是在实际应用场景中的使用并不常见。这次很幸运,我们刚好遇到一个客户,主的写入工作量非常大,但是从难以跟上,在这种情况下,我建议它使用并行从属线程

那么,如何衡量并行复制是否在客户的场景中发挥了作用?对于客户业务能够带来多大的帮助?下面我们就一起来看看吧!

在客户业务场景中, 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_STAR
FROM performance_schema.events_transactions_summary_by_thread_by_event_name
WHERE performance_schema.events_transactions_summary_by_thread_by_event_name.THREAD_ID IN
(SELECT performance_schema.replication_applier_status_by_worker.THREAD_ID
FROM 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:

实例解读:MySQL并行复制如何解决特定的主从问题?

我们可以看大lag很快就降下来了,这是因为线程数增加了吗?还是因为生成多个插件的作业完成了,没有更多的写入了?(复制延迟没有达到0,因为这个Slave故意拖延了一个小时。)

幸运的是,在PMM中我们还有其他图表可以看,例如显示InnoDB Row操作:

实例解读:MySQL并行复制如何解决特定的主从问题?

Slave插入了比之前更多的行,那实际插入了多少行呢?下面我们创建一个新的图表来查看

每小时插入了多少行。在PMM中,我们已经拥有了所有这些信息,只需要使用下面的查询创建一个新的图表:


increase(mysql_global_status_innodb_row_ops_total{instance="$host",operation!="read"}[1h])

结果显示:

实例解读:MySQL并行复制如何解决特定的主从问题?

从图中我们可以看到每小时插入行数大幅增加,从每小时约50Mil到200-400Mil。我们可以得出结论,增加slave_parallel_workers数量确实有帮助。

您可能感兴趣的文档:

--结束END--

本文标题: 实例解读:MySQL并行复制如何解决特定的主从问题?

本文链接: https://www.lsjlt.com/news/46724.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 实例解读:MySQL并行复制如何解决特定的主从问题?
    并行复制存世已多年,但是在实际应用场景中的使用并不常见。这次很幸运,我们刚好遇到一个客户,主的写入工作量非常大,但是从难以跟上,在这种情况下,我建议它使用并行从属线程。 那么,如何衡量并行复制是否在客...
    99+
    2022-10-18
  • 如何解决mysql主从复制中产生了锁的问题
    这篇文章给大家分享的是有关如何解决mysql主从复制中产生了锁的问题的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一套主主复制的mysql库产生了死锁,导致主从同步出现问题, ...
    99+
    2022-10-18
  • 如何解决MySQL中主从延迟与读写分离的问题
    小编给大家分享一下如何解决MySQL中主从延迟与读写分离的问题,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!前言:我们都知道互联网数据有个特性,大部分场景都是 读...
    99+
    2023-06-29
  • 如何解决实际的MySQL复制问题
    这篇文章主要为大家展示了“如何解决实际的MySQL复制问题”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何解决实际的MySQL复制问题”这篇文章吧。MySQL...
    99+
    2022-10-18
  • 如何理解MySQL主从复制中关于AUTO_INCREMENT的奇怪问题
    今天就跟大家聊聊有关如何理解MySQL主从复制中关于AUTO_INCREMENT的奇怪问题,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。 ...
    99+
    2022-10-19
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作