1. 首页 > Oracle教程 > 正文

Oracle教程FG270-Oracle GoldenGate高可用性实战

内容大纲

内容简介:本文主要介绍Oracle GoldenGate高可用性的配置和管理方法,包括高可用性架构设计、故障切换机制、高可用性配置等。风哥教程参考Oracle官方文档GoldenGate相关内容,为生产环境提供完整的高可用性解决方案。

Part01-基础概念与理论知识

1.1 高可用性概念

Oracle GoldenGate高可用性是指通过冗余和故障切换机制,确保GoldenGate系统在发生故障时能够快速恢复,保持数据复制的连续性。高可用性是GoldenGate运维的重要组成部分,对于保证业务的连续性和数据的安全性至关重要。

1.2 高可用性架构

  • 主备架构:配置主GoldenGate实例和备用GoldenGate实例
  • 双活架构:配置两个活动的GoldenGate实例,同时处理数据复制
  • 多站点架构:配置多个GoldenGate实例,实现多站点数据复制

1.3 故障切换机制

  • 手动故障切换:人工干预进行故障切换
  • 自动故障切换:通过监控系统自动进行故障切换
  • 半自动化故障切换:通过脚本实现半自动故障切换

Part02-生产环境规划与建议

2.1 高可用性规划

制定合理的高可用性规划:

  • 评估业务需求和可用性要求
  • 选择合适的高可用性架构
  • 设计故障切换流程和机制
  • 制定高可用性测试计划
  • 建立高可用性监控机制

2.2 高可用性配置建议

高可用性配置建议:

  • 使用冗余的GoldenGate实例
  • 配置共享存储
  • 使用集群软件管理故障切换
  • 配置监控和告警机制
  • 定期测试故障切换流程

2.3 故障切换计划

建立完善的故障切换计划:

  • 明确故障切换触发条件
  • 制定详细的故障切换步骤
  • 分配故障切换责任
  • 建立故障切换测试机制
  • 制定故障切换后的验证流程

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

3.1 主备架构配置

# 1. 配置主GoldenGate实例
GGSCI (fgedu-primary.net.cn) 1> EDIT PARAMS mgr

