Debian Node.js的备份与恢复策略是什么
导读:Debian Node.js 备份与恢复策略 一 备份范围与分层 代码与依赖:优先托管在 Git;在服务器侧保留可部署的发布包(如 tar.gz),并确保有 package.json 与 package-lock.json/yarn.lo...
Debian Node.js 备份与恢复策略
一 备份范围与分层
- 代码与依赖:优先托管在 Git;在服务器侧保留可部署的发布包(如 tar.gz),并确保有 package.json 与 package-lock.json/yarn.lock,便于精确还原依赖版本。
- 数据与配置:备份业务数据目录(如 uploads/、data/)、环境变量与敏感配置(如 .env)、以及反向代理/进程管理配置(如 Nginx、PM2 配置)。
- 日志:运行时日志建议用 logrotate 做按日轮转与压缩;历史归档与异地留存可用 rsync 或脚本化打包后同步到备份存储。
- 数据库:按所用数据库类型选择原生工具(如 MySQL 用 mysqldump、PostgreSQL 用 pg_dump、MongoDB 用 mongodump),并与应用备份时间窗口对齐。
二 备份策略与工具
- 代码与发布包
- 打包发布:
tar -czvf project-$(date +%F).tar.gz -C /path/to/project .;恢复:tar -xzvf project-*.tar.gz -C /opt/app & & npm ci --only=production。
- 打包发布:
- 文件级增量与远程同步
- 本地/远程镜像:
rsync -av --delete /src/ user@backup:/dst/;适合按日/小时做增量同步与快速回滚。
- 本地/远程镜像:
- 数据库备份
- MySQL:
mysqldump -u[user] -p[pass] --single-transaction --routines --triggers --hex-blob [db] > backup.sql - PostgreSQL:
pg_dump -U[user] -F c -b -v -f backup.dump [db] - MongoDB:
mongodump --db [db] --out /backup/mongo/$(date +%F)
- MySQL:
- 日志轮转与归档
- logrotate 配置示例(/etc/logrotate.d/nodejs):
如需归档到备份目录,可配合简单脚本每日打包并同步到远端。/var/log/nodejs/*.log { daily rotate 7 missingok notifempty compress delaycompress sharedscripts postrotate systemctl reload pm2-< app> .service > /dev/null 2> & 1 || true endscript }
- logrotate 配置示例(/etc/logrotate.d/nodejs):
- 自动化调度
- 使用 cron 定时执行备份脚本(如每日 02:00 代码与数据库、每小时日志归档),并在脚本中记录执行结果与退出码,便于告警与审计。
三 恢复流程与演练
- 标准恢复步骤
- 准备环境:在新/原服务器安装匹配的 Node.js 运行时与全局依赖;恢复 Nginx/PM2 配置。
- 代码与依赖:将发布包解压至目标目录,执行
npm ci --only=production还原精确依赖。 - 数据与配置:恢复 .env 与数据目录;如有权限/密钥,校验一致性。
- 数据库:按引擎导入(如
mysql < backup.sql、pg_restore -d [db] backup.dump、mongorestore --db [db] /backup/mongo/...)。 - 日志:如需历史日志,先恢复 logrotate 状态,再按需解压归档。
- 启动与自检:启动服务(如
pm2 startOrRestart ecosystem.config.js),检查端口、进程、关键业务自检接口。
- 演练与验证
- 定期在预备环境做全量恢复演练,核对数据一致性与可用性;为关键步骤编写回滚预案(如保留最近 N 个可回滚版本)。
四 安全与运维要点
- 机密与合规:备份中避免明文存放密码/密钥;对敏感文件设置 600 权限;必要时加密归档并管控密钥生命周期。
- 存储与保留:至少保留 7–30 天 的历史;采用“本地快速回滚 + 远端/离线归档”的双地三中心思路;定期清理过期备份。
- 监控与告警:监控备份任务退出码与备份体积异常;对日志增长设置阈值告警(如单日志超过 100MB 触发预警),便于提前扩容或归档。
- 进程管理:使用 PM2 的集群/守护能力,在 logrotate 的 postrotate 中通过
systemctl reload pm2-< app> .service或pm2 reload < app>发送信号,确保日志句柄平滑切换。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Debian Node.js的备份与恢复策略是什么
本文地址: https://pptw.com/jishu/773492.html
