MySQL 4种常用的主从复制架构

MySQL主从复制是一种常用的数据复制方式,可以实现数据的备份、读写分离等多种功能。MySQL 4种常用的主从复制架构包括基于二进制日志的复制、基于GTID的复制、基于半同步复制和基于组复制。下面将为您详细介绍这四种架构的实现方法。

基于二进制日志的复制

基于二进制日志的MySQL主从复制是最常见的一种方式,实现起来也比较简单。步骤如下:

  1. 在主服务器的my.cnf配置文件中,开启二进制日志功能,并指定日志文件路径和名称。
    bash
    [mysqld]
    log-bin=mysql-bin
  2. 在主服务器上创建一个用于复制的账户,并授予该账户 REPLICATION SLAVE 权限。
    bash
    CREATE USER 'replication'@'%' IDENTIFIED BY 'password';
    GRANT REPLICATION SLAVE ON *.* TO 'replication'@'%';
  3. 在主服务器上设置一个唯一的 server_id,以便在后续的操作中进行标识。
    bash
    server_id=1
  4. 在从服务器上修改 my.cnf 配置文件,设置唯一的 server_id,并指定需要复制的主服务器的 IP 和端口号。
    bash
    [mysqld]
    server-id=2
    log-bin=mysql-bin
    relay-log=relay-bin
    log-slave-updates=1
    read-only=1
  5. 在从服务器上启动 MySQL 服务,并执行如下命令,将从服务器连接到主服务器开始复制数据。
    bash
    CHANGE MASTER TO
    MASTER_HOST='master_host_name',
    MASTER_USER='replication',
    MASTER_PASSWORD='password',
    MASTER_LOG_FILE='master1-bin.000001',
    MASTER_LOG_POS=501;
    START SLAVE;

基于GTID的复制

GTID(global transaction identifier)是指全局事务标识符,可以跨越多个服务器,实现数据在不同服务器之间的复制和同步。基于GTID的MySQL主从复制需要先开启GTID功能,步骤如下:

  1. 在主服务器的my.cnf配置文件中,开启GTID功能,并指定日志文件路径和名称。
    bash
    [mysqld]
    gtid_mode=on
    enforce_gtid_consistency=on
    log-bin=mysql-bin
  2. 在从服务器的my.cnf配置文件中,开启GTID功能,指定唯一的 server_id,并设置 read-only。
    bash
    [mysqld]
    gtid_mode=on
    enforce_gtid_consistency=on
    server-id=2
    log-bin=mysql-bin
    relay-log=relay-bin
    log-slave-updates=1
    read-only=1
  3. 在从服务器上启动 MySQL 服务,并执行如下命令,将从服务器连接到主服务器开始复制数据。
    bash
    CHANGE MASTER TO
    MASTER_HOST='master_host_name',
    MASTER_USER='replication',
    MASTER_PASSWORD='password',
    MASTER_AUTO_POSITION=1;
    START SLAVE;

基于半同步复制

半同步复制是指在主服务器写入数据后,至少要等待其中一个从服务器将数据接收成功后,才能继续向前写入数据。这种方式可以避免数据误删除和数据不一致的问题。步骤如下:

  1. 在主服务器的my.cnf配置文件中,开启半同步复制功能。
    bash
    [mysqld]
    plugin-load=semisync_master=semisync_master.so;semisync_slave=semisync_slave.so
    rpl_semi_sync_master_enabled=1
    rpl_semi_sync_master_timeout=1000000000
    rpl_semi_sync_slave_enabled=1
  2. 在从服务器的my.cnf配置文件中,开启半同步复制功能,指定唯一的 server_id,并设置 read-only。
    bash
    [mysqld]
    plugin-load=semisync_master=semisync_master.so;semisync_slave=semisync_slave.so
    rpl_semi_sync_slave_enabled=1
    server-id=2
    read-only=1
  3. 在从服务器上启动 MySQL 服务,并执行如下命令,将从服务器连接到主服务器开始复制数据。
    bash
    CHANGE MASTER TO
    MASTER_HOST='master_host_name',
    MASTER_USER='replication',
    MASTER_PASSWORD='password',
    MASTER_PORT=3306,
    MASTER_CONNECT_RETRY=10;
    START SLAVE;

基于组复制

MySQL 5.7 引入了基于组复制的数据复制方式,可以在不同的机器之间进行数据同步。步骤如下:

  1. 在每个参与组复制的 MySQL 节点上,安装并启用 Group Replication 插件。
    bash
    INSTALL PLUGIN group_replication SONAME 'group_replication.so';
  2. 根据需求在节点中指定一个或多个主服务器。
    ```bash
    SET GLOBAL group_replication_bootstrap_group=ON;

START GROUP_REPLICATION;
3. 创建一个用于组同步的用户,并为其分配 REPLICATION SLAVE 权限。bash
CREATE USER 'repl_user'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON . TO 'repl_user'@'%';
4. 在每个节点上执行下列命令,将其连接到同一组:bash
SET GLOBAL group_replication_allow_local_disjoint_gtids_join=ON;

SET GLOBAL group_replication_bootstrap_group=OFF;

START GROUP_REPLICATION;
```
示例1:基于GTID的复制

  • 主服务器

在主服务器的my.cnf配置文件中,开启GTID功能,并指定日志文件路径和名称。

[mysqld]
gtid_mode=on
enforce_gtid_consistency=on
log-bin=mysql-bin
  • 从服务器

在从服务器的my.cnf配置文件中,开启GTID功能,指定唯一的 server_id,并设置 read-only。

