MySQL的备份与恢复是数据库运维中最基础也最重要的工作,不同的业务场景需要选择不同的备份方式,合理搭配逻辑备份和物理备份才能最大化保障数据安全。

mysqldump逻辑备份操作
mysqldump是MySQL自带的逻辑备份工具,它会将数据库中的数据转换成SQL语句导出,适合数据量较小、需要跨版本迁移的场景。
基础全量备份
备份单个数据库的命令如下,导出的SQL文件包含所有表结构和数据插入语句:
# 备份test_db数据库,输出到test_db_backup.sql mysqldump -u root -p --databases test_db > test_db_backup.sql
如果需要备份所有数据库,可以添加--all-databases参数:
# 备份所有数据库 mysqldump -u root -p --all-databases > all_db_backup.sql
带增量标记的备份
如果需要做增量备份,需要开启MySQL的binlog日志,备份时记录当前的binlog位置:
# 备份时记录binlog位置,方便后续增量恢复 mysqldump -u root -p --databases test_db --master-data=2 > test_db_backup_with_binlog.sql
参数--master-data=2会将binlog位置和文件名以注释形式写入备份文件,恢复时可以快速定位增量日志起点。
mysqldump备份恢复
逻辑备份的恢复非常简单,直接执行导出的SQL文件即可:
# 恢复test_db数据库 mysql -u root -p test_db < test_db_backup.sql
如果是全量备份加增量备份的恢复,需要先恢复全量备份,再按顺序执行增量binlog日志:
# 先恢复全量备份 mysql -u root -p test_db < test_db_backup_with_binlog.sql # 再恢复增量binlog,假设全量备份记录的binlog是mysql-bin.000003,位置是154 mysqlbinlog --start-position=154 /var/lib/mysql/mysql-bin.000003 | mysql -u root -p test_db
物理备份操作
物理备份是直接复制数据库的数据文件,适合数据量大、需要快速备份恢复的场景,常用的工具是Percona XtraBackup,支持InnoDB引擎的热备份。
全量物理备份
首先安装Percona XtraBackup,然后执行全量备份命令:
# 全量备份,备份目录为/backup/full xtrabackup --backup --target-dir=/backup/full --user=root --password=your_password
备份完成后需要执行准备操作,让备份文件处于一致状态:
# 准备备份文件 xtrabackup --prepare --target-dir=/backup/full
增量物理备份
增量物理备份需要基于上一次全量或增量备份的目录:
# 基于全量备份做第一次增量备份,目录为/backup/inc1 xtrabackup --backup --target-dir=/backup/inc1 --incremental-basedir=/backup/full --user=root --password=your_password
物理备份恢复
恢复物理备份前需要先停止MySQL服务,清空原有数据目录:
# 停止MySQL服务 systemctl stop mysqld # 清空数据目录,假设数据目录是/var/lib/mysql rm -rf /var/lib/mysql/* # 恢复全量备份 xtrabackup --copy-back --target-dir=/backup/full # 修改数据目录权限 chown -R mysql:mysql /var/lib/mysql # 启动MySQL服务 systemctl start mysqld
如果有增量备份,需要先准备全量备份,再按顺序合并增量备份:
# 准备全量备份,加入增量合并参数 xtrabackup --prepare --target-dir=/backup/full --incremental-dir=/backup/inc1 # 后续恢复步骤和全量恢复一致
备份策略建议
实际生产中建议结合两种备份方式:
- 每天凌晨执行一次mysqldump全量逻辑备份,保留7天备份文件,用于小数据量的快速恢复
- 每周执行一次物理全量备份,每天执行物理增量备份,保留30天备份文件,用于大数据量的灾难恢复
- 定期校验备份文件的完整性,避免备份文件损坏导致无法恢复
注意:备份操作尽量在业务低峰期执行,避免影响线上服务性能,备份文件建议存储在不同物理机器上,防止单点故障导致备份丢失。