返回顶部
首页 > 资讯 > 数据库 >Mysql5.7如何并行复制
  • 381
分享到

Mysql5.7如何并行复制

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

这篇文章将为大家详细讲解有关Mysql5.7如何并行复制,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。启用mysql并行复制Mysql 5.7的并行复制建立在组提交的基础

这篇文章将为大家详细讲解有关Mysql5.7如何并行复制,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

启用mysql并行复制

Mysql 5.7的并行复制建立在组提交的基础上,所有在主库上能够完成 Prepared 的语句表示没有数据冲突,就可以在 Slave 节点并行复制。

关于 MySQL 5.7 的组提交,我们要看下以下的参数:

(test) > show global variables like '%group_commit%'
    -> ;
+-----------------------------------------+-------+
| Variable_name                           | Value |
+-----------------------------------------+-------+
| binlog_group_commit_sync_delay          | 0     |
| binlog_group_commit_sync_no_delay_count | 0     |
+-----------------------------------------+-------+

要开启 MySQL 5.7 并行复制需要以下二步,首先在主库设置 binlog_group_commit_sync_delay 的值大于0 。

 > set global binlog_group_commit_sync_no_delay_count=20;
 > set global binlog_group_commit_sync_delay =10;

这里简要说明下 binlog_group_commit_sync_delay 和 binlog_group_commit_sync_no_delay_count 参数的作用。

  • binlog_group_commit_sync_delay

全局动态变量,单位微妙,默认0,范围:0~1000000(1秒)。

表示 binlog 提交后等待延迟多少时间再同步到磁盘,默认0 ,不延迟。当设置为 0 以上的时候,就允许多个事务日志同时一起提交,也就是我们说的组提交。组提交是并行复制的基础,我们设置这个值的大于 0 就代表打开了组提交的功能。

  • binlog_group_commit_sync_no_delay_count

全局动态变量,单位个数,默认0,范围:0~1000000。

表示等待延迟提交的最大事务数,如果上面参数的时间没到,但事务数到了,则直接同步到磁盘。若 binlog_group_commit_sync_delay 没有开启,则该参数也不会开启。

其次要在 Slave 主机上设置如下几个参数:

# 过多的线程会增加线程间同步的开销,建议4-8个Slave线程。
slave-parallel-type=LOGICAL_CLOCK
slave-parallel-workers=4

或者直接在线启用也是可以的:

mysql> stop slave;
Query OK, 0 rows affected (0.07 sec)
mysql> set global slave_parallel_type='LOGICAL_CLOCK';
Query OK, 0 rows affected (0.00 sec)
mysql> set global slave_parallel_workers=4;
Query OK, 0 rows affected (0.00 sec)
mysql> start slave;
Query OK, 0 rows affected (0.06 sec)
mysql> show variables like 'slave_parallel_%';
+------------------------+---------------+
| Variable_name          | Value         |
+------------------------+---------------+
| slave_parallel_type    | LOGICAL_CLOCK |
| slave_parallel_workers | 4             |
+------------------------+---------------+
2 rows in set (0.00 sec)
检查Worker线程的状态

当前的 Slave 的 SQL 线程为 Coordinator(协调器),执行 Relay log 日志的线程为 Worker(当前的 SQL 线程不仅起到协调器的作用,同时也可以重放 Relay log 中主库提交的事务)。

我们上面设置的线程数是 4 ,从库就能看到 4 个 Coordinator(协调器)进程。

Mysql5.7如何并行复制

并行复制配置与调优

开启 MTS 功能后,务必将参数 master-info-repository 设置为 TABLE ,这样性能可以有 50%~80% 的提升。这是因为并行复制开启后对于 master.info 这个文件的更新将会大幅提升,资源的竞争也会变大。

在 MySQL 5.7 中,推荐将 master-info-repository 和 relay-log-info-repository 设置为 TABLE ,来减小这部分的开销。

master-info-repository = table
relay-log-info-repository = table
relay-log-recovery = ON
并行复制监控

复制的监控依旧可以通过 SHOW SLAVE STATUS\G,但是 MySQL 5.7 在 perfORMance_schema 架构下多了以下这些元数据表,用户可以更细力度的进行监控:

mysql> use performance_schema;
mysql> show tables like 'replication%';
+---------------------------------------------+
| Tables_in_performance_schema (replication%) |
+---------------------------------------------+
| replication_applier_configuration           |
| replication_applier_status                  |
| replication_applier_status_by_coordinator   |
| replication_applier_status_by_worker        |
| replication_connection_configuration        |
| replication_connection_status               |
| replication_group_member_stats              |
| replication_group_members                   |
+---------------------------------------------+
8 rows in set (0.00 sec)
想办法统计出来每个同步线程使用的比率。统计方法如下:
1、将线上从机相关统计打开(出于性能考虑默认是关闭的),打开方法可以如下如下SQL:
UPDATE performance_schema.setup_consumers SET ENABLED = 'YES' WHERE NAME LIKE 'events_transactions%';
UPDATE performance_schema.setup_instruments SET ENABLED = 'YES', TIMED = 'YES'WHERE NAME = 'transaction';
2、创建一个查看各个同步线程使用量的视图,代码如下:
USE test;
CREATE VIEW rep_thread_count AS SELECT a.THREAD_ID AS THREAD_ID,a.COUNT_STAR AS COUNT_STAR FROM performance_schema.events_transactions_summary_by_thread_by_event_name a WHERE a.THREAD_ID in (SELECT b.THREAD_ID FROM performance_schema.replication_applier_status_by_worker b);
3、一段时间后,统计各个同步线程的使用比率,SQL如下:
SELECT SUM(COUNT_STAR) FROM rep_thread_count INTO @total;
SELECT 100*(COUNT_STAR/@total) AS thread_usage FROM rep_thread_count;

