数据库备份与恢复命令手册

更新于 2026年8月14日

适用人群:需要定期备份数据库、或迁移 / 恢复数据的站长与运维。

核心概念

各数据库备份 / 恢复对照

数据库 备份 恢复
MySQL mysqldump mysql <source
PostgreSQL pg_dump psql <pg_restore
MongoDB mongodump mongorestore
Redis RDB 快照 / BGSAVE 替换 dump.rdb 后重启

实际示例

MySQL

# 备份单库 / 全部库
mysqldump -u root -p app > app_$(date +%F).sql
mysqldump -u root -p --all-databases > all.sql

# 恢复
mysql -u root -p app < app_2026-08-14.sql

PostgreSQL

pg_dump -U postgres app > app.sql        # 纯文本
pg_dump -U postgres -Fc app > app.dump    # 自定义格式(配合 pg_restore)

psql -U postgres app < app.sql
pg_restore -U postgres -d app app.dump

MongoDB

mongodump --db app --out /backup/          # 备份
mongorestore --db app /backup/app/          # 恢复

定时备份(cron 示例)

# 每天凌晨 3 点备份并保留文件名带日期
0 3 * * * mysqldump -u root -p'密码' app > /backup/app_$(date +\%F).sql

常见错误

  • ⚠️只在同一台服务器上备份,服务器损坏时备份也一起丢失——应异地 / 对象存储留存
  • ⚠️从没验证过备份能否恢复,真出事时才发现备份文件损坏或不完整
  • ⚠️在业务高峰对大库直接 mysqldump 锁表,影响线上——建议低峰期或用支持一致性快照的方式

对应工具

常见问题

mysqldump 会锁表影响线上吗?
InnoDB 表可加 `--single-transaction` 参数在一致性快照下导出、基本不锁表;MyISAM 表则会锁表,建议在低峰期操作。
备份文件应该放在哪里?
不要只放在数据库同一台机器上,应额外同步到异地服务器或对象存储,并定期做一次“恢复演练”验证备份可用。

相关教程

相关文章

官方资料来源