本文目录导读:

备份数据库的方法取决于你使用的数据库类型(如 MySQL、PostgreSQL、MongoDB 等)以及你的具体需求(如全量备份、增量备份、实时同步),以下是针对主流数据库的常见备份工具和操作步骤。
MySQL 备份
使用官方工具 mysqldump(逻辑备份)
-
适用场景:中小规模数据库、需要跨版本迁移、备份表结构。
-
命令示例:
# 备份单个数据库到文件 mysqldump -u root -p your_database_name > backup.sql # 压缩备份 mysqldump -u root -p your_database_name | gzip > backup.sql.gz # 备份所有数据库 mysqldump -u root -p --all-databases > all_databases.sql # 恢复数据库 mysql -u root -p your_database_name < backup.sql
使用物理备份工具 XtraBackup(Percona)
-
适用场景:大数据量、需要在备份期间不锁表、支持增量备份。
-
安装:
apt install percona-xtrabackup(Ubuntu)。 -
命令示例:
# 全量备份 xtrabackup --backup --target-dir=/backup/mysql/full # 准备备份(使备份可恢复) xtrabackup --prepare --target-dir=/backup/mysql/full # 增量备份(基于上一全量) xtrabackup --backup --target-dir=/backup/mysql/inc1 --incremental-basedir=/backup/mysql/full
使用云服务或控制面板
- 如果使用 AWS RDS,可直接在 AWS 控制台创建手动快照,或启用自动备份。
- 如果是通过 phpMyAdmin、MySQL Workbench 等图形界面,点击“导出”按钮即可。
PostgreSQL 备份
使用 pg_dump(逻辑备份)
# 备份单个数据库(自定义格式,压缩且灵活) pg_dump -U postgres -F c your_db > backup.dump # 恢复(使用 pg_restore) pg_restore -U postgres -d your_db backup.dump # 备份为纯文本 SQL pg_dump -U postgres your_db > backup.sql
使用 pg_basebackup(物理备份,适合流复制)
pg_basebackup -D /backup/pgsql -Fp -Xs -P -U replicator -h localhost
使用 pg_dumpall 备份所有数据库
pg_dumpall -U postgres > all_dbs.sql
MongoDB 备份
使用 mongodump(逻辑备份,BSON 格式)
# 备份所有数据库 mongodump --out /backup/mongo/ # 备份特定数据库 mongodump --db your_db --out /backup/mongo/ # 恢复 mongorestore /backup/mongo/
使用 mongosh 直接导出 JSON(适合部分数据)
// 在 mongosh 中 use your_db db.your_collection.find().toArray() // 然后用 shell 重导向至文件
使用 Atlas(云服务)
在 MongoDB Atlas 中,直接启用“Cloud Backup”即可,支持时间点恢复。
通用工具与方案
使用 pgdump(Linux 下通用压缩打包)
# 对 MySQL 的 .sql 文件或 PostgreSQL 的 .dump 文件进行压缩 tar -czvf db_backup_$(date +%Y%m%d).tar.gz /path/to/backup/directory
使用 rsync 或 scp 远程备份
# 本地备份后远程同步 rsync -avz /backup/ user@remote_host:/remote_backup/
使用自动化工具(cron + 脚本)
创建 /usr/local/bin/backup_db.sh:
#!/bin/bash
DATE=$(date +%Y%m%d_%H%M%S)
mysqldump -u root -p'yourpassword' your_db | gzip > /backup/${DATE}_backup.sql.gz
# 可选:删除7天前的备份
find /backup -name "*.sql.gz" -mtime +7 -delete
然后设置 cron 任务:
crontab -e # 每天凌晨2点执行 0 2 * * * /usr/local/bin/backup_db.sh
备份注意事项
- 权限控制:确保备份文件只对
root或backup用户可读。 - 存储位置:不要和数据库放在同一台机器或磁盘,最好上传到对象存储(如 AWS S3、阿里云 OSS)。
- 校验完整性:恢复操作前先测试备份文件是否可用(使用
--verify或手动恢复到一个测试库)。 - 备份频率:核心业务考虑每小时一次增量 + 每日一次全量。
常见场景推荐
| 数据库类型 | 推荐工具 | 说明 |
|---|---|---|
| MySQL 小型 | mysqldump |
简单、通用 |
| MySQL 大型 | XtraBackup |
不锁表、支持增量 |
| PostgreSQL | pg_dump + cron |
灵活、支持压缩 |
| MongoDB | mongodump |
BSON 格式,恢复快 |
| 所有数据库 | 云服务提供的自动备份 | 无需维护,但需付费 |
如果你具体使用某种数据库,可以告诉我,我可以提供更精确的备份脚本或配置。
标签: 数据库备份
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。