• ADADADADAD

    实例解读:MySQL并行复制如何解决特定的主从问题?[ mysql数据库 ]

    mysql数据库 时间:2024-12-24 19:10:14

    作者:文/会员上传

    简介:

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

    以下为本文的正文内容,内容仅供参考!本站为公益性网站,复制本文以及下载DOC文档全部免费。

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

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

    在客户业务场景中, 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>SELECTperformance_schema.events_transactions_summary_by_thread_by_event_name.THREAD_IDASTHREAD_ID,performance_schema.events_transactions_summary_by_thread_by_event_name.COUNT_STARASCOUNT_STARFROMperformance_schema.events_transactions_summary_by_thread_by_event_nameWHEREperformance_schema.events_transactions_summary_by_thread_by_event_name.THREAD_IDIN(SELECTperformance_schema.replication_applier_status_by_worker.THREAD_IDFROMperformance_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数量确实有帮助。

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

    将本文的Word文档下载到电脑

    推荐度:

    下载
    热门标签: mysql主从实例