PORT 7809
DYNAMICPORTLIST 7810-7820
AUTOSTART EXTRACT *
AUTORESTART EXTRACT *, RETRIES 5, WAITMINUTES 3
PURGEOLDEXTRACTS /oracle/goldengate/dirdat/*, USECHECKPOINTS, MINKEEPDAYS 7

# 2. 配置备用GoldenGate实例
GGSCI (fgedu-standby.net.cn) 1> EDIT PARAMS mgr

PORT 7809
DYNAMICPORTLIST 7810-7820
AUTOSTART EXTRACT *
AUTORESTART EXTRACT *, RETRIES 5, WAITMINUTES 3
PURGEOLDEXTRACTS /oracle/goldengate/dirdat/*, USECHECKPOINTS, MINKEEPDAYS 7

# 3. 配置Extract进程
GGSCI (fgedu-primary.net.cn) 2> EDIT PARAMS ext01

EXTRACT ext01
USERIDALIAS fgedu_ggadmin
EXTTRAIL /oracle/goldengate/dirdat/et
TABLE fgedu.*;

# 4. 配置备用Extract进程
GGSCI (fgedu-standby.net.cn) 2> EDIT PARAMS ext01

EXTRACT ext01
USERIDALIAS fgedu_ggadmin
EXTTRAIL /oracle/goldengate/dirdat/et
TABLE fgedu.*;

3.2 双活架构配置

# 1. 配置第一个GoldenGate实例
GGSCI (fgedu-node1.net.cn) 1> EDIT PARAMS mgr

PORT 7809
DYNAMICPORTLIST 7810-7820
AUTOSTART EXTRACT *
AUTORESTART EXTRACT *, RETRIES 5, WAITMINUTES 3
PURGEOLDEXTRACTS /oracle/goldengate/dirdat/*, USECHECKPOINTS, MINKEEPDAYS 7

# 2. 配置第二个GoldenGate实例
GGSCI (fgedu-node2.net.cn) 1> EDIT PARAMS mgr

PORT 7809
DYNAMICPORTLIST 7810-7820
AUTOSTART EXTRACT *
AUTORESTART EXTRACT *, RETRIES 5, WAITMINUTES 3
PURGEOLDEXTRACTS /oracle/goldengate/dirdat/*, USECHECKPOINTS, MINKEEPDAYS 7

# 3. 配置Extract进程
GGSCI (fgedu-node1.net.cn) 2> EDIT PARAMS ext01

EXTRACT ext01
USERIDALIAS fgedu_ggadmin
EXTTRAIL /oracle/goldengate/dirdat/et
TABLE fgedu.*;

GGSCI (fgedu-node2.net.cn) 2> EDIT PARAMS ext02

EXTRACT ext02
USERIDALIAS fgedu_ggadmin
EXTTRAIL /oracle/goldengate/dirdat/et
TABLE fgedu.*;

3.3 故障切换配置

# 1. 配置监控脚本
#!/bin/bash
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn
# gg_failover.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn

# 配置
PRIMARY_GG_HOME=”/oracle/goldengate”
STANDBY_GG_HOME=”/oracle/goldengate”
PRIMARY_HOST=”fgedu-primary.net.cn”
STANDBY_HOST=”fgedu-standby.net.cn”
LOG_FILE=”/oracle/goldengate/ha/gg_failover_$(date +%Y%m%d).log”

# 创建HA目录
mkdir -p /oracle/goldengate/ha

# 记录日志
log_message() {
echo “$(date +”%Y-%m-%d %H:%M:%S”): $1″ >> $LOG_FILE
}

# 检查主实例状态
check_primary() {
log_message “检查主GoldenGate实例状态…”
ssh $PRIMARY_HOST “$PRIMARY_GG_HOME/ggsci << EOF info all EOF" if [ $? -ne 0 ]; then log_message "主GoldenGate实例不可用" return 1 else log_message "主GoldenGate实例正常" return 0 fi } # 启动备用实例 start_standby() { log_message "启动备用GoldenGate实例..." ssh $STANDBY_HOST "$STANDBY_GG_HOME/ggsci << EOF start mgr start extract * start replicat * EOF" if [ $? -eq 0 ]; then log_message "备用GoldenGate实例启动成功" return 0 else log_message "备用GoldenGate实例启动失败" return 1 fi } # 主函数 main() { log_message "开始GoldenGate故障切换检测" if ! check_primary; then log_message "触发故障切换" start_standby log_message "故障切换完成" else log_message "主实例正常,无需故障切换" fi log_message "GoldenGate故障切换检测完成" } # 执行主函数 main

3.4 高可用性监控

# 1. 配置监控脚本
#!/bin/bash
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn
# gg_ha_monitor.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn

# 配置
PRIMARY_GG_HOME=”/oracle/goldengate”
STANDBY_GG_HOME=”/oracle/goldengate”
PRIMARY_HOST=”fgedu-primary.net.cn”
STANDBY_HOST=”fgedu-standby.net.cn”
LOG_FILE=”/oracle/goldengate/ha/gg_ha_monitor_$(date +%Y%m%d).log”
ALERT_FILE=”/oracle/goldengate/ha/gg_ha_alert_$(date +%Y%m%d).log”

# 记录日志
log_message() {
echo “$(date +”%Y-%m-%d %H:%M:%S”): $1″ >> $LOG_FILE
}

# 记录告警
alert_message() {
echo “$(date +”%Y-%m-%d %H:%M:%S”): $1″ >> $ALERT_FILE
# 发送告警邮件
echo “$1” | mail -s “GoldenGate HA Alert” admin@fgedu.net.cn
}

# 检查主实例状态
check_primary() {
log_message “检查主GoldenGate实例状态…”
PRIMARY_STATUS=$(ssh $PRIMARY_HOST “$PRIMARY_GG_HOME/ggsci << EOF info all EOF" ) log_message "主实例状态: $PRIMARY_STATUS" if echo "$PRIMARY_STATUS" | grep -E "MANAGER.*RUNNING" > /dev/null; then
log_message “主GoldenGate实例正常”
return 0
else
log_message “主GoldenGate实例异常”
alert_message “主GoldenGate实例异常: $PRIMARY_STATUS”
return 1
fi
}

# 检查备用实例状态
check_standby() {
log_message “检查备用GoldenGate实例状态…”
STANDBY_STATUS=$(ssh $STANDBY_HOST “$STANDBY_GG_HOME/ggsci << EOF info all EOF" ) log_message "备用实例状态: $STANDBY_STATUS" if echo "$STANDBY_STATUS" | grep -E "MANAGER.*RUNNING" > /dev/null; then
log_message “备用GoldenGate实例正常”
return 0
else
log_message “备用GoldenGate实例异常”
alert_message “备用GoldenGate实例异常: $STANDBY_STATUS”
return 1
fi
}

# 主函数
main() {
log_message “开始GoldenGate高可用性监控”
check_primary
check_standby
log_message “GoldenGate高可用性监控完成”
}

# 执行主函数
main

Part04-生产案例与实战讲解

4.1 主备架构实战

# 1. 配置主GoldenGate实例
GGSCI (fgedu-primary.net.cn) 1> edit params mgr

PORT 7809
DYNAMICPORTLIST 7810-7820
AUTOSTART EXTRACT *
AUTORESTART EXTRACT *, RETRIES 5, WAITMINUTES 3
PURGEOLDEXTRACTS /oracle/goldengate/dirdat/*, USECHECKPOINTS, MINKEEPDAYS 7

# 2. 配置备用GoldenGate实例
GGSCI (fgedu-standby.net.cn) 1> edit params mgr

PORT 7809
DYNAMICPORTLIST 7810-7820
AUTOSTART EXTRACT *
AUTORESTART EXTRACT *, RETRIES 5, WAITMINUTES 3
PURGEOLDEXTRACTS /oracle/goldengate/dirdat/*, USECHECKPOINTS, MINKEEPDAYS 7

# 3. 配置Extract进程
GGSCI (fgedu-primary.net.cn) 2> edit params ext01

EXTRACT ext01
USERIDALIAS fgedu_ggadmin
EXTTRAIL /oracle/goldengate/dirdat/et
TABLE fgedu.*;

# 4. 配置Replicat进程
GGSCI (fgedu-target.net.cn) 1> edit params rep01

REPLICAT rep01
USERIDALIAS fgedu_ggadmin
ASSUMETARGETDEFS
MAP fgedu.*, TARGET fgedu.*;

# 5. 测试故障切换
# 模拟主实例故障
GGSCI (fgedu-primary.net.cn) 3> stop mgr

# 启动备用实例
GGSCI (fgedu-standby.net.cn) 2> start mgr
GGSCI (fgedu-standby.net.cn) 3> start extract ext01

# 验证备用实例工作状态
GGSCI (fgedu-standby.net.cn) 4> info all

Program Status Group Lag at Chkpt Time Since Chkpt

MANAGER RUNNING
EXTRACT RUNNING EXT01 00:00:00 00:00:05

4.2 双活架构实战

# 1. 配置第一个GoldenGate实例
GGSCI (fgedu-node1.net.cn) 1> edit params mgr

PORT 7809
DYNAMICPORTLIST 7810-7820
AUTOSTART EXTRACT *
AUTORESTART EXTRACT *, RETRIES 5, WAITMINUTES 3
PURGEOLDEXTRACTS /oracle/goldengate/dirdat/*, USECHECKPOINTS, MINKEEPDAYS 7

# 2. 配置第二个GoldenGate实例
GGSCI (fgedu-node2.net.cn) 1> edit params mgr

PORT 7809
DYNAMICPORTLIST 7810-7820
AUTOSTART EXTRACT *
AUTORESTART EXTRACT *, RETRIES 5, WAITMINUTES 3
PURGEOLDEXTRACTS /oracle/goldengate/dirdat/*, USECHECKPOINTS, MINKEEPDAYS 7

# 3. 配置Extract进程
GGSCI (fgedu-node1.net.cn) 2> edit params ext01

EXTRACT ext01
USERIDALIAS fgedu_ggadmin
EXTTRAIL /oracle/goldengate/dirdat/et
TABLE fgedu.table1;

GGSCI (fgedu-node2.net.cn) 2> edit params ext02

EXTRACT ext02
USERIDALIAS fgedu_ggadmin
EXTTRAIL /oracle/goldengate/dirdat/et
TABLE fgedu.table2;

# 4. 启动进程
GGSCI (fgedu-node1.net.cn) 3> start mgr
GGSCI (fgedu-node1.net.cn) 4> start extract ext01

GGSCI (fgedu-node2.net.cn) 3> start mgr
GGSCI (fgedu-node2.net.cn) 4> start extract ext02

# 5. 验证双活架构
GGSCI (fgedu-node1.net.cn) 5> info all

Program Status Group Lag at Chkpt Time Since Chkpt

MANAGER RUNNING
EXTRACT RUNNING EXT01 00:00:00 00:00:05

GGSCI (fgedu-node2.net.cn) 5> info all

Program Status Group Lag at Chkpt Time Since Chkpt

MANAGER RUNNING
EXTRACT RUNNING EXT02 00:00:00 00:00:03

4.3 故障切换实战

# 1. 创建故障切换脚本
$ vi /oracle/goldengate/ha/gg_failover.sh
# 复制上面的脚本内容

# 2. 设置执行权限
$ chmod +x /oracle/goldengate/ha/gg_failover.sh

# 3. 添加到定时任务
$ crontab -e
# 添加以下内容
*/5 * * * * /oracle/goldengate/ha/gg_failover.sh

