首页主机资讯Linux MySQL复制功能如何设置

Linux MySQL复制功能如何设置

时间2025-12-12 11:48:06发布访客分类主机资讯浏览490
导读:Linux MySQL复制功能设置指南 一 环境准备与核心概念 准备两台 Linux 服务器并安装 MySQL 5.7/8.0,确保网络互通、时间同步(建议 NTP)。 规划唯一的 server-id(主从不能相同),主库开启 二进制日志...

Linux MySQL复制功能设置指南

一 环境准备与核心概念

  • 准备两台 Linux 服务器并安装 MySQL 5.7/8.0,确保网络互通、时间同步(建议 NTP)。
  • 规划唯一的 server-id(主从不能相同),主库开启 二进制日志(binlog),从库启用 中继日志(relay-log)
  • 复制线程:从库的 I/O 线程负责从主库拉取 binlog 写入中继日志,SQL 线程重放中继日志到从库数据。
  • 常见用途:数据冗余读写分离高可用与灾备

二 主库配置步骤

  • 编辑配置文件(路径因发行版不同可能为 /etc/my.cnf/etc/mysql/mysql.conf.d/mysqld.cnf),在 [mysqld] 段加入:
    [mysqld]
    server-id=1
    log-bin=mysql-bin
    binlog_format=ROW
    # 可选:仅复制指定库
    # binlog_do_db=your_db
    # 可选:忽略系统库
    # binlog_ignore_db=mysql
    
    保存后重启 MySQL:sudo systemctl restart mysql
  • 创建复制专用账号并授权(建议限制来源 IP):
    CREATE USER 'repl'@'从库IP或网段' IDENTIFIED BY 'StrongPass!';
        
    GRANT REPLICATION SLAVE ON *.* TO 'repl'@'从库IP或网段';
        
    FLUSH PRIVILEGES;
        
    
  • 获取复制起点(File 与 Position):
    FLUSH TABLES WITH READ LOCK;
        
    SHOW MASTER STATUS;
        
    
    记录输出中的 FilePosition,随后执行 UNLOCK TABLES;
  • 一致性初始化数据(任选其一):
    • 逻辑备份(停机影响小):
      mysqldump -uroot -p --all-databases --single-transaction --master-data=2 >
           backup.sql
      
      将备份文件拷贝到从库并导入:mysql -uroot -p < backup.sql
    • 物理备份(停机窗口短,适合大库):使用 Percona XtraBackup 在线备份并在从库恢复。

三 从库配置步骤

  • 编辑配置文件,设置唯一 server-id 与中继日志:
    [mysqld]
    server-id=2
    relay-log=relay-bin
    # 可选:从库只读(对超级用户无效)
    # read_only=ON
    # 可选:级联复制时开启
    # log_slave_updates=1
    
    保存后重启 MySQL:sudo systemctl restart mysql
  • 导入主库备份(如使用逻辑备份),然后配置主从连接信息(将参数替换为实际值):
    CHANGE MASTER TO
      MASTER_HOST='主库IP',
      MASTER_USER='repl',
      MASTER_PASSWORD='StrongPass!',
      MASTER_PORT=3306,
      MASTER_LOG_FILE='mysql-bin.000001',
      MASTER_LOG_POS=154;
        
    START SLAVE;
        
    
  • 检查复制状态(关键字段必须为 Yes):
    SHOW SLAVE STATUS\G
    
    关注:Slave_IO_RunningSlave_SQL_RunningSeconds_Behind_Master、以及 Last_IO_Error/Last_SQL_Error

四 验证与常用运维

  • 快速验证:在主库插入测试数据,在从库 SELECT 验证是否同步;观察 SHOW SLAVE STATUS\GSeconds_Behind_Master 是否接近 0
  • 常见故障处理:
    • 认证或网络问题:核对 MASTER_USER/PASSWORD、来源 IP、端口 3306、以及防火墙/安全组策略。
    • 起点不一致:使用主库最新 SHOW MASTER STATUSFile/Position 重新 CHANGE MASTER TO;或基于备份的 --master-data 自动嵌入起点。
    • SQL 错误:依据 Last_SQL_Error 定位 DDL/DML 冲突,必要时在从库跳过错误事件(谨慎使用 SET GLOBAL sql_slave_skip_counter=1; )后重建复制位点。
  • 维护与优化:
    • 定期备份与监控复制延迟;必要时启用从库多线程复制(如 slave_parallel_workers,MySQL 5.7+)。
    • 主库 binlog 保留策略:expire_logs_days(如设置为 7)避免磁盘占满。

五 进阶方案与注意事项

  • 基于 GTID 的复制(推荐):在配置文件加入 gtid_mode=ONenforce_gtid_consistency=ON,从库 CHANGE MASTER TO ... 时不指定文件与位置,由 GTID 自动定位,故障切换与恢复更简单。
  • 双主复制:两节点互为主从,注意自增主键冲突与更新冲突控制,适合高可用与就近写入场景。
  • 组复制(MGR):多节点强一致复制,提供自动故障转移与弹性扩展,适合更高要求的集群化部署。
  • 安全建议:复制账号仅授予 REPLICATION SLAVE 权限,限制来源 IP,使用强密码并定期轮换;对外网环境禁用不必要的远程 root 登录。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Linux MySQL复制功能如何设置
本文地址: https://pptw.com/jishu/770357.html
Linux MySQL安装过程需要注意什么 pgadmin在ubuntu上的安装步骤

游客 回复需填写必要信息