首页主机资讯Debian MySQL如何数据同步

Debian MySQL如何数据同步

时间2025-12-05 15:21:03发布访客分类主机资讯浏览1122
导读:Debian 上 MySQL 数据同步实践 一、方案选型与准备 常见做法是基于 MySQL 的主从复制(Replication),实现主库写入、从库读取与近实时同步;也可用于在线迁移/一次性同步。复制方向通常为单向(Master → Sl...

Debian 上 MySQL 数据同步实践

一、方案选型与准备

  • 常见做法是基于 MySQL 的主从复制(Replication),实现主库写入、从库读取近实时同步;也可用于在线迁移/一次性同步。复制方向通常为单向(Master → Slave)。
  • 准备要点:
    • 两台 Debian 服务器已安装同系列 MySQL,网络互通,开放 3306 端口。
    • 建议开启 SSL/TLS 加密复制链路。
    • 主从库 server-id 唯一;主库启用 二进制日志(log_bin);从库启用 中继日志(relay_log)
    • 建议主从库 时间同步(NTP),避免复制延迟判断误差。

二、主从复制快速搭建(基于 Binary Log 位点)

  • 主库配置(示例路径:/etc/mysql/mysql.conf.d/mysqld.cnf 或 /etc/mysql/my.cnf)

    [mysqld]
    server-id            = 1
    log_bin              = /var/log/mysql/mysql-bin.log
    binlog_format        = ROW
    # 可选:仅同步指定库
    # binlog_do_db       = your_database_name
    # 建议开启 SSL
    ssl-ca   = /etc/mysql/cacert.pem
    ssl-cert = /etc/mysql/server-cert.pem
    ssl-key  = /etc/mysql/server-key.pem
    

    重启:sudo systemctl restart mysql

  • 主库创建复制用户并获取起始位点

    mysql>
         CREATE USER 'replicator'@'%' IDENTIFIED BY 'StrongPass!';
        
    mysql>
         GRANT REPLICATION SLAVE ON *.* TO 'replicator'@'%' REQUIRE SSL;
        
    mysql>
         FLUSH PRIVILEGES;
        
    
    mysql>
         FLUSH TABLES WITH READ LOCK;
        
    mysql>
         SHOW MASTER STATUS;
        
    -- 记录 File(如 mysql-bin.000001)与 Position(如 123)
    mysql>
         UNLOCK TABLES;
        
    
  • 从库配置

    [mysqld]
    server-id            = 2
    relay_log            = /var/log/mysql/mysql-relay-bin.log
    # 可选:级联复制时从库也写 binlog
    # log_bin            = /var/log/mysql/mysql-bin.log
    # log_slave_updates  = 1
    read_only            = 1
    

    重启:sudo systemctl restart mysql

  • 从库建立复制链路并启动

    mysql>
         CHANGE MASTER TO
           MASTER_HOST='master_ip',
           MASTER_USER='replicator',
           MASTER_PASSWORD='StrongPass!',
           MASTER_LOG_FILE='mysql-bin.000001',
           MASTER_LOG_POS=123,
           MASTER_SSL=1;
        
    
    mysql>
         START SLAVE;
        
    mysql>
     SHOW SLAVE STATUS\G
    -- 确认 Slave_IO_Running=Yes 且 Slave_SQL_Running=Yes
    

    验证:在主库写入数据,在从库查询是否一致。

三、常见变体与进阶

  • 仅同步指定库表:主库用 binlog_do_db,从库可用 replicate_do_dbreplicate-wild-do-table=your_db.% 精确控制。
  • 从库只读:设置 read_only=1(不影响复制线程),避免业务误写。
  • 级联复制:从库开启 log_binlog_slave_updates=1,作为上游主库继续向下游分发。
  • 复制格式:默认建议 ROW,在部分场景可选 MIXED;需结合业务与一致性要求评估。
  • 高可用增强:可引入 半同步复制(rpl_semi_sync_master/ slave) 提升数据到达从库的可靠性。

四、一次性迁移或大表初始化

  • 停机/低峰窗口内,使用 物理/热备工具(如 Percona XtraBackup) 从主库备份并在从库恢复,再启动复制,减少停机时间。
  • 无专用工具时,可用 rsync 直拷数据目录(示例):
    sudo rsync -aAXv \
      --exclude={
    "/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"}
         \
      user@source:/var/lib/mysql/ /var/lib/mysql/
    
    注意:拷贝前停止 MySQL,目标端配置 datadir 路径正确后再启动;确保两端 MySQL 版本兼容网络稳定

五、运维与故障排查

  • 关键检查:SHOW SLAVE STATUS\G 中关注
    • Slave_IO_Running / Slave_SQL_Running 是否为 Yes
    • Last_Error / Last_SQL_Error 错误详情;
    • Seconds_Behind_Master 延迟秒数。
  • 常见处理:
    • 复制中断:先 STOP SLAVE; ,按需 SET GLOBAL sql_slave_skip_counter=1; 跳过错误事件或修正数据/结构后 START SLAVE;
    • 位点错误:重新获取主库 SHOW MASTER STATUS 并用 CHANGE MASTER TO ... 指定新的 File/Position
    • 连接/权限/SSL:核对 MASTER_HOST/USER/PASSWORD、网络与防火墙、以及 REQUIRE SSL 配置;
    • 监控与告警:定期巡检复制状态与错误日志,设置延迟阈值告警。

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


若转载请注明出处: Debian MySQL如何数据同步
本文地址: https://pptw.com/jishu/764782.html
Debian环境下如何创建自定义环境变量 Debian MySQL如何连接远程

游客 回复需填写必要信息