最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
当前位置: 首页 - 科技 - 知识百科 - 正文

Mysql5.7从节点配置多线程主从复制的方法详解

来源:懂视网 责编:小采 时间:2020-11-09 20:37:03
文档

Mysql5.7从节点配置多线程主从复制的方法详解

Mysql5.7从节点配置多线程主从复制的方法详解:前言 Mysql 采用多线程进行复制是从 Mysql 5.6 开始支持的内容,但是 5.6 版本下有缺陷,虽然支持多线程,但是每个数据库只能一个线程,也就是说如果我们只有一个数据库,则主从复制时也只有一个线程在工作。相当于还是以前的单线程。 从 Mysql 5.
推荐度:
导读Mysql5.7从节点配置多线程主从复制的方法详解:前言 Mysql 采用多线程进行复制是从 Mysql 5.6 开始支持的内容,但是 5.6 版本下有缺陷,虽然支持多线程,但是每个数据库只能一个线程,也就是说如果我们只有一个数据库,则主从复制时也只有一个线程在工作。相当于还是以前的单线程。 从 Mysql 5.

前言

Mysql 采用多线程进行复制是从 Mysql 5.6 开始支持的内容,但是 5.6 版本下有缺陷,虽然支持多线程,但是每个数据库只能一个线程,也就是说如果我们只有一个数据库,则主从复制时也只有一个线程在工作。相当于还是以前的单线程。 从 Mysql 5.7 开始支持同一数据库下并行主从复制。不过默认情况下,还是单数据库单个线程,如果需要使用多线程,需要在从节点进行配置。

Mysql 5.7 对主从复制增加了一种类型,共有两种类型,如下:

  • DATABASE 基于库的并行复制 , 每个数据库对应一个复制线程
  • LOGICAL_CLOCK 基于组提交的并行复制方式,同一个数据库下可以有多个线程
  • 下面的步骤,在从节点上进行配置。

    查看当前配置

    在开始配置之前,我们先看一下当前配置下的主从复制的进程数。

    mysql> show processlist;
    +----+-------------+-----------+------+---------+-------+--------------------------------------------------------+------------------+
    | Id | User | Host | db | Command | Time | State | Info |
    +----+-------------+-----------+------+---------+-------+--------------------------------------------------------+------------------+
    | 1 | system user | | NULL | Connect | 91749 | Waiting for master to send event | NULL |
    | 2 | system user | | NULL | Connect | 208 | Slave has read all relay log; waiting for more updates | NULL |
    | 37 | root | localhost | NULL | Query | 0 | starting | show processlist |
    +----+-------------+-----------+------+---------+-------+--------------------------------------------------------+------------------+
    3 rows in set (0.00 sec)

    从上面看出只有一个主进程在等待同步。

    下面查看复制类型和并行数量配置

    mysql> show variables like 'slave_parallel_type';
    +---------------------+----------+
    | Variable_name | Value |
    +---------------------+----------+
    | slave_parallel_type | DATABASE |
    +---------------------+----------+
    1 row in set (0.00 sec)

    当前的复制类型是 DATABASE,也就是统一数据库下只有一个线程进行复制,不能并行复制。

    mysql> show variables like 'slave_parallel_workers';
    +------------------------+-------+
    | Variable_name | Value |
    +------------------------+-------+
    | slave_parallel_workers | 0 |
    +------------------------+-------+
    1 row in set (0.01 sec)

    当前并行工作的进程数是 0

    配置多线程

    1、停止从节点复制

    mysql> stop slave;
    Query OK, 0 rows affected (0.01 sec)

    2、设置复制类型为 LOGICAL_CLOCK

    mysql> set global slave_parallel_type='logical_clock';
    Query OK, 0 rows affected (0.00 sec)
    mysql> show variables like 'slave_parallel_type';
    +---------------------+---------------+
    | Variable_name | Value |
    +---------------------+---------------+
    | slave_parallel_type | LOGICAL_CLOCK |
    +---------------------+---------------+
    1 row in set (0.01 sec)

    3、设置并行数量为 4

    mysql> set global slave_parallel_workers=4;
    Query OK, 0 rows affected (0.00 sec)
    mysql> show variables like 'slave_parallel_workers';
    +------------------------+-------+
    | Variable_name | Value |
    +------------------------+-------+
    | slave_parallel_workers | 4 |
    +------------------------+-------+
    1 row in set (0.00 sec)

    4、启动从节点复制

    mysql> start slave;
    Query OK, 0 rows affected (0.02 sec)

    5、查看一下当前工作的线程数

    mysql> show processlist;
    +----+-------------+-----------+------+---------+------+--------------------------------------------------------+------------------+
    | Id | User | Host | db | Command | Time | State | Info |
    +----+-------------+-----------+------+---------+------+--------------------------------------------------------+------------------+
    | 37 | root | localhost | NULL | Query | 0 | starting | show processlist |
    | 38 | system user | | NULL | Connect | 8 | Waiting for master to send event | NULL |
    | 39 | system user | | NULL | Connect | 7 | Slave has read all relay log; waiting for more updates | NULL |
    | 40 | system user | | NULL | Connect | 8 | Waiting for an event from Coordinator | NULL |
    | 41 | system user | | NULL | Connect | 8 | Waiting for an event from Coordinator | NULL |
    | 42 | system user | | NULL | Connect | 8 | Waiting for an event from Coordinator | NULL |
    | 43 | system user | | NULL | Connect | 8 | Waiting for an event from Coordinator | NULL |
    +----+-------------+-----------+------+---------+------+--------------------------------------------------------+------------------+
    7 rows in set (0.00 sec)

    最后说一下为什么需要多线程复制?因为主从之间的同步会有延时,多线程的目的是为了尽量减少这个延时时间。虽然如何优化主从是一个系统的功能,不同的场景需要不同的解决方案,但是多线程至少从基础上能减少延迟时间。另外根据数据库的实际情况,能否真正减少延时,以及配置多少线程,则需要反复的测试得出适合自己的数据。

    总结

    声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文档

    Mysql5.7从节点配置多线程主从复制的方法详解

    Mysql5.7从节点配置多线程主从复制的方法详解:前言 Mysql 采用多线程进行复制是从 Mysql 5.6 开始支持的内容,但是 5.6 版本下有缺陷,虽然支持多线程,但是每个数据库只能一个线程,也就是说如果我们只有一个数据库,则主从复制时也只有一个线程在工作。相当于还是以前的单线程。 从 Mysql 5.
    推荐度:
    标签: 的方式 配置 mysql
    • 热门焦点

    最新推荐

    猜你喜欢

    热门推荐

    专题
    Top