主从架构下利用从库做自动化冷备的核心思路是不依赖实时复制,而是定期将从库作为静态快照源,通过mysqldump或物理拷贝生成一致备份并自动归档;选从库因负载低、只读,可避主库停服与锁表影响;脚本需校验延迟、判断返回码、记录时间戳与IP、压缩上传并保留7天;大库建议物理冷备,配合STOP/START SLAVE及position记录,恢复时跳过auto.cnf和binlog,并定期验证restore流程。
主从架构下利用从库做自动化冷备,核心思路是:**不依赖实时复制,而是定期把从库当作“静态快照源”,用 mysqldump 或物理拷贝方式生成一致备份,并自动归档**。这种方式规避了主库压力,又比纯主库冷备更安全——因为从库已同步过数据,且可选在低峰期停服或锁表,保障一致性。
主库承担写入和业务流量,直接冷备需停服务或全局锁表,影响线上;而从库通常只读、负载低,更适合执行耗时的 dump 或文件拷贝操作。只要从库延迟可控(比如
整个流程分三步:停同步 → 导出 → 恢复同步。重点在于保证导出瞬间数据静止。
STOP SLAVE;,确保 relay log 不再更新,此时从库数据定格FLUSH TABLES WITH READ LOCK;,防止其他会话写入(注意:仅对 MyISAM 严格生效;InnoDB 下配合 --single-transaction 更稳妥)mysqldump -u root -p --all-databases --single-transaction --routines --triggers > backup_$(date +%Y%m%d_%H%M%S).sql,--single-transaction 对 InnoDB 保证一致性快照UNLOCK TABLES; 和 START SLAVE;
用 shell 脚本封装上述逻辑,再通过 cron 定时触发。关键要处理异常退出和状态检查。
SHOW SLAVE STATUSG 中 Seconds_Behind_Master 是否 ≤ 5,超时则中止&& 判断返回码,失败时发邮件告警并清理临时文件0 2 * * * /opt/backup/backup_slave.sh >> /var/log/backup_slave.log 2>&1(每天凌晨 2 点执行)若数据库较大(>100GB),mysqldump 效率低,可改用物理冷备:
STOP SLAVE; + FLUSH TABLES WITH READ LOCK;
rsync -avz /var/lib/mysql/ /backup/mysql_$(date +%Y%m%d)/(确保目标目录有足够空间)START SLAVE;
SHOW MASTER STATUS; 的 position,用于后续搭建新从库时定位起点auto.cnf 和 binlog 文件,避免 UUID 冲突和日志错乱不复杂但容易忽略:每次备份后都该验证一次 restore 流程——哪怕只挑一个库做测试导入,能早一步发现权限、字符集或路径问题。