如何输入命令实现数据库的备份与恢复操作,有哪些详细步骤和注意事项?
- 内容介绍
- 文章标签
- 相关推荐
从概述来看,为什么备份与恢复是数据库管理员的头号任务
在日常运维中。数据丢失、误操作、硬件故障是最常见的痛点。一旦备份策略不完善或恢复步骤错误。就会导致业务长时间不可用,甚至产生巨额损失。怎么说呢,掌握各类数据库的标准化备份/恢复命令操作步骤还有注意事项很关键。
一、通用准备工作
- 权限检查:确保执行备份/恢复的使用者拥有相应的程序和数据库权限。
- 硬盘空间预估:全量备份往往占用大量存储,提前确认目标目录有足够空间。
- 备份目录安全:使用专用目录并设置只读/只写权限,防止误删或被恶意篡改。
- 定期验证:完成备份后立即执行一次校验,确保文件完整可用。
- 记录日志:所有操作都要写入运维日志。包括时间、执行人、使用参数等,以便审计和回溯。按理说,
二、Oracle 数据库
1. 数据泵全量备份
# 以 system 使用者登录
expdp system/123456@mydb \
DIRECTORY=DATA_PUMP_DIR \
DUMPFILE=mydb_$.dmp \
FULL=Y \
LOGFILE=expdp_mydb_$.log
常见痛点:
- 忘记在数据库中创建 DATA_PUMP_DIR 目录对象。话说回来,
- DUMPFILE 名称冲突导致覆盖旧文件。
2. Data Pump 恢复
# 恢复到同一实例或新实例
impdp system/123456@target_db \
DIRECTORY=DATA_PUMP_DIR \
DUMPFILE=mydb_202308101200.dmp \
FULL=Y \
LOGFILE=impdp_mydb_202308101200.log
3. RMAN 物理备份
# 启动 RMAN
rman target /
# 完整备份示例
BACKUP DATABASE PLUS ARCHIVELOG
FORMAT '/backup/oracle/%U'
TAG 'FULL_BACKUP';# 归档日志实时备份
BACKUP ARCHIVELOG ALL NOT BACKED UP 1 TIMES;
4. RMAN 恢复流程简述
- 启动 RMAN 并连接 target/database。
-
If needed,restore controlfile:
CROSSCHECK BACKUP;RECOVER DATABASE USING BACKUP CONTROLFILE; -
If only data files are missing:
SRCDB = 'ORCL';RESTORE DATABASE;RECOVER DATABASE;ALTER DATABASE OPEN RESETLOGS;
注意事项:
- RMAN 必须在同一版本或兼容版本下运行。
- AUTOPROMPT NONE 可避免交互式提示导致脚本卡死。
- 恢复前务必确认归档日志完整,否则无法完成 point‑in‑time recovery。
三、MySQL 数据库
a) 逻辑全量备份
# 单库全量导出
mysqldump -u root -p123456 \
--single-transaction \
--quick \
--lock-tables=false \
mydatabase> /backup/mydatabase_$.sql
b) 恢复——导入 .sql 文件
#
创建目标库
mysql -u root -p123456 -e "CREATE DATABASE IF NOT EXISTS mydatabase;"
# 导入数据
mysql -u root -p123456 mydatabase
Pain Point:
- Mysqldump 默认锁表,业务高峰期会出现响应卡顿;使用 --single-transaction 可以减少影响。
- .sql 文件过大时导入超时可通过 --max_allowed_packet 调大单包大小。按理说,
- Schemas 差异导致导入失败——务必在目标库上执行相同字符集和排序规则设置。
d) 增量/二进制日志备份
# 开启 binlog
log-bin=mysql-bin
expire_logs_days=7
# 定期拷贝 binlog 文件
cp /var/lib/mysql/mysql-bin.* /backup/binlog/
# 恢复时:
mysqlbinlog /backup/binlog/mysql-bin.000001 | mysql -u root -p123456
* 注意 *
-
PITR 必须保留完整的全量+增量二进制日志链。
定期清理过期 binlog 前,请先确认已经完成相应时间点的恢复演练。
四、Microsoft SQL Server
a) T‑SQL 全量备份命令
BACKUP DATABASE
TO DISK = N'D:\Backup\MyDatabase_$。''yyyymmdd_hhnnss'').bak'
WITH INIT,COMPRESSION,CHECKSUM,STATS = 10;
b) 恢复命令
RESTORE DATABASE
FROM DISK = N'D:\Backup\MyDatabase_20230810_120000.bak'
WITH REPLACE。RECOVERY,STATS = 10;
C) 使用 SSMS 图形化操作流程
-
恢复时:右键 “Databases” → Restore Database…→ 选择 “Device” 并添加对应 .bak 文件 → 勾选 “Overwrite existing database ” → 点击 OK。
-
Lack of backup retention policy leads to disk fill‑up – set up SQL Agent job with DELETE WHERE backup_date
If database is in use,RESTORE …WITH RECOVERY may fail –先将数据库设为 SINGLE_USER,接下来再恢复。 - Mismatched SQL Server versions cause “cannot restore from a backup taken on a later version”。务必保持版本一致或使用兼容模式。
五、PostgreSQL
a) 全量逻辑备份
# 自定义格式,支持并行恢复 pg_dump -U postgres \ -F c \ -b \ -v \ -f /backup/mydb_$.dump \ mydb# 创建空库 createdb -U postgres restoredb # 并行恢复示例 pg_restore -U postgres \ -d restoredb \ -j 4 \ /backup/mydb_20230810.dump- .dump 文件大小与压缩率不匹配时可加 –compress 参数提高压缩率。
- N/A schema mismatch – 在目标库上执行 `psql –c "CREATE SCHEMA ..."` 或者使用 `--no-owner` 避免所有权错误。
-
PITR 需要 WAL 日志配合 pg_basebackup,请确保 `archive_mode = on` 且已配置 archive_command。
六、MongoDB
a) 数据库快照备份
# 将整个实例或指定库导出为 BSON 文件夹结构 mongodump --host localhost --port 27017 \ --username admin --password secret \ --aunticationDatabase admin \ --out /backup/mongo_$ # 若只想导出单个库 mongodump --db mydb --out /backup/mongo_mydb_$# 删除已有同名集合后再导入,以免冲突 mongorestore --host localhost --port 27017 \ --username admin --password secret \ --aunticationDatabase admin \ --drop /backup/mongo_mydb_20230810/ # 若只想恢复单个集合 mongorestore --collection users --db mydb --drop /backup/mongo_mydb_20230810/mydb/users.bson * 常见痛点 *:
- Mongodump 默认不包含索引统计信息;若需完整复制,请加 `--gzip` 与 `--oplog` 参数。
- `--drop` 会删除目标集合,请务必在生产前做好快照。
-
Cassandra 等分片环境需要分别对每个节点执行 dump/restore。
七、与常用方法
-
制定统一的备份策略:
全量+增量组合:每天一次全量,每小时一次增量或 binlog/WAL;l i>保留周期:依据合规要求,一般保留最近30天到一年不等; - 自动化脚本 & 调度: 使用 cron / Windows Task Scheduler 或 DBMS 内置作业调度器。将上述命令封装成可重复执行的脚本,并加入邮件告警。
- 定期演练恢复: 至少每季度一次从真实备份文件进行完整恢复测试,验证 PITR 能力。
- 安全加固: 对敏感凭证使用密码管理工具;传输过程采用 SSH 隧道或 VPN;把备份文件放置在异地存储或对象存储。
- 监控与告警: 利用 Zabbix/Promeus 检测磁盘剩余空间、任务成功率还有校验失败情况。
-
制定统一的备份策略:
通过以上结构化步骤和针对性注意事项。即可帮助您快速定位“忘记目录”“权限不足”“恢复失败”等常见痛点,实现可靠且可持续的数据库保护方案。怎么说呢,
- Mismatched SQL Server versions cause “cannot restore from a backup taken on a later version”。务必保持版本一致或使用兼容模式。
从概述来看,为什么备份与恢复是数据库管理员的头号任务
在日常运维中。数据丢失、误操作、硬件故障是最常见的痛点。一旦备份策略不完善或恢复步骤错误。就会导致业务长时间不可用,甚至产生巨额损失。怎么说呢,掌握各类数据库的标准化备份/恢复命令操作步骤还有注意事项很关键。
一、通用准备工作
- 权限检查:确保执行备份/恢复的使用者拥有相应的程序和数据库权限。
- 硬盘空间预估:全量备份往往占用大量存储,提前确认目标目录有足够空间。
- 备份目录安全:使用专用目录并设置只读/只写权限,防止误删或被恶意篡改。
- 定期验证:完成备份后立即执行一次校验,确保文件完整可用。
- 记录日志:所有操作都要写入运维日志。包括时间、执行人、使用参数等,以便审计和回溯。按理说,
二、Oracle 数据库
1. 数据泵全量备份
# 以 system 使用者登录
expdp system/123456@mydb \
DIRECTORY=DATA_PUMP_DIR \
DUMPFILE=mydb_$.dmp \
FULL=Y \
LOGFILE=expdp_mydb_$.log
常见痛点:
- 忘记在数据库中创建 DATA_PUMP_DIR 目录对象。话说回来,
- DUMPFILE 名称冲突导致覆盖旧文件。
2. Data Pump 恢复
# 恢复到同一实例或新实例
impdp system/123456@target_db \
DIRECTORY=DATA_PUMP_DIR \
DUMPFILE=mydb_202308101200.dmp \
FULL=Y \
LOGFILE=impdp_mydb_202308101200.log
3. RMAN 物理备份
# 启动 RMAN
rman target /
# 完整备份示例
BACKUP DATABASE PLUS ARCHIVELOG
FORMAT '/backup/oracle/%U'
TAG 'FULL_BACKUP';# 归档日志实时备份
BACKUP ARCHIVELOG ALL NOT BACKED UP 1 TIMES;
4. RMAN 恢复流程简述
- 启动 RMAN 并连接 target/database。
-
If needed,restore controlfile:
CROSSCHECK BACKUP;RECOVER DATABASE USING BACKUP CONTROLFILE; -
If only data files are missing:
SRCDB = 'ORCL';RESTORE DATABASE;RECOVER DATABASE;ALTER DATABASE OPEN RESETLOGS;
注意事项:
- RMAN 必须在同一版本或兼容版本下运行。
- AUTOPROMPT NONE 可避免交互式提示导致脚本卡死。
- 恢复前务必确认归档日志完整,否则无法完成 point‑in‑time recovery。
三、MySQL 数据库
a) 逻辑全量备份
# 单库全量导出
mysqldump -u root -p123456 \
--single-transaction \
--quick \
--lock-tables=false \
mydatabase> /backup/mydatabase_$.sql
b) 恢复——导入 .sql 文件
#
创建目标库
mysql -u root -p123456 -e "CREATE DATABASE IF NOT EXISTS mydatabase;"
# 导入数据
mysql -u root -p123456 mydatabase
Pain Point:
- Mysqldump 默认锁表,业务高峰期会出现响应卡顿;使用 --single-transaction 可以减少影响。
- .sql 文件过大时导入超时可通过 --max_allowed_packet 调大单包大小。按理说,
- Schemas 差异导致导入失败——务必在目标库上执行相同字符集和排序规则设置。
d) 增量/二进制日志备份
# 开启 binlog
log-bin=mysql-bin
expire_logs_days=7
# 定期拷贝 binlog 文件
cp /var/lib/mysql/mysql-bin.* /backup/binlog/
# 恢复时:
mysqlbinlog /backup/binlog/mysql-bin.000001 | mysql -u root -p123456
* 注意 *
-
PITR 必须保留完整的全量+增量二进制日志链。
定期清理过期 binlog 前,请先确认已经完成相应时间点的恢复演练。
四、Microsoft SQL Server
a) T‑SQL 全量备份命令
BACKUP DATABASE
TO DISK = N'D:\Backup\MyDatabase_$。''yyyymmdd_hhnnss'').bak'
WITH INIT,COMPRESSION,CHECKSUM,STATS = 10;
b) 恢复命令
RESTORE DATABASE
FROM DISK = N'D:\Backup\MyDatabase_20230810_120000.bak'
WITH REPLACE。RECOVERY,STATS = 10;
C) 使用 SSMS 图形化操作流程
-
恢复时:右键 “Databases” → Restore Database…→ 选择 “Device” 并添加对应 .bak 文件 → 勾选 “Overwrite existing database ” → 点击 OK。
-
Lack of backup retention policy leads to disk fill‑up – set up SQL Agent job with DELETE WHERE backup_date
If database is in use,RESTORE …WITH RECOVERY may fail –先将数据库设为 SINGLE_USER,接下来再恢复。 - Mismatched SQL Server versions cause “cannot restore from a backup taken on a later version”。务必保持版本一致或使用兼容模式。
五、PostgreSQL
a) 全量逻辑备份
# 自定义格式,支持并行恢复 pg_dump -U postgres \ -F c \ -b \ -v \ -f /backup/mydb_$.dump \ mydb# 创建空库 createdb -U postgres restoredb # 并行恢复示例 pg_restore -U postgres \ -d restoredb \ -j 4 \ /backup/mydb_20230810.dump- .dump 文件大小与压缩率不匹配时可加 –compress 参数提高压缩率。
- N/A schema mismatch – 在目标库上执行 `psql –c "CREATE SCHEMA ..."` 或者使用 `--no-owner` 避免所有权错误。
-
PITR 需要 WAL 日志配合 pg_basebackup,请确保 `archive_mode = on` 且已配置 archive_command。
六、MongoDB
a) 数据库快照备份
# 将整个实例或指定库导出为 BSON 文件夹结构 mongodump --host localhost --port 27017 \ --username admin --password secret \ --aunticationDatabase admin \ --out /backup/mongo_$ # 若只想导出单个库 mongodump --db mydb --out /backup/mongo_mydb_$# 删除已有同名集合后再导入,以免冲突 mongorestore --host localhost --port 27017 \ --username admin --password secret \ --aunticationDatabase admin \ --drop /backup/mongo_mydb_20230810/ # 若只想恢复单个集合 mongorestore --collection users --db mydb --drop /backup/mongo_mydb_20230810/mydb/users.bson * 常见痛点 *:
- Mongodump 默认不包含索引统计信息;若需完整复制,请加 `--gzip` 与 `--oplog` 参数。
- `--drop` 会删除目标集合,请务必在生产前做好快照。
-
Cassandra 等分片环境需要分别对每个节点执行 dump/restore。
七、与常用方法
-
制定统一的备份策略:
全量+增量组合:每天一次全量,每小时一次增量或 binlog/WAL;l i>保留周期:依据合规要求,一般保留最近30天到一年不等; - 自动化脚本 & 调度: 使用 cron / Windows Task Scheduler 或 DBMS 内置作业调度器。将上述命令封装成可重复执行的脚本,并加入邮件告警。
- 定期演练恢复: 至少每季度一次从真实备份文件进行完整恢复测试,验证 PITR 能力。
- 安全加固: 对敏感凭证使用密码管理工具;传输过程采用 SSH 隧道或 VPN;把备份文件放置在异地存储或对象存储。
- 监控与告警: 利用 Zabbix/Promeus 检测磁盘剩余空间、任务成功率还有校验失败情况。
-
制定统一的备份策略:
通过以上结构化步骤和针对性注意事项。即可帮助您快速定位“忘记目录”“权限不足”“恢复失败”等常见痛点,实现可靠且可持续的数据库保护方案。怎么说呢,
- Mismatched SQL Server versions cause “cannot restore from a backup taken on a later version”。务必保持版本一致或使用兼容模式。

