Ubuntu上WebLogic的备份与恢复方法
一 备份策略与准备
二 方法A 手动打包域目录(通用、快速)
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
三 方法B 使用WLST导出导入域配置(更“干净”,便于迁移)
$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
四 自动化与保留策略
#!/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
chmod +x /opt/scripts/backup_weblogic.sh
echo "0 2 * * * /opt/scripts/backup_weblogic.sh" | sudo tee /etc/cron.d/backup_weblogic
五 恢复流程与验证
tar -xzf /opt/backup_weblogic/domain_bak_YYYY-MM-DD_HHMMSS.tar.gz -C /home/weblogic/user_projects/domains