内容大纲
内容简介:本文主要介绍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 主备架构配置
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 双活架构配置
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 故障切换配置
#!/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 高可用性监控
#!/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 主备架构实战
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 双活架构实战
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 故障切换实战
$ 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
