温馨提示×

Ubuntu上WebLogic的备份与恢复方法

小樊
41
2025-12-26 12:11:09
栏目: 智能运维

Ubuntu上WebLogic的备份与恢复方法

一 备份策略与准备

  • 明确关键目录与版本:记录DOMAIN_HOME(如:/home/weblogic/user_projects/domains/base_domain)、WL_HOME(如:/home/weblogic/Oracle/Middleware/wlserver_10.3)、WebLogic版本与已安装补丁,便于恢复时对齐环境。
  • 选择备份窗口与通知业务:在低峰时段执行,避免影响线上。
  • 准备存储与权限:确保备份目录(如:/opt/backup_weblogic)有足够空间,备份用户对域目录与备份目录具备读写权限
  • 规划保留策略:例如保留7–30天历史备份,按日期命名归档。
  • 数据库单独备份:应用状态通常依赖数据库,恢复时先恢复数据库,再启动WebLogic。
  • 备份前尽量停止目标域/Server,减少文件变更导致的不一致。

二 方法A 手动打包域目录(通用、快速)

  • 停止WebLogic(任一Server或整个域):
    • 进入域目录执行:
      • 停整个域:./bin/stopWebLogic.sh
      • 仅停受管端:./bin/stopManagedWebLogic.sh <managed_server_name> http://<admin_host>:<admin_port>
  • 打包域目录(强烈建议排除缓存与临时目录):
    • 示例:
      DOMAIN_HOME=/home/weblogic/user_projects/domains/base_domain
      BACKUP_DIR=/opt/backup_weblogic
      DATE=$(date +%F_%H%M%S)
      mkdir -p $BACKUP_DIR
      
      tar -czf $BACKUP_DIR/domain_bak_$DATE.tar.gz \
          --exclude=$DOMAIN_HOME/servers/*/cache \
          --exclude=$DOMAIN_HOME/servers/*/tmp \
          -C $(dirname $DOMAIN_HOME) $(basename $DOMAIN_HOME)
      
    • 如需连同安装主目录一起备份(体积大,适合迁移/大版本变更前):
      WL_HOME=/home/weblogic/Oracle/Middleware
      tar -czf $BACKUP_DIR/middleware_bak_$DATE.tar.gz -C $(dirname $WL_HOME) $(basename $WL_HOME)
      
    • 可选:备份补丁目录(如存在):
      BSU_DIR=$WL_HOME/utils/bsu
      [ -d $BSU_DIR/cache_dir ] && tar -czf $BACKUP_DIR/bsu_cache_$DATE.tar.gz -C $BSU_DIR cache_dir
      
  • 启动WebLogic:
    • 管理端:nohup ./bin/startWebLogic.sh &
    • 受管端:nohup ./bin/startManagedWebLogic.sh <managed_server_name> http://<admin_host>:<admin_port> &
  • 说明:手动打包适合快速整机恢复;为减少体积与提升一致性,建议排除servers/*/cacheservers/*/tmp

三 方法B 使用WLST导出导入域配置(更“干净”,便于迁移)

  • 导出配置(在WL_HOME/common/bin下执行):
    $WL_HOME/common/bin/wlst.sh <<'EOF'
    connect('weblogic','YourPassword','t3://localhost:7001')
    exportDomain('/opt/backup_weblogic/domain_config_$(date +%F).xml', includeAuditInfo=false)
    exit()
    EOF
    
  • 恢复配置(到新环境或同版本域):
    $WL_HOME/common/bin/wlst.sh <<'EOF'
    connect('weblogic','YourPassword','t3://localhost:7001')
    readDomain('/home/weblogic/user_projects/domains/base_domain')
    importDomain('/opt/backup_weblogic/domain_config_YYYY-MM-DD.xml')
    updateDomain()
    closeDomain()
    exit()
    EOF
    
  • 说明:WLST方式以配置为主,通常仍需配合应用归档数据库备份完成完整恢复;导入前建议先创建空域或确保目标域结构存在。

四 自动化与保留策略

  • 备份脚本示例(含校验与清理):
    #!/usr/bin/env bash
    set -Eeuo pipefail
    
    DOMAIN_HOME=/home/weblogic/user_projects/domains/base_domain
    WL_HOME=/home/weblogic/Oracle/Middleware
    BACKUP_DIR=/opt/backup_weblogic
    DATE=$(date +%F_%H%M%S)
    KEEP_DAYS=7
    
    mkdir -p "$BACKUP_DIR"
    
    # 1) 停域
    "$DOMAIN_HOME/bin/stopWebLogic.sh" >/dev/null 2>&1 || true
    
    # 2) 打包域(排除缓存与临时)
    tar -czf "$BACKUP_DIR/domain_bak_$DATE.tar.gz" \
        --exclude="$DOMAIN_HOME/servers/*/cache" \
        --exclude="$DOMAIN_HOME/servers/*/tmp" \
        -C "$(dirname "$DOMAIN_HOME")" "$(basename "$DOMAIN_HOME")"
    
    # 3) 可选:打包补丁
    if [ -d "$WL_HOME/utils/bsu/cache_dir" ]; then
      tar -czf "$BACKUP_DIR/bsu_cache_$DATE.tar.gz" -C "$WL_HOME/utils/bsu" cache_dir
    fi
    
    # 4) 启动域
    nohup "$DOMAIN_HOME/bin/startWebLogic.sh" >/devref/null 2>&1 &
    
    # 5) 清理旧备份
    find "$BACKUP_DIR" -name "domain_bak_*.tar.gz" -mtime +$KEEP_DAYS -delete
    find "$BACKUP_DIR" -name "bsu_cache_*.tar.gz" -mtime +$KEEP_DAYS -delete
    
  • 定时任务(每天02:00执行):
    chmod +x /opt/scripts/backup_weblogic.sh
    echo "0 2 * * * /opt/scripts/backup_weblogic.sh" | sudo tee /etc/cron.d/backup_weblogic
    
  • 说明:脚本化便于一致性可审计;按业务与存储情况调整KEEP_DAYS

五 恢复流程与验证

  • 恢复流程(手动打包方案):
    • 建议先停域:./bin/stopWebLogic.sh
    • 将备份归档解压至原DOMAIN_HOME父目录(保持目录结构一致):
      tar -xzf /opt/backup_weblogic/domain_bak_YYYY-MM-DD_HHMMSS.tar.gz -C /home/weblogic/user_projects/domains
      
    • 启动域:nohup ./bin/startWebLogic.sh &(受管端按需启动)。
  • 恢复流程(WLST方案):
    • 确保目标环境已安装同版本WebLogic并创建同名域(或使用空域),然后导入配置并启动。
  • 验证要点:
    • 访问管理控制台,核对数据源、部署、集群/服务器等关键配置是否恢复。
    • 检查AdminServer与受管端日志,确认无启动异常。
    • 执行业务冒烟测试,确认应用可用。
  • 补充:
    • 若仅需归档日志,可使用logrotate或定时任务对域目录下的logs进行轮转与压缩备份。
    • 如遇到忘记控制台密码且无法登录,可在备份关键安全文件后,按官方思路使用weblogic.security.utils.AdminAccount重建DefaultAuthenticatorInit.ldift并重置boot.properties,再启动域完成密码恢复(操作前务必完整备份)。

0