如何在mysql中配置复制相关参数

首先配置主库的server-id、log-bin和binlog-format等参数,创建复制用户并记录二进制日志位置;然后配置从库的server-id、relay-log等参数,设置只读模式,并使用CHANGE REPLICATION SOURCE TO命令连接主库启动复制;最后通过SHOW REPLICA STATUS检查复制状态,确保IO和SQL线程正常运行,无错误且延迟较低;需注意时间同步、防火墙、字符集一致性和避免从库写入等问题。

在 MySQL 中配置复制功能,主要是通过设置主库(Master)和从库(Slave/Replica)的相关参数来实现数据的同步。以下是关键步骤和需要配置的参数说明,适用于基于二进制日志(Binary Log)的传统主从复制。

1. 配置主库(Master)

要启用主库的复制功能,需在主库的配置文件 my.cnfmy.ini 中添加以下参数:

  • server-id:为每个 MySQL 实例设置唯一 ID,主库通常设为 1。
    server-id = 1
  • log-bin:启用二进制日志,并指定日志文件前缀。
    log-bin = mysql-bin
  • binlog-format:推荐使用 ROW 格式以提高复制准确性。
    binlog-format = row
  • binlog-do-db(可选):指定需要记录二进制日志的数据库,多个库需重复设置或使用脚本控制。
    binlog-do-db = your_database_name
  • expire-logs-days(可选):自动清理过期的 binlog 文件。
    expire-logs-days = 7

配置完成后重启 MySQL 服务,并创建用于复制的账号:

CREATE USER 'repl'@'%' IDENTIFIED BY 'your_password';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
FLUSH PRIVILEGES;

查看主库当前的二进制日志状态,以便从库连接时使用:

SHOW MASTER STATUS;

记下返回结果中的 FilePosition 值。

2. 配置从库(Slave)

在从库的配置文件中也需要设置唯一 ID 并可选择性启用中继日志:

  • server-id:必须与主库不同,例如设为 2。
    server-id = 2
  • relay-log(可选):自定义中继日志名称。
    relay-log = mysql-relay-bin
  • log-slave-updates(可选):如果该从库还要作为其他实例的主库,需开启此选项。
    log-slave-updates = 1
  • read-only(建议):防止从库被误写入。
    read-only = 1

重启从库 MySQL 服务后,执行命令连接到主库:

CHANGE REPLICATION SOURCE TO
  SOURCE_HOST='master_ip',
  SOURCE_USER='repl',
  SOURCE_PASSWORD='your_password',
  SOURCE_LOG_FILE='mysql-bin.000001',
  SOURCE_LOG_POS=154;
START REPLICA;

注意:MySQL 8.0.23 之后使用 CHANGE REPLICATION SOURCE TO,旧版本使用 CHANGE MASTER TO

3. 检查复制状态

运行以下命令查看从库是否正常工作:

SHOW REPLICA STATUS\G

重点关注以下字段:

  • Replica_IO_RunningReplica_SQL_Running 应为 Yes
  • Last_Error 应为空
  • Seconds_Behind_Master 显示延迟时间

4. 常见注意事项

  • 确保主从服务器时间同步(建议使用 NTP)
  • 防火墙开放 3306 端口,允许从库访问主库
  • 主从库的字符集和排序规则尽量保持一致
  • 避免在从库执行可能导致冲突的写操作
  • 定期监控复制延迟和错误日志

基本上就这些。只要主从配置正确、网络通畅、权限到位,MySQL 复制就能稳定运行。对于生产环境,建议结合监控工具进行持续观察。