# 4. 模拟主实例故障
$ ssh fgedu-primary.net.cn “service oracle-gg stop”

# 5. 查看故障切换日志
$ tail -f /oracle/goldengate/ha/gg_failover_20260403.log

2026-04-03 10:00:00: 开始GoldenGate故障切换检测
2026-04-03 10:00:01: 检查主GoldenGate实例状态…
2026-04-03 10:00:02: 主GoldenGate实例不可用
2026-04-03 10:00:03: 触发故障切换
2026-04-03 10:00:04: 启动备用GoldenGate实例…
2026-04-03 10:00:05: 备用GoldenGate实例启动成功
2026-04-03 10:00:06: 故障切换完成
2026-04-03 10:00:07: GoldenGate故障切换检测完成

# 6. 验证备用实例状态
GGSCI (fgedu-standby.net.cn) 1> info all

Program Status Group Lag at Chkpt Time Since Chkpt

MANAGER RUNNING
EXTRACT RUNNING EXT01 00:00:00 00:00:05
EXTRACT RUNNING DP01 00:00:00 00:00:03
REPLICAT RUNNING REP01 00:00:00 00:00:02

Part05-风哥经验总结与分享

5.1 高可用性最佳实践

  • 冗余设计:配置冗余的GoldenGate实例
  • 自动故障切换:实现自动故障切换机制
  • 监控告警:建立完善的监控和告警机制
  • 定期测试:定期测试故障切换流程
  • 文档记录:记录高可用性配置和故障切换流程

5.2 高可用性注意事项

  • 确保备用实例与主实例配置一致
  • 定期同步配置文件和Trail文件
  • 监控系统资源使用情况
  • 建立故障切换测试机制
  • 培训运维人员,提高故障处理能力

5.3 高可用性建议

  • 选择合适的高可用性架构
  • 配置合理的故障切换机制
  • 建立完善的监控和告警机制
  • 定期测试故障切换流程
  • 持续优化高可用性配置
  • 建立高可用性知识库,积累经验

更多视频教程www.fgedu.net.cn

更多学习教程公众号风哥教程itpux_com

from oracle:www.itpux.com

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

联系我们

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

微信号:itpux-com

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