如何输入命令实现数据库的备份与恢复操作,有哪些详细步骤和注意事项?

更新于
2026-08-13 17:10:22
7阅读来源:SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

从概述来看,为什么备份与恢复是数据库管理员的头号任务

在日常运维中。数据丢失、误操作、硬件故障是最常见的痛点。一旦备份策略不完善或恢复步骤错误。就会导致业务长时间不可用,甚至产生巨额损失。怎么说呢,掌握各类数据库的标准化备份/恢复命令操作步骤还有注意事项很关键。

一、通用准备工作

  • 权限检查:确保执行备份/恢复的使用者拥有相应的程序和数据库权限。
  • 硬盘空间预估:全量备份往往占用大量存储,提前确认目标目录有足够空间。
  • 备份目录安全:使用专用目录并设置只读/只写权限,防止误删或被恶意篡改。
  • 定期验证:完成备份后立即执行一次校验,确保文件完整可用。
  • 记录日志:所有操作都要写入运维日志。包括时间、执行人、使用参数等,以便审计和回溯。按理说,

二、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 恢复流程简述

  1. 启动 RMAN 并连接 target/database。
  2. If needed,restore controlfile:
    CROSSCHECK BACKUP;RECOVER DATABASE USING BACKUP CONTROLFILE;
  3. 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 检测磁盘剩余空间、任务成功率还有校验失败情况。
        • 通过以上结构化步骤和针对性注意事项。即可帮助您快速定位“忘记目录”“权限不足”“恢复失败”等常见痛点,实现可靠且可持续的数据库保护方案。怎么说呢,


标签:备份

从概述来看,为什么备份与恢复是数据库管理员的头号任务

在日常运维中。数据丢失、误操作、硬件故障是最常见的痛点。一旦备份策略不完善或恢复步骤错误。就会导致业务长时间不可用,甚至产生巨额损失。怎么说呢,掌握各类数据库的标准化备份/恢复命令操作步骤还有注意事项很关键。

一、通用准备工作

  • 权限检查:确保执行备份/恢复的使用者拥有相应的程序和数据库权限。
  • 硬盘空间预估:全量备份往往占用大量存储,提前确认目标目录有足够空间。
  • 备份目录安全:使用专用目录并设置只读/只写权限,防止误删或被恶意篡改。
  • 定期验证:完成备份后立即执行一次校验,确保文件完整可用。
  • 记录日志:所有操作都要写入运维日志。包括时间、执行人、使用参数等,以便审计和回溯。按理说,

二、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 恢复流程简述

  1. 启动 RMAN 并连接 target/database。
  2. If needed,restore controlfile:
    CROSSCHECK BACKUP;RECOVER DATABASE USING BACKUP CONTROLFILE;
  3. 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 检测磁盘剩余空间、任务成功率还有校验失败情况。
        • 通过以上结构化步骤和针对性注意事项。即可帮助您快速定位“忘记目录”“权限不足”“恢复失败”等常见痛点,实现可靠且可持续的数据库保护方案。怎么说呢,


标签:备份