Debian MySQL如何数据同步
导读: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_db或replicate-wild-do-table=your_db.%精确控制。 - 从库只读:设置
read_only=1(不影响复制线程),避免业务误写。 - 级联复制:从库开启
log_bin与log_slave_updates=1,作为上游主库继续向下游分发。 - 复制格式:默认建议 ROW,在部分场景可选 MIXED;需结合业务与一致性要求评估。
- 高可用增强:可引入 半同步复制(rpl_semi_sync_master/ slave) 提升数据到达从库的可靠性。
四、一次性迁移或大表初始化
- 停机/低峰窗口内,使用 物理/热备工具(如 Percona XtraBackup) 从主库备份并在从库恢复,再启动复制,减少停机时间。
- 无专用工具时,可用 rsync 直拷数据目录(示例):
注意:拷贝前停止 MySQL,目标端配置sudo rsync -aAXv \ --exclude={ "/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} \ user@source:/var/lib/mysql/ /var/lib/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