关于“Mysql5.7如何并行复制”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

您可能感兴趣的文档:

--结束END--

本文标题: Mysql5.7如何并行复制

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

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

猜你喜欢
  • Mysql5.7如何并行复制
    这篇文章将为大家详细讲解有关Mysql5.7如何并行复制,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。启用MySQL并行复制MySQL 5.7的并行复制建立在组提交的基础...
    99+
    2024-04-02
  • MySQL5.7并行复制原理及实现
    稍微了解过一点的数据的运维就知道MySQL 5.5以及之前是单SQL线程回放,如果Master QPS稍微高点,从上就有延迟了,5.6是基于库的并行回放机制,只有当多个库的话才有复制才有优势,而5.7是基于组的并行回...
    99+
    2022-06-01
    MySQL5.7并行复制 MySQL 并行复制
  • 如何进行MySQL并行复制测试
    今天就跟大家聊聊有关如何进行MySQL并行复制测试,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。    对于主从延迟,其实一...
    99+
    2024-04-02
  • Mysql5.7中如何搭建主从复制
    这篇文章主要介绍了Mysql5.7中如何搭建主从复制,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、概述主从复制可以实现对数据库备份和读写...
    99+
    2024-04-02
  • 如何理解 mysql5.中的并行复制
    如何理解 mysql5.中的并行复制,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。 一 、 前言  &...
    99+
    2024-04-02
  • mysql5.7 主从复制
    注意事项:主库全库备份完查看该文件binlog pos标记位文件名为:binlog_pos_innodb 记录当时mysql备份时主库的标记为 环境说明:两台安装在CentOS7.4的MySQL5.7.2...
    99+
    2024-04-02
  • 无损复制(mysql5.7)
    介绍无损复制之前,首先介绍一下半同步复制 半同步复制: 无损复制属于半同步复制的一种。 一、半同步复制介绍 1,两个插件实现半同步复制功能。主库有一个插件,从库有一个插件。 2,系统变量控制插件特性。几个列...
    99+
    2024-04-02
  • Mysql5.7主从复制如何配置文档
    下面一起来了解下Mysql5.7主从复制如何配置文档,相信大家看完肯定会受益匪浅,文字在精不在多,希望Mysql5.7主从复制如何配置文档这篇短内容是你想要的。安装的数据是mysql5.7社区版本yum安装...
    99+
    2024-04-02
  • 在Mysql5.7中如何搭建主从复制
    这篇文章主要为大家展示了“在Mysql5.7中如何搭建主从复制”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“在Mysql5.7中如何搭建主从复制”这篇文章吧。一...
    99+
    2024-04-02
  • MySQL5.7主从复制-GTID复制搭建
     两台服务器,系统是Redhat6.5,MySQL版本是5.7.18。 1、在主库上,创建复制使用的用户,并授予replication slave权限。这里创建用户repl,可以从IP为1...
    99+
    2024-04-02
  • 浅析MySQL并行复制
    01 并行复制的概念    在MySQL的主从复制架构中,主库上经常会并发的执行很多SQL,只要这些SQL没有产生锁等待,那么同一时间并发好几个SQL线程是没有问题的。    ...
    99+
    2022-05-31
    MySQL 并行复制 mysql 复制
  • MySQL5.7主从复制-异步复制搭建
      两台服务器,系统是Redhat6.5,MySQL版本是5.7.18。 1、在主库上,创建复制使用的用户,并授予replication slave权限。这里创建用户repl,可以从IP...
    99+
    2024-04-02
  • CentOs7中mysql5.7如何实现主从复制配置
    这篇文章主要介绍CentOs7中mysql5.7如何实现主从复制配置,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! MySQL5.7主、从配置具体步骤:...
    99+
    2024-04-02
  • mysql5.7主主(双主)复制
    1. 准备工作(本文永久地址:http://woymk.blog.51cto.com/10000269/1922786)配置环境:centos6.9,mysql5.7先安装、配置好两台MySQL服务器ser...
    99+
    2024-04-02
  • Mysql复制方式(半同步复制,并行复制,多源复制
    一、MySQL主从复制(异步复制,默认) Mysql主从复制原理 Mysql的复制原理大致如下: 1.主库记录binlog日志 在每次准备提交事务完成数据更新前,主库将数据更新的事件记录到二进制日志binlog中。主库上的s...
    99+
    2017-10-08
    Mysql复制方式(半同步复制,并行复制,多源复制
  • GoldenGate复制单表开并行
    最近有几项业务下线,需要从一张表中删除6.8亿多条数据。想办法把数据删除掉了,但对应的ogg灾备端复制时有了的延迟,而且延迟的时间起来越长。对于表太多造成的延迟可以把所有表分为多个组来做复制,于是想复制进程...
    99+
    2024-04-02
  • MYSQL5.7进阶之主从复制
    主从复制是msql数据库的高可用 读写分离 容灾备份 等的基本要求 在这主从复制之前我们需要准备以下条件 保证master数据库和从数据库的mysql版本一致 matser和从数据防火墙关闭 数据库端口开启   好了,开搞 奥...
    99+
    2021-08-17
    MYSQL5.7进阶之主从复制
  • MySQL5.7多源复制的实验
    MySQL5.7多源复制的实验node1: 192.168.2.171     master1node2: 192.168.2.172  &nbs...
    99+
    2024-04-02
  • MySQL5.7中GTID复制的改进
    1、支持创建临时表 MySQL5.7版本可以支持create temporary table、drop temporary table命令。 2、开启GTID复制模式,不用开启log_slave_upda...
    99+
    2024-04-02
  • MySQL5.7的多源复制方法
    本篇内容主要讲解“MySQL5.7的多源复制方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL5.7的多源复制方法”吧!    &...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作