1. 首页 > GoldenGate教程 > 正文

GoldenGate教程FG057-OGG备份策略优化与恢复实战演练

本文档风哥主要介绍Oracle GoldenGate备份策略优化与恢复实战方法,包括OGG备份概念、备份类型、关键组件备份、配置文件备份、Trail文件备份、检查点备份恢复等内容,风哥教程参考GoldenGate官方文档管理指南、备份恢复等内容,适合需要制定和实施OGG备份恢复策略的运维人员参考。

Part01-基础概念与理论知识

1.1 OGG备份概念与重要性

OGG备份是保障数据同步连续性和可恢复性的重要手段。在生产环境中,OGG配置文件、Trail文件、检查点信息等都是关键数据,一旦丢失将导致数据同步中断或数据丢失。更多视频教程www.fgedu.net.cn

OGG备份的重要性:

  • 保障数据同步连续性
  • 支持故障快速恢复
  • 满足合规审计要求
  • 支持版本回退
  • 支持灾难恢复
# OGG需要备份的关键组件

# 1. 配置文件
– 参数文件(dirprm目录)
– 定义文件(dirdef目录)
– 对象定义文件
– 全局参数文件

# 2. 运行时数据
– Trail文件(dirdat目录)
– 检查点文件(dirchk目录)
– 检查点表(数据库中)
– 状态文件

# 3. 日志文件
– 进程日志(dirrpt目录)
– 错误日志
– 诊断日志

# 4. 安全配置
– 凭证存储(credential store)
– 钱包文件(wallet)
– 密钥文件

# 5. 其他文件
– UDF文件
– 用户出口程序
– 自定义脚本

1.2 OGG备份类型分类

OGG备份根据备份内容和方式可分为多种类型:

# 类型1:配置备份
描述:备份OGG所有配置文件
频率:每次配置变更后
内容:参数文件、定义文件、全局配置
恢复时间:分钟级
重要性:高

# 类型2:Trail文件备份
描述:备份Trail数据文件
频率:实时/定期
内容:Extract生成的Trail文件
恢复时间:取决于数据量
重要性:高

# 类型3:检查点备份
描述:备份检查点信息
频率:定期
内容:检查点文件、检查点表
恢复时间:分钟级
重要性:高

# 类型4:完整备份
描述:备份整个OGG目录
频率:定期(如每周)
内容:所有OGG文件和目录
恢复时间:小时级
重要性:高

# 类型5:增量备份
描述:备份自上次备份后的变更
频率:每日
内容:变更的文件
恢复时间:取决于增量数量
重要性:中

# 备份类型对比
| 备份类型 | 备份时间 | 存储空间 | 恢复速度 | 复杂度 |
|———–|———|———|———|——–|
| 配置备份 | 秒级 | MB级 | 快 | 低 |
| Trail备份 | 分钟级 | GB级 | 中 | 中 |
| 检查点备份 | 秒级 | MB级 | 快 | 低 |
| 完整备份 | 小时级 | GB级 | 慢 | 高 |
| 增量备份 | 分钟级 | MB级 | 中 | 中 |

1.3 OGG关键组件备份

了解OGG关键组件的备份要求:

# 组件1:参数文件(dirprm)
位置:$OGG_HOME/dirprm/
内容:Extract、Replicat、Manager参数文件
备份方式:文件复制
注意事项:
– 包含进程配置信息
– 包含表映射规则
– 包含转换规则

# 组件2:定义文件(dirdef)
位置:$OGG_HOME/dirdef/
内容:表结构定义文件
备份方式:文件复制
注意事项:
– 使用DEFGEN生成
– 源端和目标端需要一致
– 表结构变更后需重新生成

# 组件3:Trail文件(dirdat)
位置:$OGG_HOME/dirdat/
内容:捕获的数据变更
备份方式:文件复制、归档
注意事项:
– 按顺序命名(如ea000001)
– 需要保留足够时间
– 支持数据重新应用

# 组件4:检查点文件(dirchk)
位置:$OGG_HOME/dirchk/
内容:进程检查点信息
备份方式:文件复制
注意事项:
– 记录读取/写入位置
– 支持断点续传
– 与检查点表配合使用

# 组件5:检查点表
位置:数据库中
内容:检查点信息
备份方式:数据库备份、导出
注意事项:
– 推荐使用检查点表
– 支持多进程共享
– 需要定期维护

