实现 MySQL 主从 指定同步日志

概述

在 MySQL 中,主从复制是一种常用的数据同步机制,可以通过将主数据库的更改同步到从数据库,实现数据的备份、读写分离等功能。在实际应用中,可以通过指定同步日志来控制主从之间的数据同步。

本文将介绍如何实现 MySQL 主从指定同步日志的步骤和代码示例。

流程图

pie
title 主从同步日志流程图
"配置主数据库" : 30
"配置从数据库" : 20
"启动主数据库" : 15
"启动从数据库" : 15
"配置主从同步" : 20

步骤说明

配置主数据库

  1. 在主数据库上修改 my.cnf 配置文件,开启二进制日志功能。

    # 打开配置文件
    vi /etc/my.cnf
    
    # 修改配置
    [mysqld]
    log-bin=mysql-bin
    server-id=1
    
    • log-bin=mysql-bin:开启二进制日志,并指定日志文件的前缀为 mysql-bin
    • server-id=1:设置主数据库的唯一标识。
  2. 重启主数据库使配置生效。

    # 重启 MySQL 服务
    systemctl restart mysqld
    

配置从数据库

  1. 在从数据库上修改 my.cnf 配置文件,开启二进制日志功能。

    # 打开配置文件
    vi /etc/my.cnf
    
    # 修改配置
    [mysqld]
    log-bin=mysql-bin
    server-id=2
    
    • log-bin=mysql-bin:开启二进制日志,并指定日志文件的前缀为 mysql-bin
    • server-id=2:设置从数据库的唯一标识。
  2. 重启从数据库使配置生效。

    # 重启 MySQL 服务
    systemctl restart mysqld
    

启动主数据库

  1. 进入 MySQL 控制台,创建用于同步的账户,并授权。

    # 进入 MySQL 控制台
    mysql -u root -p
    
    # 创建账户
    CREATE USER 'repl'@'%' IDENTIFIED BY 'password';
    
    # 授权账户
    GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
    
  2. 查看主数据库当前的二进制日志文件名称和位置。

    SHOW MASTER STATUS;
    

    记录下 FilePosition 的值,后续配置从数据库时会使用到。

启动从数据库

  1. 进入 MySQL 控制台,配置从数据库同步主数据库的信息。

    # 进入 MySQL 控制台
    mysql -u root -p
    
    # 配置主数据库信息
    CHANGE MASTER TO
    MASTER_HOST='主数据库IP地址',
    MASTER_USER='repl',
    MASTER_PASSWORD='password',
    MASTER_LOG_FILE='上一步记录的File值',
    MASTER_LOG_POS=上一步记录的Position值;
    
    • MASTER_HOST:主数据库的 IP 地址。
    • MASTER_USER:用于同步的账户名称。
    • MASTER_PASSWORD:用于同步的账户密码。
    • MASTER_LOG_FILE:主数据库当前的二进制日志文件名称。
    • MASTER_LOG_POS:主数据库当前的二进制日志位置。
  2. 启动从数据库的同步进程。

    START SLAVE;
    
  3. 查看从数据库的同步状态。

    SHOW SLAVE STATUS\G
    

    检查 Slave_IO_RunningSlave_SQL_Running 是否为 Yes,表示从数据库已成功连接到主数据库并开始同步数据。

总结

通过以上步骤,我们可以实现 MySQL 主从指定同步日志的配置和启动。主从同步能够保证数据的一致性和可用性,提高数据库的可靠性和性能。在实际应用中,可以根据需求来选择合适的同步策略和配置参数,来满足业务的需求。