[mysqld]
gtid_mode=on
enforce_gtid_consistency=on
server-id=2
log-bin=mysql-bin
relay-log=relay-bin
log-slave-updates=1
read-only=1

在从服务器上启动 MySQL 服务并执行如下命令,将从服务器连接到主服务器开始复制数据。需要注意的是,这里的 GTID 需要替换为从主服务器查询到的属于这个 GTID 所在事务内任何语句的集合。

CHANGE MASTER TO
    MASTER_HOST='database.domain.com',
    MASTER_USER='repl_user',
    MASTER_PASSWORD='yourpassword',
    MASTER_AUTO_POSITION=1;
START SLAVE;

示例2:基于半同步复制

  • 主服务器

在主服务器的my.cnf配置文件中开启半同步复制功能。

[mysqld]
plugin-load=semisync_master=semisync_master.so;semisync_slave=semisync_slave.so
rpl_semi_sync_master_enabled=1
rpl_semi_sync_master_timeout=1000000000
rpl_semi_sync_slave_enabled=1
  • 从服务器

在从服务器的my.cnf配置文件中,开启半同步复制功能,指定唯一的 server_id,并设置 read-only。

[mysqld]
plugin-load=semisync_master=semisync_master.so;semisync_slave=semisync_slave.so
rpl_semi_sync_slave_enabled=1
server-id=2
read-only=1

在从服务器上启动 MySQL 服务并执行如下命令,将从服务器连接到主服务器开始复制数据。

CHANGE MASTER TO
    MASTER_HOST='database.domain.com',
    MASTER_USER='repl_user',
    MASTER_PASSWORD='yourpassword',
    MASTER_PORT=3306,
    MASTER_CONNECT_RETRY=10;
START SLAVE;

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:MySQL 4种常用的主从复制架构 - Python技术站

(0)
上一篇 2023年5月21日
下一篇 2023年5月21日

相关文章

  • 详解Linux 中五个重启命令

    详解Linux中五个重启命令的完整攻略 在Linux系统中,有五个常用的命令可以重启系统。这些命令包括: reboot halt poweroff init 6 shutdown 接下来,我们将对这些命令进行详细的讲解,同时介绍它们各自的用法和示例。 1. reboot reboot 是一个常用的Linux命令,用于重启系统。 $ reboot 该命令会发出…

    database 2023年5月22日
    00
  • Mysql开启慢SQL并分析原因

    下面是详细讲解如何开启慢SQL并分析原因的完整攻略: 1. 开启慢SQL日志 MySQL 提供了慢查询日志功能,可以记录执行时间超过规定阈值的 SQL 语句。通过开启慢SQL日志,可以了解到哪些SQL查询语句执行缓慢,以便优化性能,提高查询效率。 1.1 修改my.cnf配置文件 首先,我们需要修改my.cnf配置文件,以开启慢SQL日志。在使用过程中,可能…

    database 2023年5月19日
    00
  • MySQL存储过程的深入讲解(in、out、inout)

    MySQL存储过程的深入讲解(in、out、inout) MySQL存储过程是一组SQL语句集合,它们被处理为单个单元并在MySQL服务器上以原子方式执行。存储过程将SQL语句封装在一个命名的块中,此块可以被多次调用。MySQL存储过程提供了多种类型的参数传递和返回值方式,包括in、out和inout类型的参数。 定义一个存储过程 在MySQL中,可以使用C…

    database 2023年5月21日
    00
  • MySQL修改和删除触发器(DROP TRIGGER)方法详解

    MySQL修改触发器的方法 使用命令SHOW TRIGGERS命令获取已经存在的触发器信息,确定要修改的触发器的名称。例如: SHOW TRIGGERS FROM database_name; 使用ALTER TRIGGER命令更新触发器。例如: ALTER TRIGGER trigger_name ON table_name [AFTER|BEFORE] …

    MySQL 2023年3月10日
    00
  • linux环境中常用的mysql命令介绍

    下面是“linux环境中常用的mysql命令介绍”的完整攻略: 1. 登录Mysql 在Linux中,可以通过以下命令登录到Mysql: mysql -h hostname -P port -u username -p hostname:Mysql服务器的主机名或IP地址; port:Mysql服务器的端口号,默认为3306; username:登录Mysq…

    database 2023年5月22日
    00
  • Oracle中sys和system用户、系统权限和角色的区别

    Oracle是一个功能非常强大的关系型数据库管理系统,它提供了多个预定义用户,如sys和system。本文将详细介绍sys和system 用户、系统权限和角色的区别。 1. sys用户和system用户的区别 1.1 sys用户 sys用户是Oracle系统级别的用户,是数据库管理员用户,在安装Oracle数据库后,会自动创建sys用户。sys用户是最高权限…

    database 2023年5月22日
    00
  • redis无法获取连接原因分析

    redis无法获取连接原因分析 1、linux开启与关闭redis服务器的方式 服务器的启动 启动服务器参数启动    redis-server –port 端口号 启动服务器–配置文件启动      redis-server  config_file_name(配置文件) 默认启动   redis-server 客户端启动 redis-cli [-h …

    Redis 2023年4月13日
    00
  • PHP开发注意事项总结

    PHP开发注意事项总结 1. 编码规范 PHP编码规范是优秀PHP应用程序的基础。坚持良好的编码规范可以使得代码更易于阅读、维护和升级。 1.1 使用PSR规范 PHP Standard Recommendations(PSR)是PHP社区的编码规范标准。遵循这些规范可以使得你的代码与其他PHP应用程序协同工作更为容易。具体的规范包括:PSR-1(基础编码规…

    database 2023年5月22日
    00
合作推广
合作推广
分享本页
返回顶部