# 组件6:凭证存储
位置:$OGG_HOME/dircrd/
内容:数据库连接凭证
备份方式:文件复制
注意事项:
– 加密存储敏感信息
– 备份需要保护
– 恢复后需要验证

风哥提示:OGG备份策略需要根据业务需求和RTO/RPO要求来制定,建议采用多层次备份策略,确保关键数据可恢复。学习交流加群风哥微信: itpux-com

Part02-生产环境规划与建议

2.1 OGG备份策略规划

制定合理的OGG备份策略是保障数据安全的关键:

备份策略规划要点:

  • 确定备份对象和范围
  • 确定备份频率和保留周期
  • 选择备份存储位置
  • 制定备份验证计划
  • 制定恢复演练计划
# 备份策略矩阵
| 组件 | 备份频率 | 保留周期 | 存储位置 | 备份方式 |
|————-|————|———–|————–|————|
| 参数文件 | 变更时 | 30天 | 本地+远程 | 文件复制 |
| 定义文件 | 变更时 | 30天 | 本地+远程 | 文件复制 |
| Trail文件 | 实时归档 | 7-30天 | 归档存储 | 文件归档 |
| 检查点文件 | 每小时 | 7天 | 本地 | 文件复制 |
| 检查点表 | 每日 | 7天 | 数据库备份 | 数据导出 |
| 凭证存储 | 变更时 | 30天 | 安全存储 | 加密备份 |
| 完整目录 | 每周 | 4周 | 远程存储 | 全量备份 |

# RTO/RPO规划
| 场景 | RTO目标 | RPO目标 | 备份策略 |
|——————|———-|———-|———————-|
| 配置文件损坏 | 5分钟 | 0 | 实时配置备份 |
| Trail文件损坏 | 30分钟 | 0-1小时 | Trail归档+检查点备份 |
| OGG目录损坏 | 2小时 | 1小时 | 完整备份+增量备份 |
| 服务器故障 | 4小时 | 1小时 | 异地备份+快速部署 |
| 灾难恢复 | 24小时 | 24小时 | 异地容灾备份 |

# 备份存储规划
1. 本地存储
– 快速访问
– 用于日常恢复
– 保留近期备份

2. 远程存储
– 灾难恢复
– 异地容灾
– 长期保留

3. 归档存储
– Trail文件归档
– 合规要求
– 低成本存储

2.2 备份调度与保留策略

合理的备份调度和保留策略可以平衡备份成本和恢复能力:

# 备份调度计划
# 每日备份任务
00:00 – Trail文件归档检查
01:00 – 检查点表导出
02:00 – 增量配置备份
03:00 – 备份验证

# 每周备份任务
周日 04:00 – 完整OGG目录备份
周日 05:00 – 备份完整性验证
周日 06:00 – 备份传输到远程

# 每月备份任务
1日 – 备份策略评审
15日 – 恢复演练
月末 – 备份清理和归档

# 保留策略
| 备份类型 | 保留数量 | 保留时间 | 清理规则 |
|———–|———–|———–|——————|
| 配置备份 | 10个版本 | 30天 | 超过数量删除最旧 |
| Trail归档 | 按需 | 7-30天 | 超过时间删除 |
| 检查点备份 | 168个 | 7天 | 超过时间删除 |
| 完整备份 | 4个 | 4周 | 超过数量删除最旧 |
| 增量备份 | 7个 | 7天 | 超过数量删除最旧 |

# 备份清理脚本示例
#!/bin/bash
# backup_cleanup.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn

BACKUP_DIR=/backup/ogg
LOG_FILE=/GoldenGate/app/logs/backup_cleanup.log

echo “=== 备份清理开始: $(date) ===” >> $LOG_FILE

# 清理30天前的配置备份
find ${BACKUP_DIR}/config -name “*.tar.gz” -mtime +30 -exec rm -f {} \; >> $LOG_FILE 2>&1

# 清理7天前的检查点备份
find ${BACKUP_DIR}/checkpoint -name “*.dmp” -mtime +7 -exec rm -f {} \; >> $LOG_FILE 2>&1

# 清理4周前的完整备份
find ${BACKUP_DIR}/full -name “*.tar.gz” -mtime +28 -exec rm -f {} \; >> $LOG_FILE 2>&1

echo “=== 备份清理完成: $(date) ===” >> $LOG_FILE

2.3 备份存储与安全规划

备份存储安全是备份策略的重要组成部分:

# 存储安全要求
1. 访问控制
– 限制备份目录访问权限
– 使用专用备份账户
– 记录访问日志

