MySQL 使用复制进行备份,主要是通过主从复制(Master-Slave Replication)机制,在从库(Slave)上保留一份实时或近实时的数据副本。这份副本可以用于灾难恢复、读写分离,也可以作为物理或逻辑备份的基础。
一、主从复制原理简述
主库将数据变更记录到二进制日志(Binary Log),从库通过 I/O 线程读取主库的 Binary Log 并写入自己的中继日志(Relay Log),再由 SQL 线程重放这些日志,实现数据同步。
利用这一机制,可以在从库上执行备份操作,避免对主库性能造成影响。
二、配置主从复制的基本步骤
1. 配置主库(Master)
启用二进制日志:在 my.cnf 或 my.ini 中添加log-bin=mysql-bin
server-id=1
binlog-format=ROW
CREATE USER 'repl'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
FLUSH PRIVILEGES;
SHOW MASTER STATUS;
2. 配置从库(Slave)
在 my.cnf 中设置唯一 server-id:server-id=2
重启服务后,执行 CHANGE MASTER 命令:CHANGE MASTER TO
MASTER_HOST='主库IP',
MASTER_USER='repl',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=154;
START SLAVE;
检查复制状态:SHOW SLAVE STATUS\G
确保 Slave_IO_Running 和 Slave_SQL_Running 都为 Yes。
三、基于从库的备份方法
一旦主从复制正常运行,就可以在从库上进行安全备份。
1. 逻辑备份(推荐日常使用)
使用 mysqldump 在从库导出数据:mysqldump -u root -p --single-transaction --master-data=2 --all-databases > backup.sql
--single-transaction:保证一致性,适用于 InnoDB --master-data=2:记录当前 Binary Log 位置,便于后续恢复或搭建新从库2. 物理备份(适合大数据量)
使用 Percona XtraBackup 工具:xtrabackup --backup --target-dir=/data/backup/
备份完成后可停止从库 SQL 线程,确保数据静止:STOP SLAVE SQL_THREAD;
# 执行备份
START SLAVE SQL_THREAD;
四、注意事项与最佳实践
定期检查从库延迟(Seconds_Behind_Master) 备份前确认从库已完全同步,避免备份不一致数据 不要在主库直接停写来等待从库追上,应监控并处理复制异常 备份文件应异地存储,并定期验证可恢复性 考虑使用 GTID 模式简化复制管理基本上就这些。通过主从复制做备份,核心是“用从库承担备份压力”,既保障主库稳定,又能获得可靠的数据副本。
