温馨提示×

Debian MySQL复制功能详解

小樊
52
2025-08-30 01:26:48
栏目: 云计算

Debian MySQL复制功能主要基于主从复制(Master-Slave Replication)机制,实现数据从主服务器到从服务器的同步,以下是核心要点:

一、基础配置流程

  1. 主服务器配置

    • 编辑配置文件 /etc/mysql/mysql.conf.d/mysqld.cnf,设置唯一 server-id 和开启二进制日志:
      [mysqld]
      server-id = 1
      log_bin = /var/log/mysql/mysql-bin.log
      binlog_do_db = your_database_name  # 指定复制数据库(可选)
      
    • 重启MySQL服务:sudo systemctl restart mysql
    • 创建复制用户并授权:
      CREATE USER 'replicator'@'%' IDENTIFIED BY 'password';
      GRANT REPLICATION SLAVE ON *.* TO 'replicator'@'%';
      FLUSH PRIVILEGES;
      
    • 获取当前二进制日志位置:SHOW MASTER STATUS;,记录 FilePosition
  2. 从服务器配置

    • 编辑配置文件 /etc/mysql/mysql.conf.d/mysqld.cnf,设置唯一 server-id 和中继日志路径:
      [mysqld]
      server-id = 2
      relay_log = /var/log/mysql/mysql-relay-bin.log
      log_bin = /var/log/mysql/mysql-bin.log  # 可选,用于从库本地记录binlog
      
    • 重启MySQL服务。
    • 配置连接主服务器:
      CHANGE MASTER TO
      MASTER_HOST='master_ip',
      MASTER_USER='replicator',
      MASTER_PASSWORD='password',
      MASTER_LOG_FILE='recorded_log_file',
      MASTER_LOG_POS=recorded_position;
      
    • 启动复制:START SLAVE;
  3. 验证复制状态

    • 在从服务器执行 SHOW SLAVE STATUS\G,检查 Slave_IO_RunningSlave_SQL_Running 是否为 Yes,确保无错误。

二、关键组件与原理

  • 二进制日志(Binlog):主服务器记录所有数据变更的日志,从服务器通过读取该日志实现同步。
  • 中继日志(Relay Log):从服务器临时存储从主库接收的binlog,由SQL线程解析并应用到本地数据库。
  • 复制线程
    • I/O线程:从主库拉取binlog并写入中继日志。
    • SQL线程:执行中继日志中的SQL语句,更新从库数据。

三、高级功能与优化

  1. 半同步复制(Semi-Sync Replication)

    • 主库提交事务时需等待至少一个从库确认接收binlog,减少数据丢失风险(需安装插件):
      # 主库配置
      plugin-load = "rpl_semi_sync_master=semisync_master.so"
      rpl_semi_sync_master_enabled = 1
      
      # 从库配置
      plugin-load = "rpl_semi_sync_slave=semisync_slave.so"
      rpl_semi_sync_slave_enabled = 1
      
  2. 并行复制(Parallel Replication)

    • MySQL 5.7+支持基于库级或多线程并行应用binlog,提升从库处理速度:
      slave_parallel_type = LOGICAL_CLOCK
      slave_parallel_workers = 4  # 根据CPU核心数调整
      
  3. GTID(全局事务标识)

    • 通过唯一事务ID简化故障恢复和主从切换,避免依赖binlog文件名和位置:
      gtid_mode = ON
      enforce_gtid_consistency = ON
      

四、常见问题与解决方案

  • 复制延迟
    • 优化从库硬件(CPU/内存/SSD),减少大事务,启用并行复制。
    • 检查网络延迟,确保主从服务器时间同步(使用NTP)。
  • 数据不一致
    • 使用 pt-table-checksum 工具校验主从数据差异,通过 pt-table-sync 修复。
  • 权限问题
    • 确保复制用户仅拥有必要权限(REPLICATION SLAVE),避免使用root用户。

五、安全与维护建议

  • 定期备份主从服务器数据,使用 mysqldumpxtrabackup 工具。
  • 监控复制状态,设置告警规则(如延迟超过100秒触发告警)。
  • 生产环境中建议配置主从切换机制(如MHA或Orchestrator),提升高可用性。

参考来源

0