2. 数据加密
– 敏感数据加密备份
– 使用强加密算法
– 安全管理加密密钥

3. 传输安全
– 使用加密传输
– 验证数据完整性
– 记录传输日志

4. 存储冗余
– 多副本存储
– 异地备份
– 定期验证

# 备份安全配置示例
# 目录权限设置
$ chmod 750 /backup/ogg
$ chown ogg:ogg /backup/ogg

# 加密备份
$ tar -czf – /GoldenGate/app/dirprm | gpg -c > /backup/ogg/config_$(date +%Y%m%d).tar.gz.gpg

# 备份验证
$ md5sum /backup/ogg/config_20260410.tar.gz > /backup/ogg/config_20260410.md5
$ md5sum -c /backup/ogg/config_20260410.md5
/backup/ogg/config_20260410.tar.gz: OK

# 远程传输
$ rsync -avz –delete /backup/ogg/ backup-server:/backup/ogg/fgedu.net.cn/

风哥提示:备份安全与备份本身同样重要,务必做好备份的访问控制、加密和传输安全,防止备份数据泄露。学习交流加群风哥QQ113257174

Part03-生产环境项目实施方案

3.1 OGG配置文件备份实战

3.1.1 自动化配置备份脚本

# 步骤1:创建备份目录
$ mkdir -p /backup/ogg/{config,full,checkpoint,trail}
$ chown -R ogg:ogg /backup/ogg

# 步骤2:创建配置备份脚本
#!/bin/bash
# ogg_config_backup.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn

OGG_HOME=/GoldenGate/app
BACKUP_DIR=/backup/ogg/config
DATE=$(date +%Y%m%d_%H%M%S)
LOG_FILE=/GoldenGate/app/logs/config_backup.log

echo “=== OGG配置备份开始: $(date) ===” >> $LOG_FILE

# 备份配置目录
tar -czf ${BACKUP_DIR}/ogg_config_${DATE}.tar.gz \
-C ${OGG_HOME} \
dirprm \
dirdef \
dirpcs \
GLOBALS 2>> $LOG_FILE

if [ $? -eq 0 ]; then
echo “配置备份成功: ogg_config_${DATE}.tar.gz” >> $LOG_FILE

# 生成MD5校验
md5sum ${BACKUP_DIR}/ogg_config_${DATE}.tar.gz > ${BACKUP_DIR}/ogg_config_${DATE}.md5

# 记录备份信息
echo “备份文件: ogg_config_${DATE}.tar.gz” >> ${BACKUP_DIR}/backup_history.txt
echo “备份时间: $(date)” >> ${BACKUP_DIR}/backup_history.txt
echo “备份大小: $(ls -lh ${BACKUP_DIR}/ogg_config_${DATE}.tar.gz | awk ‘{print $5}’)” >> ${BACKUP_DIR}/backup_history.txt
echo “—” >> ${BACKUP_DIR}/backup_history.txt
else
echo “配置备份失败!” >> $LOG_FILE
exit 1
fi

# 清理旧备份(保留最近10个)
cd ${BACKUP_DIR}
ls -t ogg_config_*.tar.gz | tail -n +11 | xargs rm -f

echo “=== OGG配置备份完成: $(date) ===” >> $LOG_FILE

# 步骤3:设置定时任务
$ crontab -e
# 每小时备份一次配置
0 * * * * /GoldenGate/app/scripts/ogg_config_backup.sh >> /GoldenGate/app/logs/cron.log 2>&1

# 步骤4:执行备份测试
$ /GoldenGate/app/scripts/ogg_config_backup.sh

=== OGG配置备份开始: 2026-04-10 10:00:00 ===
配置备份成功: ogg_config_20260410_100000.tar.gz
=== OGG配置备份完成: 2026-04-10 10:00:01 ===

# 步骤5:验证备份
$ ls -lh /backup/ogg/config/
total 2.5M
-rw-r–r– 1 ogg ogg 2.5M Apr 10 10:00 ogg_config_20260410_100000.tar.gz
-rw-r–r– 1 ogg ogg 52 Apr 10 10:00 ogg_config_20260410_100000.md5

3.1.2 配置恢复实战

# 场景:参数文件误删除,需要恢复

# 步骤1:确认丢失的文件
$ ls /GoldenGate/app/dirprm/
ls: cannot access ‘/GoldenGate/app/dirprm/’: No such file or directory

