温馨提示×

如何备份Linux WebLogic域

小樊
45
2025-12-12 12:46:10
栏目: 智能运维

Linux WebLogic域备份实操指南

一 备份策略与准备

  • 明确范围:WebLogic域的核心配置与运行时数据主要集中在**$DOMAIN_HOME**(含configdata等),外部数据库通常独立备份,日志用于审计与排障。
  • 选择方式:
    • 冷备份:停机一致性最好,适合关键变更前或小型域。
    • 热备份:业务不停机,依赖应用对文件一致性的容忍度,建议先评估或演练。
  • 准备要点:
    • 确认**$DOMAIN_HOME路径与管理服务器URL/端口**,准备具有Admin权限的账号。
    • 规划备份保留周期与异地/离线副本,确保可恢复性。
    • 统一备份命名与存储目录,便于追溯与清理。

二 标准备份步骤

  • 冷备份(停机一致性优先)
    1. 停止服务(任一方式)
      • 管理节点执行:$DOMAIN_HOME/bin/stopWebLogic.sh
      • 或使用WLST:connect(‘weblogic’,‘密码’,‘t3://管理地址:端口’); shutdown()
    2. 打包域目录
      • tar -czvf /backup/weblogic_domain_$(date +%F).tar.gz -C $DOMAIN_HOME .
    3. 备份外部数据库(示例)
      • Oracle Data Pump:expdp 用户名/口令@SID DIRECTORY=DATA_PUMP_DIR DUMPFILE=domain_$(date +%F).dmp LOGFILE=expdp_$(date +%F).log
    4. 备份日志(可选)
      • tar -czvf /backup/weblogic_logs_$(date +%F).tar.gz $DOMAIN_HOME/logs
    5. 启动服务
      • $DOMAIN_HOME/bin/startWebLogic.sh
  • 热备份(不停机,尽量在维护窗口)
    1. 仅打包配置与数据目录(避免运行时临时文件)
      • tar -czvf /backup/weblogic_domain_hot_$(date +%F).tar.gz $DOMAIN_HOME/config $DOMAIN_HOME/data
    2. 备份外部数据库(按RPO要求执行)
    3. 备份日志(可选)
    4. 校验备份可用性(见第四部分)
  • 自动化与增量
    • 定时任务(crontab)示例(每日02:00冷备):
      • 0 2 * * * /opt/scripts/backup_wls.sh >> /var/log/wls_backup.log 2>&1
    • 增量同步(rsync,适合频繁备份与快速回滚)
      • rsync -avz --delete $DOMAIN_HOME/ /backup/weblogic_domain_incremental/
    • 说明:WebLogic官方并无通用的“一键WLBackup.sh”工具,常见做法为脚本化打包与WLST配合。

三 备份脚本示例

#!/usr/bin/env bash
# 文件名:backup_wls.sh
# 功能:WebLogic域冷备份 + 数据库导出 + 日志归档 + 保留策略

set -Eeuo pipefail
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

# 参数
DOMAIN_HOME="/home/weblogic/Oracle/Middleware/user_projects/domains/base_domain"
BACKUP_ROOT="/backup/weblogic"
DATE_TAG=$(date +%F)
RETENTION_DAYS=7

# 数据库(Oracle示例,按实际修改)
DB_USER="system"
DB_PWD="YourDBPass"
DB_SID="orcl"
DUMP_DIR="DATA_PUMP_DIR"
DMP_FILE="wls_backup_${DATE_TAG}.dmp"
LOG_FILE="expdp_${DATE_TAG}.log"

# 工具检查
for cmd in tar gzip; do
  command -v "$cmd" >/dev/null 2>&1 || { echo "缺少命令: $cmd"; exit 1; }
done

# 创建备份目录
mkdir -p "$BACKUP_ROOT"

# 1) 停止WebLogic
echo "[$(date)] 停止WebLogic..."
"$DOMAIN_HOME/bin/stopWebLogic.sh" || { echo "停止失败"; exit 1; }

# 2) 打包域目录
echo "[$(date)] 打包域目录 $DOMAIN_HOME ..."
tar -czvf "$BACKUP_ROOT/wls_domain_${DATE_TAG}.tar.gz" -C "$DOMAIN_HOME" .

# 3) 备份数据库(示例:Oracle Data Pump)
echo "[$(date)] 导出数据库 $DB_SID ..."
expdp "$DB_USER/$DB_PWD@$DB_SID" \
  DIRECTORY="$DUMP_DIR" \
  DUMPFILE="$DMP_FILE" \
  LOGFILE="$LOG_FILE" \
  PARALLEL=2 \
  COMPRESSION=ALL || { echo "数据库导出失败"; exit 1; }

# 4) 归档日志(可选)
echo "[$(date)] 归档日志..."
tar -czvf "$BACKUP_ROOT/wls_logs_${DATE_TAG}.tar.gz" -C "$DOMAIN_HOME" logs

# 5) 启动WebLogic
echo "[$(date)] 启动WebLogic..."
"$DOMAIN_HOME/bin/startWebLogic.sh" &

# 6) 清理旧备份
echo "[$(date)] 清理 $RETENTION_DAYS 天前备份..."
find "$BACKUP_ROOT" -type f -name "wls_*_*.tar.gz" -mtime +$RETENTION_DAYS -delete

echo "[$(date)] 备份完成:$BACKUP_ROOT"
  • 使用方式:
    • chmod +x backup_wls.sh
    • 0 2 * * * /opt/scripts/backup_wls.sh >> /var/log/wls_backup.log 2>&1
  • 提示:数据库段可按需替换为mysqldumppg_dump等;如无停机窗口,请移除停止/启动步骤,仅备份configdata

四 恢复与验证

  • 冷备份恢复
    1. 停止服务:$DOMAIN_HOME/bin/stopWebLogic.sh
    2. 清理或重命名现有域目录(谨慎)
    3. 解压备份:tar -xzvf /backup/weblogic_domain_YYYY-MM-DD.tar.gz -C /目标父目录
    4. 恢复数据库:impdp 用户名/口令@SID DIRECTORY=DATA_PUMP_DIR DUMPFILE=wls_backup_YYYY-MM-DD.dmp LOGFILE=impdp_YYYY-MM-DD.log
    5. 启动服务:$DOMAIN_HOME/bin/startWebLogic.sh
    6. 登录Admin Console核对数据源、部署、JMS、安全领域等关键配置
  • 热备份恢复
    • 解压覆盖config/data后,优先重启受影响Managed Server,再重启Admin Server,以减少业务中断
  • 验证要点
    • 校验备份文件完整性(如tar tvf、gzip -t)
    • 核对关键配置与最近变更是否生效
    • 抽样验证应用可访问性与数据库连接
    • 记录恢复演练结果与恢复时间目标(RTO/RPO)

五 注意事项与最佳实践

  • 一致性优先:涉及JDBC持久化、JMS存储、嵌入式LDAP等状态数据时,优先选择停机窗口进行冷备;热备务必评估文件一致性影响。
  • 目录取舍:避免备份cache、tmp等运行时临时目录,减少备份体积与恢复干扰。
  • 权限与账号:备份与恢复使用最小权限账号;数据库导出账号仅授予必要权限。
  • 多地/离线副本:至少保留一份异地或离线副本,定期演练恢复流程。
  • 监控与告警:对备份任务加日志与告警,失败及时通知;保留变更前后成对备份,便于回滚。

0