CentOS 上 WebLogic 的备份与恢复策略
一 策略总览
- 备份范围应覆盖:整个域目录 $DOMAIN_HOME(配置、部署、运行时文件)、关键配置文件(如 config.xml、boot.properties、running-managed-servers.xml)、内嵌 LDAP 安全数据(确保用户/组/角色一致)、以及应用与数据库(WAR/EAR 与业务数据分离备份)。
- 备份方式以文件系统快照/打包为主(如 tar/rsync),数据库采用RMAN 或 Data Pump等原生工具;日志建议用 Logrotate 做轮转与归档,而非纳入应用配置备份。
- 运行模式:对一致性要求极高的场景采用冷备(停域后备份);可接受短暂不一致的,采用热备(不停域,但需评估配置/部署变更风险)。
- 周期与保留:建议每日增量、每周全量,保留7–30 天并做异地/云端副本;建立监控与告警、定期恢复演练机制。
二 备份策略与实施
- 冷备流程(一致性最佳,适合变更窗口)
- 停域:在 $DOMAIN_HOME/bin 执行 ./stopWebLogic.sh;
- 打包域:执行 tar -czvf /backup/weblogic_domain_$(date +%F).tar.gz -C $DOMAIN_HOME .;
- 备份数据库:如 Oracle 使用 expdp 或 RMAN;
- 可选归档日志:拷贝 $DOMAIN_HOME/servers/ 下各 server 的 logs;
- 将备份传至异地/对象存储;
- 启动验证:执行 ./startWebLogic.sh 并检查控制台与业务。
- 热备流程(尽量缩短停机窗口)
- 避免变更:在备份窗口内禁止应用/数据源/JMS 等变更;
- 文件系统快照:对 $DOMAIN_HOME 所在磁盘做 LVM/云盘快照,或对关键子目录(如 config)做 tar/rsync;
- 数据库备份:执行 RMAN/Data Pump 等在线备份;
- 校验与复制:校验快照/归档完整性并异地复制。
- 自动化与增量
- 使用 rsync -avz --delete 做目录增量同步;
- 使用 crontab 定时执行脚本(如每日 2:00 全量打包并清理 7 天前备份);
- 日志轮转:配置 Logrotate 管理 server.log/access.log,避免日志挤占与备份膨胀。
三 恢复策略与步骤
- 场景 A:同版本、同路径恢复(最常见)
- 停域:执行 ./stopWebLogic.sh;
- 恢复域:将备份归档解压至 $DOMAIN_HOME(如 tar -xzvf backup.tar.gz -C $DOMAIN_HOME);
- 恢复数据库:按备份方式执行 impdp 或 RMAN 恢复;
- 启动与校验:执行 ./startWebLogic.sh,登录 Admin Console 检查数据源、部署、JMS、安全领域等是否正常。
- 场景 B:迁移/升级(版本或路径不同)
- 准备新环境:安装相同或兼容版本的 WebLogic;
- 恢复配置:将 config 等关键目录解压到新 $DOMAIN_HOME;
- 处理差异:按需调整 boot.properties、listen-address/port、JDBC/JMS 连接串;
- 启动与部署:启动后优先联机部署应用(避免直接覆盖新环境部署目录),校验通过后切流。
- 场景 C:仅配置漂移修复
- 对比并回滚 config.xml 与 config.xml.booted,必要时从备份中选择性恢复单个目录/文件。
四 关键注意事项与清单
- 一致性优先:涉及 JDBC 连接池、JMS 持久化、内嵌 LDAP 的变更,优先选择冷备或在维护窗口执行;
- 数据库分离:应用配置与业务数据分库分备,恢复时先数据库后应用;
- 安全合规:备份含凭据/密钥(如 boot.properties、SSL 证书),需加密存储与传输,并设置最小权限访问;
- 保留与异地:建议3-2-1 策略(3 份副本、2 种介质、1 份异地/云),并定期恢复演练验证可用性;
- 监控告警:对备份任务成功/失败、磁盘空间、保留清理建立监控与告警;
- 版本兼容:跨版本恢复需评估 XSD/序列化 兼容性,必要时先升级再迁移。
五 最小可用备份脚本示例
#!/bin/bash
DOMAIN_HOME="/home/weblogic/Oracle/Middleware/user_projects/domains/base_domain"
BACKUP_DIR="/opt/backup/weblogic"
DATE=$(date +%F_%H%M%S)
TAR_FILE="$BACKUP_DIR/weblogic_domain_$DATE.tar.gz"
mkdir -p "$BACKUP_DIR"
"$DOMAIN_HOME/bin/stopWebLogic.sh"
tar -czvf "$TAR_FILE" -C "$DOMAIN_HOME" .
"$DOMAIN_HOME/bin/startWebLogic.sh" &
find "$BACKUP_DIR" -name "weblogic_domain_*.tar.gz" -mtime +7 -delete
- 定时任务示例(每天 2:00):
0 2 * * * /opt/backup/backup_weblogic.sh >> /var/log/weblogic_backup.log 2>&1