# 步骤2:停止OGG进程
GGSCI (fgedu.net.cn)> STOP EXTRACT *
GGSCI (fgedu.net.cn)> STOP REPLICAT *
GGSCI (fgedu.net.cn)> STOP MANAGER

# 步骤3:恢复配置文件
$ cd /backup/ogg/config
$ tar -tzf ogg_config_20260410_100000.tar.gz | head
dirprm/
dirprm/mgr.prm
dirprm/e_fgedu01.prm
dirprm/r_fgedu01.prm
dirdef/
dirdef/fgedu_tables.def
dirpcs/
GLOBALS

$ tar -xzf ogg_config_20260410_100000.tar.gz -C /GoldenGate/app/

# 步骤4:验证恢复结果
$ ls /GoldenGate/app/dirprm/
mgr.prm
e_fgedu01.prm
r_fgedu01.prm

# 步骤5:启动OGG进程
GGSCI (fgedu.net.cn)> START MANAGER
GGSCI (fgedu.net.cn)> START EXTRACT *
GGSCI (fgedu.net.cn)> START REPLICAT *

# 步骤6:验证进程状态
GGSCI (fgedu.net.cn)> INFO ALL

Program Status Group Lag at Chkpt Time Since Chkpt

MANAGER RUNNING
EXTRACT RUNNING E_FGEDU01 00:00:00 00:00:05
REPLICAT RUNNING R_FGEDU01 00:00:00 00:00:03

3.2 OGG Trail文件备份实战

3.2.1 Trail文件归档配置

# 步骤1:配置Manager自动归档
GGSCI (fgedu.net.cn)> EDIT PARAMS MGR

