mysql全量备份后的恢复操作需要根据备份的类型采用不同的方法,常见的全量备份分为逻辑备份和物理备份两类,下面分别介绍对应的恢复流程。

逻辑备份恢复方法
使用mysqldump工具生成的全量备份属于逻辑备份,备份文件是包含SQL语句的文本文件,恢复时直接执行备份文件中的SQL即可。
恢复单个数据库
如果备份的是单个数据库,恢复步骤如下:
- 先登录mysql服务,创建需要恢复的空数据库(如果原数据库已存在可跳过此步)
- 退出mysql命令行,在系统终端执行恢复命令
具体命令示例如下:
# 创建空数据库 mysql -u root -p -e "CREATE DATABASE IF NOT EXISTS test_db" # 执行备份文件恢复数据 mysql -u root -p test_db < /backup/test_db_full_20240101.sql
恢复所有数据库
如果备份的是所有数据库,备份文件中已经包含创建数据库的语句,直接执行恢复命令即可:
mysql -u root -p < /backup/all_db_full_20240101.sql
物理备份恢复方法
物理备份是直接复制mysql的数据目录文件,恢复时需要停止mysql服务,替换数据目录后重启服务。
恢复步骤
- 停止运行的mysql服务
- 备份当前的数据目录(防止恢复失败时可以回滚)
- 将全量备份的数据目录文件复制到mysql的数据目录下
- 修改数据目录的文件权限为mysql运行用户所有
- 启动mysql服务
具体命令示例如下:
# 停止mysql服务 systemctl stop mysqld # 备份当前数据目录 cp -r /var/lib/mysql /var/lib/mysql_bak # 复制备份文件到数据目录 cp -r /backup/mysql_data_20240101/* /var/lib/mysql/ # 修改权限 chown -R mysql:mysql /var/lib/mysql # 启动mysql服务 systemctl start mysqld
恢复注意事项
- 恢复前建议先验证备份文件的完整性,避免恢复到损坏的备份文件
- 恢复全量备份前如果数据库还在运行,建议先停止业务写入,防止恢复过程中产生新数据冲突
- 物理备份恢复时,mysql的版本需要和备份时的版本一致,避免版本不兼容导致启动失败
- 恢复完成后建议检查数据表的数量和核心数据是否正常,确认恢复成功
常见问题排查
如果恢复后mysql服务无法启动,可以查看mysql的错误日志,通常位于/var/log/mysqld.log,根据日志提示排查权限、版本、文件损坏等问题。如果恢复后数据不完整,需要检查备份文件是否完整,或者是否在备份过程中有未提交的事务未包含在内。