类别:SQL数据库 / 日期:2025-12-11 / 浏览:10 / 评论:0
备份操作:
-- mysql是容器名,spd是数据库名,/root/spd_backup_temp/backup_before_restore.sql是centos里面的文件,不是容器里的
docker exec mysql mysqldump -u root -p spd > /root/spd_backup_temp/backup_before_restore.sql
还原操作:
直接在运行的MySQL容器中执行还原,不需要停止mysql容器
docker exec -i mysql mysql -u root -p spd < /root/spd_backup_temp/spd_20251118020001.sql
在CentOS系统上,将SQL备份文件恢复到Docker中的MySQL数据库,关键在于将备份文件导入到正在运行的MySQL容器里。下面为你梳理了详细的操作步骤和注意事项。
🔄 核心恢复步骤
准备备份文件
首先,确保你的备份文件 spd_20251118020001.sql 在CentOS宿主机上。如果备份文件是压缩格式(如.gz),需要先解压:gzip -d spd_20251118020001.sql.gz
如果你的gzip版本较旧不支持-k参数,解压后会删除原.gz文件。如果想保留原文件,可以先用cp命令复制一份再解压。如:
cp spd_20251118020001.sql.gz spd_20251118020001.sql.gz.backup复制备份文件到容器
使用 docker cp 命令将解压后的SQL文件复制到MySQL容器的临时目录中。请将 mysql-container 替换为你的实际容器名或ID。docker cp /path/to/your/spd_20251118020001.sql mysql-container:/tmp/
执行数据导入
通过 docker exec 命令在容器内执行 mysql 客户端,将备份文件导入到名为 spd 的数据库中。(容器外输入命令)docker exec -i mysql-container mysql -u root -p spd < /tmp/spd_20251118020001.sql
执行后会提示你输入MySQL的root密码。
【另一种方法】既然文件已经在容器内,直接在容器内执行导入:
# 进入容器 docker exec -it mysql bash # 在容器内执行导入 mysql -u root -p spd < /tmp/spd_20251118020001.sql
⚠️ 重要提醒与验证
❗ 数据备份与覆盖警告
在恢复前,请务必确认当前Docker中spd数据库的数据是否还需要。因为恢复操作会覆盖现有数据。如果spd数据库中有重要数据且无其他备份,操作前强烈建议先备份当前数据库-1-10:# 在宿主机执行,将当前spd数据库备份到backup_before_restore.sql docker exec mysql-container mysqldump -u root -p spd > /path/to/your/backup_before_restore.sql
🔍 验证恢复结果
导入完成后,建议连接至MySQL数据库验证数据是否完整恢复-1-10:# 登录MySQL命令行 docker exec -it mysql-container mysql -u root -p
在MySQL交互界面中,可以检查spd数据库的表和数据:
USE spd; SHOW TABLES; SELECT COUNT(*) FROM your_table_name; -- 选一张有代表性的表检查数据量
🛠️ 其他可行的恢复方法
除了上述核心方法,你也可以考虑:
直接通过管道解压并导入-6
如果备份文件是.gz格式,且不想手动解压,可以组合使用zcat和docker exec命令:zcat /path/to/your/spd_20251118020001.sql.gz | docker exec -i mysql-container mysql -u root -p spd
交互式导入
如果你更习惯在容器内部执行命令,也可以先进入容器,再使用source命令导入-1:# 1. 进入容器终端 docker exec -it mysql-container bash # 2. 在容器内部,登录MySQL mysql -u root -p # 3. 在MySQL命令行中,选择数据库并导入 mysql> USE spd; mysql> SOURCE /tmp/spd_20251118020001.sql;
希望这些步骤能帮助你顺利完成数据恢复。


