Oracle GoldenGate 19 Microservices数据同步实战与故障处理
【概要】
由于公众号单篇文章的限制,上一篇文章只讲OGG Microservices for oracle数据库安装与配置,对于如何通过WEB端配置数据同步、如何通过命令行查看与管理服务、进程以及简单故障处理都没有讲解,所以本篇主要讲解如何通过WEB端来配置数据同步(与GGSCI命令行创建与管理抽取、传输以及应用进程类似)以及如何通过adminclient来直接查看与管理服务以及进程。
本文主要介绍OGG 19微服务架构安装、配置以及简单数据同步案例演示.
OS Version |
Oracle Linux 7.5 X86-64 |
---|---|
DB Version |
Oracle 11.2.0.4 X86-64 |
RAC & ASM |
2个节点的RAC,采用ASM作为数据库存储空间 |
通过学习本篇文章,你将快速掌握如下内容:
- 配置oracle数据库来满足OGG同步要求
- 通过web端能够快速配置ogg的数据同步功能,包括创建与管理抽取进程、传输进程、应用进程以及验证数据同步
- 通过adminclient命令行管理各种服务、进程,与ggsci命令相似
- 通过web能够快速查看各种监控性能数据,如延迟数据、各种统计信息,使用传统ggsci命令查看,相对来说比较麻烦且不直观
备注:如你对于安装与配置微服务还不熟悉,请通过上一篇文章来学习如何配置.
【检查与修改数据库配置FOR OGG】
- 数据库主要配置任务
1.开启数据库归档--如果没有开启
2.开启数据库级别附加日志--如果没有开始最小附加日志
3.开启强制日志--如果没有开启强制日志
4.设置ENABLE_GOLDENGATE_REPLICAT参数为TRUE
5.创建OGG用户包括包括源端用户、目标端用户以及OGG抽取用户
- 检查数据库参数配置是否满足OGG需求
备注:1,2,3项目都不满足,都需要调整.
select name,supplemental_log_data_min , force_logging, log_mode from v$database;
NAME SUPPLEME FOR LOG_MODE
--------- -------- --- ------------
XIAOXU NO NO NOARCHIVELOG
- 重启数据库到mount状态执行如下脚本
shutdown immediate(单实例) or srvctl stop database -d xiaoxu(rac建议)
startup mount
alter system set log_archive_dest_1='location=+data';
alter database archivelog;
alter database add supplemental log data;
alter database force logging;
alter system set enable_goldengate_replication=TRUE;
alter database open;
- 再次检查数据库参数配置是否满足OGG需求
select name,supplemental_log_data_min , force_logging, log_mode from v$database;
NAME SUPPLEME FOR LOG_MODE
--------- -------- --- ------------
XIAOXU YES YES ARCHIVELOG
show parameter goldengate
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
enable_goldengate_replication boolean TRUE
- 创建OGG管理用户:ggadmin
CREATE USER ggadmin identified by ggadmin;
GRANT DBA to ggadmin;
- 创建业务用户分别是source和target用户
Create user source identified by source;
Grant connect, resource, create session, alter session to source;
Grant unlimited tablespace to source;
Create user target identified by target;
Grant connect, resource, create session, alter session to target;
Grant unlimited tablespace to target;
【总结】至此完成oracle database配置以及用户创建,为后续OGG同步数据做准备.
【配置OGG的经典抽取(classic extract)进程】
⏰如果采用classic extract同步ddl,需要通过OGG_HOME的bin路径下adminclient来配置,WEB暂无接口,如果需要DDL同步建议采用集成模式
备注:1-11步通过web完成extract创建以及DML配置,12步通过adminclient来配置DDL
- 通过web的Administration Server来配置exact进程,点击Administration Server进程进入配置页面,Administration Server主要配置与管理extract和replicat进程.
- 点击extract右上角+号来新增extract
- 选择classic extact后点击next(支持初始化、经典模式、集成模式)
- 输入extract名称、同步类型以及配置认证
- 采用已创建的认证,微服务不支持直接输入账号与密码,需要采用别名方式
备注:如果采用日志在asm上,增加tranlogoptions dblogreader参数
- extract创建完成,但是没有启动
- 通过Action中各种选项来查看、启动、修改、删除进程
- 启动进程之前开始附加日志(与经典架构一样)点击左上角三一图标中configuration配置
- 点击数据库图标(这个是配置数据源信息)开始配置
- 选择Schema或者Table级别附加信息类型后点击+号进入配置页面
--备注:12.3版本名字是:Trandata,19版本变成Transaction information
- 可以配置extract自动启动、启动启动以及trailfile管理策略
- 使用sys用户登陆数据库来配置DDL经典架构下通过ggsci命令下使用dblogin登陆数据库,微服务架构在adminclient命令行先连接到Service Manager,然后才能使用dblogin访问数据库,DDL脚本路径:$ORACLE_HOME/lib/sql/legacy.
- 修改extract参数,增加ddl配置
- 启动extract进程--start无选项是同步方式,在后台是异步方式
【总结】至此完成oracle goldengate Microservices的classic extract的DML和DDL配置.
【配置OGG的传输进程】
备注:微服务版本中传输进程用Distribution Server替换经典架构中PUMP进程
- 在service Manager首页点击Distribution Server的8002端口进入配置页面
- 点击➕号创建Distribution Server进程
- 配置Add path的信息创建和运行按钮(传统架构是extract name,现在是Path Name)
- Distribution Server进程被创建,被Receiver server的8003端口接收
【总结】至此完成oracle goldengate Microservices的Distribution Server配置。
【配置OGG的经典应用进程】
⏰配置应用进程之前先配置checkpointtable表存放应用进程的消息,包括seqno、rba、time以及事务信息 .
- 在左侧Configuration中database增加checkpointtable
- checkpointtable已经创建成功.
- 通过web的Administration Server来配置replicat进程,点击Administration Server进程进入配置页面,点击+号
- 选择replicat类型,选择Nointegrated Replicat类型
- 配置replicate名字、checkpointtable等相关信息
- 检查与修改参数后(与ggsci配置类似),点击Create and Run.
- 创建完成后进程信息如下
【总结】至此完成oracle goldengate Microservices的经典同步数据过程,包括extract、Distribution Server、replicat配置。
【数据同步测试】
- 手动在source创建新表,验证能否自动同步DDL
SQL> create table source.xiaoxu_new(id int not null primary key,name varchar2(50),address varchar2(100));
Table created.
- 插入数据到source.xiaoxu
SQL> conn source
Enter password:
Connected.
SQL> insert into xiaoxu_new values(1,'xiaoxu','shanghai');
1 row created.
SQL> insert into xiaoxu_new values(2,'xiaoxing','shanghai');
1 row created.
SQL> insert into xiaoxu_new values(3,'xiaoyaba','shanghai');
1 row created.
SQL> commit;
Commit complete.
- 在Service Manager页面点击Administration Server检查extract和replicat页面上Action中的Details来看统计信息或者Performance Metrics Server检查extract和replicat的database statistics
- extract总的统计信息
- extract详细信息
- replicat统计信息
- replicat详细信息
【总结】至此完成oracle goldengate Microservices的DDL+DML数据同步过程。
【通过adminclient命令行来管理】
⏰经典架构下通过ggsci命令下使用dblogin登陆数据库以及各种管理操作,微服务架构在adminclient命令行先连接到Service Manager,然后才能使用dblogin访问数据库和各种管理操作.
- 如何访问adminclient以及登陆数据库
⏰进入OGG_HOME/bin目录,调用adminclient命令进入命令行模式,也是调用service manager的REST API接口来操作(类似登陆WEB).然后dblogin来访问数据库
具体命令(如果不先connect登陆,什么命令不好使)
cd $OGG_HOME/bin
./adminclient
访问service manager api:connect http://192.168.124.97:7809 deployment deploymentname as oggadmin password oggadmin
登陆database:dblogin useridalias ggadmin domain oggadmin
2.adminclient与ggsci命令基本相同
⏰如何创建、启动、删除,有些命令,web功能虽然好用,有些功能不支持,例如配置ddl、修改指定thread的scn、time、seqno、rba不支持
OGG (http://192.168.124.97:7809 deploy11g as ggadmin@XIAOXU) 5> info ext01
EXTRACT EXT01 Last Started 2019-07-30 23:01 Status RUNNING
Checkpoint Lag 00:00:03 (updated 00:00:09 ago)
Process ID 1529
Log Read Checkpoint Oracle Redo Logs
2019-07-31 00:14:38 Thread 1, Seqno 12, RBA 8719360
SCN 0.1157041 (1157041)
Log Read Checkpoint Oracle Redo Logs
2019-07-30 16:14:34 Thread 2, Seqno 5, RBA 8593408
SCN 0.1157040 (1157040)
Encryption Profile LocalWallet
No REPLICAT groups found, but some coordinated threads may have been excluded
OGG (http://192.168.124.97:7809 deploy11g as ggadmin@XIAOXU) 6> info rep
No EXTRACT groups found, but some coordinated threads may have been excluded
REPLICAT REP Last Started 2019-07-30 23:09 Status RUNNING
Checkpoint Lag 00:00:00 (updated 00:00:06 ago)
Process ID 13392
Log Read Checkpoint File /u01/app/ogg/db11.2/ogg191_deploy/var/lib/data/rt000000000
2019-07-30 23:30:09.997803 RBA 4948
Settings Profile Default
Encryption Profile LocalWallet
[CLASSIC抽取无法抽取到数据以及问题排查】
- 配置classic extract后无法捕获到DML变化情况
在Administration Server里面选择点击抽取进程的action的detail
--发现rac 2个节点信息,只发现一个无具体信息.有没有办法类似经典架构ggsci命令直接查看进程信息,现在名字叫adminclient
2.进入OGG_HOME/bin目录,调用adminclient命令进入命令行模式
OGG (not connected) 2> connect http://192.168.124.97:7809 deployment deploy11g as oggadmin password oggadmin
OGG (http://192.168.124.97:7809 deploy11g) 3> info all
Program Status Group Type Lag at Chkpt Time Since Chkpt
ADMINSRVR RUNNING
DISTSRVR RUNNING
PMSRVR RUNNING
RECVSRVR RUNNING
EXTRACT RUNNING EXT01 CLASSIC 00:00:00 00:00:01
EXTRACT RUNNING EXT02 CLASSIC 00:00:03 00:00:03
- 查看进程状态--发现thread 2的extseqno和extrba都是0,数据库切换日志、以及重启进程都无效果.
OGG (http://192.168.124.97:7809 deploy11g) 4> info EXT02
EXTRACT EXT02 Last Started 2019-07-30 11:29 Status RUNNING
Checkpoint Lag 00:00:02 (updated 00:00:07 ago)
Process ID 7058
Log Read Checkpoint Oracle Redo Logs
2019-07-30 11:45:12 Thread 1, Seqno 9, RBA 18807808
SCN 0.1054997 (1054997)
Log Read Checkpoint Oracle Redo Logs
2019-07-30 11:26:09 Thread 2, Seqno 0, RBA 0
SCN 0.0 (0)
Settings Profile Default
Encryption Profile LocalWallet
No REPLICAT groups found, but some coordinated threads may have been excluded
- 手动修改thread 2 的extseqno=1、extrba=0的值,提示没有开启附加日志,最后发现2个节点时间不一致,导致使用begin now后一个节点可以识别,thread 2无法识别也无错误
OGG (http://192.168.124.97:7809 deploy11g) 6> alter extract ext02,extseqno 1,extrba 0,thread 2
OGG (http://192.168.124.97:7809 deploy11g) 7> start ext02
2019-07-30T03:51:11Z INFO OGG-00975 EXTRACT EXT02 starting
2019-07-30T03:51:11Z INFO OGG-15426 EXTRACT EXT02 started
OGG (http://192.168.124.97:7809 deploy11g) 11> info ext02
EXTRACT EXT02 Last Started 2019-07-30 11:51 Status RUNNING
Checkpoint Lag 00:05:02 (updated 00:00:10 ago)
Process ID 20190
Log Read Checkpoint Oracle Redo Logs
2019-07-30 11:46:05 Thread 1, Seqno 9, RBA 18834448
SCN 0.1055111 (1055111)
Log Read Checkpoint Oracle Redo Logs
2019-07-30 11:26:09 Thread 2, Seqno 1, RBA 0
SCN 0.0 (0)
Settings Profile Default
Encryption Profile LocalWallet
No REPLICAT groups found, but some coordinated threads may have been excluded
OGG (http://192.168.124.97:7809 deploy11g) 12> info ext02
EXTRACT EXT02 Last Started 2019-07-30 11:51 Status ABENDED
Checkpoint Lag 00:05:02 (updated 00:00:11 ago)
Log Read Checkpoint Oracle Redo Logs
2019-07-30 11:46:05 Thread 1, Seqno 9, RBA 18834448
SCN 0.1055111 (1055111)
Log Read Checkpoint Oracle Redo Logs
2019-07-30 11:26:09 Thread 2, Seqno 1, RBA 0
SCN 0.0 (0)
Settings Profile Default
Encryption Profile LocalWallet
No REPLICAT groups found, but some coordinated threads may have been excluded
错误日志如下--此时发现附加日志没有开启,其实已开启.对比2个节点时间不一致.
2019-07-30 11:51:17 ERROR OGG-00730 No minimum supplemental logging is enabled.
- 手动修改thread 2 的extseqno 、extrba的值为当前值(类似节点2点begin now)后恢复 ⏰rac 2个节点需要保持一致,避免出现节点剔除集群或者sysdate取值等问题.最终修改2个节点时间。
OGG (http://192.168.124.97:7809 deploy11g) 43> alter extract ext02,extseqno 4,extrba 0,thread 2
OGG (http://192.168.124.97:7809 deploy11g) 43>start ext02
OGG (http://192.168.124.97:7809 deploy11g) 42> info ext02
EXTRACT EXT02 Last Started 2019-07-30 12:03 Status RUNNING
Checkpoint Lag 00:00:02 (updated 00:00:07 ago)
Process ID 23973
Log Read Checkpoint Oracle Redo Logs
2019-07-30 12:03:12 Thread 1, Seqno 9, RBA 21518336
SCN 0.1057982 (1057982)
Log Read Checkpoint Oracle Redo Logs
2019-07-30 04:03:11 Thread 2, Seqno 4, RBA 2557440
SCN 0.1057981 (1057981)
Settings Profile Default
Encryption Profile LocalWallet
No REPLICAT groups found, but some coordinated threads may have been excluded
OGG (http://192.168.124.97:7809 deploy11g) 43>
- 通过web无法修改指定thread的extseqno和extrba的信息,可以修改sequence和rba,但是无法指定thread,修改的时会提示你必须指定thread
【总结】oracle goldengate 19 Microservices安装、配置以及数据同步实战到此结束。
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- LeetCode | 225.用队列实现栈
- springboot开发之显示员工信息
- LeetCode | 232.用栈实现队列
- springboot开发之thymeleaf页面公共元素的抽取
- Redis | Redis 通用命令
- python爬虫--自动下载cosplay小姐姐图片(xpath使用自定义创建文件路径)
- springboot开发之修改员工
- LeetCode | 703.数据流中的第K大元素
- springboot开发之配置自定义的错误界面和错误信息
- springboot开发之删除员工
- LeetCode | 1.两数之和
- springboot开发之配置嵌入式Servlet容器两种方式
- jvaa之初始化块
- java之匿名内部类
- springboot配置之获取配置文件中属性的第二种方法(@Value)不同于@ConfigurationProperties