数据库备份与恢复策略
使用可靠的备份保护数据:转储并恢复 PostgreSQL 和 MySQL 数据库,使用 cron 自动执行备份,并理解时间点恢复,从而应对磁盘故障和误操作。
数据库备份与恢复策略 是 CoddyKit 上的免费 Linux Server Deployment & SSH Mastery 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Linux Server Deployment & SSH Mastery 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Linux Server Deployment & SSH Mastery 课程共包含 4 节课。
备份是安全的一部分
您安装了数据库、限制了访问并保护了连接。但经过加固的服务器仍然容易受到磁盘故障、意外执行 DROP TABLE 或勒索软件的影响。
备份是最后一道防线。数据库的安全程度,取决于它最近一次经过测试的备份。
逻辑备份与物理备份
主要有两种方式:
- 逻辑备份 — 导出 SQL 语句或数据(例如
pg_dump、mysqldump)。可移植、易于阅读,但恢复速度较慢。 - 物理备份 — 复制原始数据文件。适合超大型数据库,恢复速度快,但与服务器版本绑定。
大多数设置都会从逻辑备份开始。
转储 PostgreSQL 数据库
pg_dump 可以导出单个数据库。自定义格式(-Fc)经过压缩,并支持选择性恢复。
pg_dump -U appuser -Fc mydb > mydb_$(date +%F).dump恢复 PostgreSQL
使用 pg_restore 恢复自定义格式的转储。对于纯 SQL 转储,则应将其通过管道传入 psql。
createdb -U appuser mydb_restored
pg_restore -U appuser -d mydb_restored mydb_2026-05-30.dump转储和恢复 MySQL
MySQL/MariaDB 使用 mysqldump 导出,并使用 mysql 导入。默认情况下,转储内容为纯 SQL。
mysqldump -u appuser -p mydb > mydb_$(date +%F).sql
mysql -u appuser -p mydb_restored < mydb_2026-05-30.sql备份所有数据库
要完整捕获整个服务器,两个数据库引擎都提供完整集群转储功能。这在进行重大升级或迁移之前非常有用。
pg_dumpall -U postgres > all_$(date +%F).sql
mysqldump -u root -p --all-databases > all_$(date +%F).sql使用 Cron 自动执行
需要您记得运行的备份,最终总会被遗忘。请使用 cron 安排任务。将转储命令放入脚本中,并让它每晚运行。
# crontab -e -> run at 02:30 every day
30 2 * * * /usr/local/bin/db_backup.sh >> /var/log/db_backup.log 2>&1简单的备份脚本
优秀的脚本会为文件添加时间戳,并清理旧文件,避免磁盘被填满。本示例会保留 14 天的转储。
#!/bin/bash
DIR=/var/backups/db
pg_dump -U appuser -Fc mydb > $DIR/mydb_$(date +%F).dump
find $DIR -name 'mydb_*.dump' -mtime +14 -delete异地存储
存放在同一台服务器上的备份,会随服务器一起损坏。请将转储复制到其他位置 — 对象存储、另一台主机,或两者兼用。
将 rsync 或云 CLI 作为备份脚本的最后一步。
rsync -avz /var/backups/db/ backup@remote:/srv/db_backups/
# or: aws s3 cp $DIR/mydb_$(date +%F).dump s3://my-bucket/时间点恢复
每日转储最多会丢失一天的数据。若要实现零数据丢失或将损失降至最低,请启用持续归档(PostgreSQL 中的 WAL 归档、MySQL 中的二进制日志)。结合基础备份后,您可以恢复到任意时刻。
这是生产数据库的最高标准。
最佳实践
让备份值得信赖:
- 定期测试恢复 — 未经测试的备份只是猜测
- 自动执行备份任务,并监控其失败情况
- 将副本存储在异地
- 保留多个备份代次,而不只是最新的一份
快速检查
测试您对备份的了解。
回顾
现在,您已经拥有数据库保护策略:
- 使用
pg_dump/mysqldump进行逻辑转储,并使用pg_restore/mysql进行恢复 - 使用完整集群转储支持迁移
- 通过 cron 自动执行并自动清理旧备份
- 使用异地副本和时间点恢复,将数据丢失降至最低
始终测试恢复操作 — 这将完成安全的数据库运行流程。
常见问题解答
「数据库备份与恢复策略」课时是免费的吗?
是的 — 「数据库备份与恢复策略」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Linux Server Deployment & SSH Mastery 课程的其余内容,请升级到 CoddyKit PRO。 Linux Server Deployment & SSH Mastery 课程共包含 4 节课。
「数据库备份与恢复策略」这节课中我会学到什么?
使用可靠的备份保护数据:转储并恢复 PostgreSQL 和 MySQL 数据库,使用 cron 自动执行备份,并理解时间点恢复,从而应对磁盘故障和误操作。 你通过在浏览器中直接运行的动手代码来练习 Linux Server Deployment & SSH Mastery,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Linux Server Deployment & SSH Mastery 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Linux Server Deployment & SSH Mastery 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。
「数据库备份与恢复策略」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Linux Server Deployment & SSH Mastery 课中编写并运行代码吗?
能。每节 Linux Server Deployment & SSH Mastery 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- 安装 PostgreSQL/MySQL
- 数据库用户与访问控制
- 保护数据库连接
- 数据库备份与恢复策略