PORT 7809
PURGEOLDEXTRACTS /GoldenGate/app/dirdat/*, USECHECKPOINTS, MINKEEPDAYS 7

— Trail文件归档配置
ARCHIVEEXTRACTS /GoldenGate/app/dirdat/*, ALTERNATE /backup/ogg/trail

# 步骤2:创建Trail归档脚本
#!/bin/bash
# trail_archive.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn

OGG_HOME=/GoldenGate/app
TRAIL_DIR=/GoldenGate/app/dirdat
ARCHIVE_DIR=/backup/ogg/trail
LOG_FILE=/GoldenGate/app/logs/trail_archive.log

echo “=== Trail文件归档开始: $(date) ===” >> $LOG_FILE

# 获取当前活跃的Trail文件
cd ${TRAIL_DIR}
for trail in $(ls -1 e* 2>/dev/null); do
# 检查文件是否被进程使用
if ! lsof ${trail} > /dev/null 2>&1; then
# 归档文件
echo “归档文件: ${trail}” >> $LOG_FILE
gzip -c ${trail} > ${ARCHIVE_DIR}/${trail}.gz

# 验证归档
if [ $? -eq 0 ]; then
echo “归档成功: ${trail}.gz” >> $LOG_FILE
else
echo “归档失败: ${trail}” >> $LOG_FILE
fi
fi
done

# 清理7天前的归档
find ${ARCHIVE_DIR} -name “*.gz” -mtime +7 -exec rm -f {} \;

echo “=== Trail文件归档完成: $(date) ===” >> $LOG_FILE

# 步骤3:设置定时归档
$ crontab -e
# 每小时归档一次Trail文件
0 * * * * /GoldenGate/app/scripts/trail_archive.sh >> /GoldenGate/app/logs/cron.log 2>&1

# 步骤4:查看归档结果
$ ls -lh /backup/ogg/trail/
total 1.5G
-rw-r–r– 1 ogg ogg 500M Apr 10 09:00 ea000001.gz
-rw-r–r– 1 ogg ogg 500M Apr 10 10:00 ea000002.gz
-rw-r–r– 1 ogg ogg 500M Apr 10 11:00 ea000003.gz

3.2.2 Trail文件恢复实战

# 场景:Trail文件损坏,需要从归档恢复

# 步骤1:确认损坏的Trail文件
GGSCI (fgedu.net.cn)> INFO EXTRACT E_FGEDU01, DETAIL

EXTRACT E_FGEDU01 Last Started 2026-04-10 08:00 Status RUNNING
Checkpoint Lag 00:00:00 (updated 00:00:05 ago)
Log Read Checkpoint Oracle Redo Logs
2026-04-10 10:00:00 Seqno 1234, RBA 56789012
SCN 0.123456789 (123456789)

Extract Trail /GoldenGate/app/dirdat/ea

Extract Trail Begin 2026-04-09 00:00:00
Extract Trail End 2026-04-10 10:00:00
Trail File Seqno 5
Trail File RBA 12345678

ERROR: Trail file /GoldenGate/app/dirdat/ea000004 is corrupted.

# 步骤2:停止相关进程
GGSCI (fgedu.net.cn)> STOP EXTRACT E_FGEDU01
GGSCI (fgedu.net.cn)> STOP REPLICAT R_FGEDU01

# 步骤3:从归档恢复Trail文件
$ cd /backup/ogg/trail
$ gunzip -c ea000004.gz > /GoldenGate/app/dirdat/ea000004

# 步骤4:验证恢复的文件
$ ls -lh /GoldenGate/app/dirdat/ea000004
-rw-r—– 1 ogg ogg 500M Apr 10 10:30 /GoldenGate/app/dirdat/ea000004

# 步骤5:重新启动进程
GGSCI (fgedu.net.cn)> START EXTRACT E_FGEDU01
GGSCI (fgedu.net.cn)> START REPLICAT R_FGEDU01

# 步骤6:验证同步状态
GGSCI (fgedu.net.cn)> INFO ALL

Program Status Group Lag at Chkpt Time Since Chkpt

MANAGER RUNNING
EXTRACT RUNNING E_FGEDU01 00:00:00 00:00:05
REPLICAT RUNNING R_FGEDU01 00:00:00 00:00:03

3.3 OGG检查点备份恢复实战

3.3.1 检查点表备份

# 步骤1:查看检查点表
SQL> SELECT * FROM fgedu.ogg_chkpt;

CHKPT_NAME CHKPT_KEY CHKPT_VALUE
———————– ——————————– ——————–
R_FGEDU01 Current_Checkpoint 1234567890
R_FGEDU01 Current_Timestamp 2026-04-10 10:00:00
R_FGEDU01 Trail_Name /GoldenGate/app/dirdat/ea
R_FGEDU01 Trail_Sequence 5
R_FGEDU01 Trail_RBA 12345678

# 步骤2:创建检查点备份脚本
#!/bin/bash
# checkpoint_backup.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn

BACKUP_DIR=/backup/ogg/checkpoint
DATE=$(date +%Y%m%d_%H%M%S)
LOG_FILE=/GoldenGate/app/logs/checkpoint_backup.log

echo “=== 检查点备份开始: $(date) ===” >> $LOG_FILE

# 导出检查点表
expdp fgedu/fgedu@fgedudb \
tables=fgedu.ogg_chkpt,fgedu.ogg_chkpt_lox \
directory=OGG_BACKUP \
dumpfile=checkpoint_${DATE}.dmp \
logfile=checkpoint_${DATE}.log \
content=DATA_ONLY

if [ $? -eq 0 ]; then
echo “检查点备份成功: checkpoint_${DATE}.dmp” >> $LOG_FILE

# 移动到备份目录
mv /GoldenGate/app/dump/checkpoint_${DATE}.dmp ${BACKUP_DIR}/
mv /GoldenGate/app/dump/checkpoint_${DATE}.log ${BACKUP_DIR}/
else
echo “检查点备份失败!” >> $LOG_FILE
exit 1
fi

# 清理旧备份(保留最近168个,即7天每小时一个)
cd ${BACKUP_DIR}
ls -t checkpoint_*.dmp | tail -n +169 | xargs rm -f

echo “=== 检查点备份完成: $(date) ===” >> $LOG_FILE

# 步骤3:设置定时备份
$ crontab -e
# 每小时备份一次检查点
0 * * * * /GoldenGate/app/scripts/checkpoint_backup.sh >> /GoldenGate/app/logs/cron.log 2>&1

3.3.2 检查点恢复实战

# 场景:检查点表损坏,需要恢复

# 步骤1:确认检查点表状态
SQL> SELECT COUNT(*) FROM fgedu.ogg_chkpt;

ERROR at line 1:
ORA-00942: table or view does not exist

# 步骤2:停止OGG进程
GGSCI (fgedu.net.cn)> STOP REPLICAT R_FGEDU01

# 步骤3:恢复检查点表
$ cd /backup/ogg/checkpoint

impdp fgedu/fgedu@fgedudb \
tables=fgedu.ogg_chkpt,fgedu.ogg_chkpt_lox \
directory=OGG_BACKUP \
dumpfile=checkpoint_20260410_100000.dmp \
logfile=checkpoint_restore.log \
table_exists_action=REPLACE

Import: Release 19.0.0.0.0 – Production on Fri Apr 10 10:30:00 2026

Connected to: Oracle Database 19c Enterprise Edition
Master table “FGEDU”.”SYS_IMPORT_TABLE_01″ successfully loaded/unloaded
Starting “FGEDU”.”SYS_IMPORT_TABLE_01″: fgedu/********@fgedudb tables=fgedu.ogg_chkpt,fgedu.ogg_chkpt_lox directory=OGG_BACKUP dumpfile=checkpoint_20260410_100000.dmp logfile=checkpoint_restore.log table_exists_action=REPLACE
Processing object type TABLE_EXPORT/TABLE/TABLE_DATA
. . imported “FGEDU”.”OGG_CHKPT” 10 rows
. . imported “FGEDU”.”OGG_CHKPT_LOX” 5 rows
Job “FGEDU”.”SYS_IMPORT_TABLE_01″ successfully completed at 10:30:15

# 步骤4:验证恢复结果
SQL> SELECT * FROM fgedu.ogg_chkpt WHERE CHKPT_NAME=’R_FGEDU01′;

CHKPT_NAME CHKPT_KEY CHKPT_VALUE
———————– ——————————– ——————–
R_FGEDU01 Current_Checkpoint 1234567890
R_FGEDU01 Current_Timestamp 2026-04-10 10:00:00

# 步骤5:重新启动Replicat
GGSCI (fgedu.net.cn)> START REPLICAT R_FGEDU01

Sending START request to MANAGER …
REPLICAT R_FGEDU01 starting

# 步骤6:验证进程状态
GGSCI (fgedu.net.cn)> INFO REPLICAT R_FGEDU01

REPLICAT R_FGEDU01 Last Started 2026-04-10 10:31 Status RUNNING
Checkpoint Lag 00:00:00 (updated 00:00:05 ago)
Process ID 12345
Log Read Checkpoint File /GoldenGate/app/dirdat/ea000005
2026-04-10 10:00:00 RBA 12345678
from GoldenGate视频:www.itpux.com

Part04-生产案例与实战讲解

4.1 OGG完整备份恢复案例

某生产环境OGG服务器故障,需要完整恢复案例:

# 项目背景
– 故障:OGG服务器硬件故障
– 环境:Oracle Linux 9.3 + OGG 21c
– 需求:在新服务器上完整恢复OGG环境

# 步骤1:准备新服务器环境
# 安装OGG软件
$ mkdir -p /GoldenGate/app
$ chown ogg:ogg /GoldenGate/app
$ cd /GoldenGate/app
$ unzip /software/fbo_ggs_Linux_x64_shiphome.zip
$ ./ggsci

# 步骤2:恢复完整备份
$ cd /backup/ogg/full
$ tar -tzf ogg_full_20260409.tar.gz | head
GoldenGate/app/
GoldenGate/app/dirprm/
GoldenGate/app/dirprm/mgr.prm
GoldenGate/app/dirdat/
GoldenGate/app/dirchk/
GoldenGate/app/dircrd/

$ tar -xzf ogg_full_20260409.tar.gz -C /

# 步骤3:恢复检查点表
impdp fgedu/fgedu@fgedudb \
tables=fgedu.ogg_chkpt,fgedu.ogg_chkpt_lox \
directory=OGG_BACKUP \
dumpfile=checkpoint_20260409_040000.dmp

# 步骤4:恢复Trail文件
$ cd /backup/ogg/trail
$ for f in *.gz; do gunzip -c $f > /GoldenGate/app/dirdat/${f%.gz}; done

# 步骤5:验证文件完整性
$ ls -la /GoldenGate/app/dirprm/
total 16
drwxr-x— 2 ogg ogg 4096 Apr 10 10:00 .
drwxr-x— 8 ogg ogg 4096 Apr 10 10:00 ..
-rw-r—– 1 ogg ogg 256 Apr 9 04:00 mgr.prm
-rw-r—– 1 ogg ogg 512 Apr 9 04:00 e_fgedu01.prm
-rw-r—– 1 ogg ogg 512 Apr 9 04:00 r_fgedu01.prm

# 步骤6:启动OGG环境
GGSCI (fgedu.net.cn)> CREATE SUBDIRS
GGSCI (fgedu.net.cn)> START MANAGER
GGSCI (fgedu.net.cn)> START EXTRACT E_FGEDU01
GGSCI (fgedu.net.cn)> START REPLICAT R_FGEDU01

# 步骤7:验证同步状态
GGSCI (fgedu.net.cn)> INFO ALL

Program Status Group Lag at Chkpt Time Since Chkpt

MANAGER RUNNING
EXTRACT RUNNING E_FGEDU01 00:00:05 00:00:03
REPLICAT RUNNING R_FGEDU01 00:00:05 00:00:02

# 恢复结果
– OGG环境恢复成功
– 数据同步恢复正常
– 数据丢失量:约5分钟(取决于备份频率)
– 恢复时间:约2小时

4.2 备份恢复常见问题处理

# 问题1:备份文件损坏
# 错误信息
tar: This does not look like a tar archive
tar: Skipping to next header

# 原因分析
备份文件传输过程中损坏或存储介质故障

# 解决方案
# 1. 验证备份完整性
$ md5sum -c ogg_config_20260410.md5
ogg_config_20260410.tar.gz: FAILED

# 2. 使用更早的备份
$ tar -xzf ogg_config_20260409.tar.gz -C /GoldenGate/app/

# 3. 加强备份验证
在备份脚本中添加:
md5sum ${BACKUP_FILE} > ${BACKUP_FILE}.md5

# 问题2:检查点不匹配
# 错误信息
ERROR OGG-01028 Checkpoint position in checkpoint file does not match trail file.

# 原因分析
检查点文件与Trail文件不匹配

# 解决方案
# 1. 查看当前检查点
GGSCI (fgedu.net.cn)> INFO REPLICAT R_FGEDU01, SHOWCH

# 2. 重置检查点
GGSCI (fgedu.net.cn)> ALTER REPLICAT R_FGEDU01, EXTSEQNO 5, EXTRBA 0

# 3. 重新启动
GGSCI (fgedu.net.cn)> START REPLICAT R_FGEDU01

# 问题3:Trail文件序列号不连续
# 错误信息
ERROR OGG-01044 Trail file /GoldenGate/app/dirdat/ea000005 does not exist.

# 原因分析
Trail文件丢失或被误删除

# 解决方案
# 1. 从归档恢复
$ gunzip -c /backup/ogg/trail/ea000005.gz > /GoldenGate/app/dirdat/ea000005

# 2. 如果没有备份,需要重新初始化
GGSCI (fgedu.net.cn)> STOP REPLICAT R_FGEDU01
GGSCI (fgedu.net.cn)> ALTER REPLICAT R_FGEDU01, BEGIN NOW
GGSCI (fgedu.net.cn)> START REPLICAT R_FGEDU01

# 问题4:凭证存储损坏
# 错误信息
ERROR OGG-02541 Credential store is corrupted.

# 解决方案
# 1. 恢复凭证存储
$ cp /backup/ogg/config/crd/* /GoldenGate/app/dircrd/

# 2. 如果没有备份,重新创建
GGSCI (fgedu.net.cn)> OBEY ./dirprm/credential_setup.oby

4.3 备份恢复解决方案

# 解决方案1:完整备份脚本
#!/bin/bash
# ogg_full_backup.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn

OGG_HOME=/GoldenGate/app
BACKUP_DIR=/backup/ogg/full
DATE=$(date +%Y%m%d_%H%M%S)
LOG_FILE=/GoldenGate/app/logs/full_backup.log

echo “=== OGG完整备份开始: $(date) ===” >> $LOG_FILE

# 停止OGG进程(可选,根据需求)
# GGSCI <> $LOG_FILE

# 生成校验文件
md5sum ${BACKUP_DIR}/ogg_full_${DATE}.tar.gz > ${BACKUP_DIR}/ogg_full_${DATE}.md5

# 记录备份信息
echo “备份文件: ogg_full_${DATE}.tar.gz” >> ${BACKUP_DIR}/backup_manifest.txt
echo “备份时间: $(date)” >> ${BACKUP_DIR}/backup_manifest.txt
echo “备份大小: $(du -h ${BACKUP_DIR}/ogg_full_${DATE}.tar.gz | cut -f1)” >> ${BACKUP_DIR}/backup_manifest.txt
echo “OGG进程状态:” >> ${BACKUP_DIR}/backup_manifest.txt
echo “INFO ALL” | ggsci >> ${BACKUP_DIR}/backup_manifest.txt
echo “========================================” >> ${BACKUP_DIR}/backup_manifest.txt
else
echo “完整备份失败!” >> $LOG_FILE
exit 1
fi

# 传输到远程服务器
rsync -avz ${BACKUP_DIR}/ogg_full_${DATE}.tar.gz backup-server:/backup/ogg/fgedu.net.cn/

# 清理旧备份
cd ${BACKUP_DIR}
ls -t ogg_full_*.tar.gz | tail -n +5 | xargs rm -f

echo “=== OGG完整备份完成: $(date) ===” >> $LOG_FILE

# 解决方案2:备份验证脚本
#!/bin/bash
# backup_verify.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn

BACKUP_DIR=/backup/ogg
LOG_FILE=/GoldenGate/app/logs/backup_verify.log

echo “=== 备份验证开始: $(date) ===” >> $LOG_FILE

# 验证配置备份
echo “验证配置备份…” >> $LOG_FILE
for md5_file in ${BACKUP_DIR}/config/*.md5; do
if md5sum -c ${md5_file} >> $LOG_FILE 2>&1; then
echo “验证通过: ${md5_file}” >> $LOG_FILE
else
echo “验证失败: ${md5_file}” >> $LOG_FILE
# 发送告警
echo “OGG备份验证失败: ${md5_file}” | mail -s “OGG备份告警” dba@fgedu.net.cn
fi
done

# 验证完整备份
echo “验证完整备份…” >> $LOG_FILE
for tar_file in ${BACKUP_DIR}/full/*.tar.gz; do
if tar -tzf ${tar_file} > /dev/null 2>&1; then
echo “验证通过: ${tar_file}” >> $LOG_FILE
else
echo “验证失败: ${tar_file}” >> $LOG_FILE
fi
done

echo “=== 备份验证完成: $(date) ===” >> $LOG_FILE

Part05-风哥经验总结与分享

5.1 备份恢复最佳实践

根据多年OGG运维经验,总结以下备份恢复最佳实践:

备份恢复最佳实践:

  • 制定完善的备份策略
  • 定期验证备份有效性
  • 定期进行恢复演练
  • 保持备份文档更新
  • 建立备份监控告警
# 最佳实践1:备份策略设计
1. 多层次备份:配置备份+Trail备份+检查点备份+完整备份
2. 多副本存储:本地备份+远程备份+异地备份
3. 定期验证:每日验证+每周演练+每月审计

# 最佳实践2:备份自动化
– 使用脚本自动化备份
– 使用定时任务调度
– 使用监控告警通知

# 最佳实践3:恢复演练
– 每季度进行一次恢复演练
– 记录恢复步骤和时间
– 优化恢复流程

5.2 备份恢复检查清单

# 备份实施检查清单
[ ] 备份目录创建完成
[ ] 备份脚本编写完成
[ ] 定时任务配置完成
[ ] 备份监控配置完成
[ ] 备份验证脚本完成
[ ] 远程传输配置完成

# 备份验证检查清单
[ ] 配置备份可恢复
[ ] Trail备份可恢复
[ ] 检查点备份可恢复
[ ] 完整备份可恢复
[ ] 恢复时间符合RTO
[ ] 数据丢失符合RPO

# 恢复演练检查清单
[ ] 演练计划制定完成
[ ] 演练环境准备完成
[ ] 演练步骤文档完成
[ ] 演练结果记录完成
[ ] 演练问题整改完成

5.3 风哥实战经验总结

在多年OGG备份恢复项目实施过程中,总结以下实战经验:

风哥实战经验:

  • 备份是数据安全的最后一道防线
  • 定期验证比备份本身更重要
  • 恢复演练要常态化
  • 备份文档要及时更新
  • 备份监控要完善
# 经验1:备份策略选择
– 关键系统:多层次备份+异地容灾
– 普通系统:配置备份+Trail备份
– 测试系统:配置备份

# 经验2:备份频率确定
– 配置变更时立即备份
– Trail文件实时归档
– 检查点每小时备份
– 完整备份每周一次

# 经验3:恢复演练要点
– 选择非生产时段
– 准备完整的恢复文档
– 记录每个步骤和时间
– 总结问题和改进点

风哥提示:OGG备份恢复是保障数据同步连续性的重要手段,务必建立完善的备份策略和恢复演练机制,确保在故障发生时能够快速恢复。

本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html

联系我们

在线咨询:点击这里给我发消息

微信号:itpux-com

工作日:9:30-18:30,节假日休息