物流项目中Oracle 数据库的使用及OGG是如何同步_oracle ogg数据同步(1)

当Oracle数据库服务和监听服务启动完成以后,执行如下命令,如果成功,表示服务OK

SQL> select instance_name AS “SID”,host_name,version from v$instance;

SID

HOST_NAME

VERSION

orcl
server01
11.2.0.1.0



> 
> 使用工具:`DBeave`数据库客户端,连接Oracle数据库
> 
> 
> 


![1615774285905](https://img-blog.csdnimg.cn/img_convert/c173dbdddae2bbf428d686f6d9ec1b59.png)



> 
> 创建Oracle数据库连接,填写上述配置信息,测试连接是否成功过
> 
> 
> 


![1615774455827](https://img-blog.csdnimg.cn/img_convert/3f904e684a8029be17b59ae978d03faf.png)



> 
> 连接到Oracle数据库,打开表,查看数据
> 
> 
> 


![1615774525332](https://img-blog.csdnimg.cn/img_convert/29d634f2e75560200135a786cd260d2b.png)


### 06-[掌握]-OGG 数据同步之功能概述



> 
> ​ 针对整个物流项目来说,数据采集属于`实时增量采集`数据,只要业务数据一旦产生,就立即将业务数据获取,进行ETL转换,存储到存储引擎中(比如Kudu数据库和Es索引等)。
> 
> 
> * 1)、业务数据量比较多,快速存储
> * 2)、实时性业务分析统计,快速分析
> 
> 
> 使用OGG中间件(框架)实时采集Oracle数据库表的数据,同步到Kafka分布式消息队列中。
> 
> 
> OGG 是一种基于`日志`的结构化数据复制软件,它通过`解析源数据库在线日志:online log或归档日志:archive log`获得数据的`增删改`变化(数据量只有日志的四分之一左右);
> 
> 
> 


![1612320791630](https://img-blog.csdnimg.cn/img_convert/4fc202e706d0c54d0f33732903056cc1.png)



> 
> ​ OGG 能够实现大量交易数据的实时捕捉,变换和投递,实现源数据库与目标数据库的数据同步,保持最少10ms的数据延迟。
> 
> 
> 


![1615776620433](https://img-blog.csdnimg.cn/img_convert/bbfe1e6cdf72f7ea1fffe84672e6b6f8.png)



> 
> 应用场景:主要三个方面
> 
> 
> * 高可用(HA:High Availability)容灾
> * 数据库迁移、升级(支持跨版本、异构数据库、零宕机时间、亚秒级恢复)
> * 实时数据集成(支持异构数据库、多源数据库)
> 
> 
> 


![1615776882220](https://img-blog.csdnimg.cn/img_convert/77630e2789695db71148b059b893a272.png)


### 07-[掌握]-OGG 数据同步之基本原理及架构



> 
> ​ Oracle GoldenGate 实现原理是通过抽取源端的redo log 或者 archive log ,然后通过TCP/IP投递到目标端,最后解析还原应用到目标端,使目标端实现 同源端数据同步。
> 
> 
> 详细OGG如何数据同步,基本原理和架构:
> 
> 
> * 1)、源端(SRC):获取Oracle数据表数据,从日志文件获取
> 	+ 管理者:`MGR(Manger)`
> 	+ 第一、进程:`Extract提取`进程,获取日志数据文件
> 	+ 第二、本地缓存:`Local TrailFile`,将日志文件数据存储到本地TrailFile文件中,缓存
> 	+ 第三、进程:(可选)`Pump进程`,将本地Local TrailFile发送给目标端
> * 2)、目标端(DST):发送数据到目标,如Topic
> 	+ 管理者:`MGR(Manger)`
> 	+ 第一、进程:`Collect进程`,接收源端pump进程发送的数据,新版添加进程
> 	+ 第二、远程缓存:RemoteTrailFile,目标端接收到数据文件以后,进行缓存
> 	+ 第三、进程:`Replicat进程`,复制进程,解析RemoteTrailFile文件,转换JSON格式,发送到Kafka
> 
> 
> 


![1612321610205](https://img-blog.csdnimg.cn/img_convert/0916a150eb5afa36b34961eaf7e81a10.png)



> 
> OGG采集数据时,完整结构如上如所示:分为源端SRC和目标端DST,都有自己管理进程MGR。
> 
> 
> 


![1615777550837](https://img-blog.csdnimg.cn/img_convert/b5100f3b0e830c6024ca55bed19f675c.png)



> 
> Extract 进程用来捕获数据源,有三种类型:
> 
> 
> * 1)、initial load:加载整张表的数据,属于批量加载
> * 2)、恢复日志/事务日志:恢复数据库表的数据
> * 3)、捕获模型,实时监控日志文件,已有数据,立即捕获
> 
> 
> 


![1615777650890](https://img-blog.csdnimg.cn/img_convert/09852f4b8954d1371f80304306211135.png)



> 
> ​ `Data pump` 是Extract的辅助可选组件,如果不配置Data pump,Extract将捕获的数据直接发给目标机器上的Collector进程。
> 
> 
> 


### 08-[理解]-OGG 数据同步之拓扑结构及支持环境



> 
> ​ OGG架构和原理,发现架构划分比较细(分工比较细),OGG在实际项目中,使用时,常见拓扑结构和支持环境,以后如果考虑使用OGG实时同步数据时参考。
> 
> 
> Oracle数据库配置集群Cluster,称为Oracle RAC(Real Application Cluster
> 
> 
> 


![1615778086744](https://img-blog.csdnimg.cn/img_convert/c217ad88e505a21df1fd4f284f6f76b0.png)



> 
> ​ 由此可见,GoldenGate TDM的复制模式非常灵活,用户可以根据自己的需求选择特定的复制方式,并根据系统扩展对复制进行扩展。
> 
> 
> 源和目标的操作系统和数据库可以进行任意的组合。
> 
> 
> 


![1615778445595](https://img-blog.csdnimg.cn/img_convert/cec8e85720ca5f2135da661d0fa744ef.png)



> 
> ​ 目前来说,如果企业项目使用OGG进行数据同步时,通常还是SRC为:Oracle数据库,DST:Oracle数据库或Kafka消息队列。
> 
> 
> 


### 09-[掌握]-OGG 数据同步之测试环境准备



> 
> 如何配置OGG实现实时数据同步到Kafka,无需掌握步骤,比较繁琐,让DBA完成。
> 
> 
> 


![1615779520603](https://img-blog.csdnimg.cn/img_convert/b69b7c74ae62ead9f6ec8bb861be55a5.png)



> 
> ​ 提供虚拟机【`node1.itcast.cn`】中Docker 容器【myoracle】已经安装完`OGG(源端和目标端)`,只需要启动OGG的源端SRC服务和目标端DST服务即可。
> 
> 
> * 1)、源端SRC
> 	+ Manager管理(`mgr`)、`Extract`进程、LocalTrail、`Pump`进程
> * 2)、目标端DST
> 	+ Manager管理(`mgr`)、Remote Trail 、复制进程`Replicat`
> 
> 
> 


![1612324623208](https://img-blog.csdnimg.cn/img_convert/4fcfac8cf76dac2fa7cae060028e0dc2.png)



> 
> ​ 由于使用OGG实时采集Oracle数据库表数据(日志文件),将数据同步到Kafka消息对象,所以首先启动Kafka服务(先启动Zookeeper服务),打开提供【`node2.itcast.cn`】,使用CM界面启动ZK和Kafka服务。
> 
> 
> 


![1615779939494](https://img-blog.csdnimg.cn/img_convert/b6e21fe47243f28e0d60255471eb3031.png)



> 
> 启动OGG配置服务,分为源端和目标端,参考提供【启动命令:Oracle数据库和OGG服务.txt】,具体命令;
> 
> 
> 



============= 切换到 oracle 账号,并且启动Oracle数据库 =============

第一步:启动源端mgr进程

[root@node1 ~]# docker exec -it myoracle /bin/bash
[root@server01 oracle]# su - oracle
Last login: Mon Mar 15 02:06:07 UTC 2021 on pts/1
-bash: warning: setlocale: LC_ALL: cannot change locale (en_US): No such file or directory
-bash: warning: setlocale: LC_ALL: cannot change locale (en_US): No such file or directory
[oracle@server01 ~]$ cd O G G S R C H O M E [ o r a c l e @ s e r v e r 01 s r c ] OGG_SRC_HOME [oracle@server01 src] OGGSRCHOME[oracle@server01src] ./ggsci

Oracle GoldenGate Command Interpreter for Oracle
Version 11.2.1.0.3 14400833 OGGCORE_11.2.1.0.3_PLATFORMS_120823.1258_FBO
Linux, x64, 64bit (optimized), Oracle 11g on Aug 23 2012 20:20:21

Copyright © 1995, 2012, Oracle and/or its affiliates. All rights reserved.

GGSCI (server01) 1> start mgr

Manager started.

GGSCI (server01) 2> info all

Program Status Group Lag at Chkpt Time Since Chkpt

MANAGER RUNNING
EXTRACT ABENDED EXTKAFKA 00:00:00 4598:05:35
EXTRACT ABENDED PUKAFKA 00:00:00 4598:05:31

第二步:启动目标端mgr进程

[root@node1 ~]# docker exec -it myoracle /bin/bash
[root@server01 oracle]# su - oracle
Last login: Mon Mar 15 03:48:01 UTC 2021 on pts/0
-bash: warning: setlocale: LC_ALL: cannot change locale (en_US): No such file or directory
-bash: warning: setlocale: LC_ALL: cannot change locale (en_US): No such file or directory
[oracle@server01 ~]$ cd O G G T G R H O M E [ o r a c l e @ s e r v e r 01 t g r ] OGG_TGR_HOME [oracle@server01 tgr] OGGTGRHOME[oracle@server01tgr] ./ggsci
start mgrOracle GoldenGate for Big Data
Version 12.3.1.1.1

Oracle GoldenGate Command Interpreter
Version 12.3.0.1.0 OGGCORE_OGGADP.12.3.0.1.0GA_PLATFORMS_170828.1608
Linux, x64, 64bit (optimized), Generic on Aug 28 2017 17:13:45
Operating system character set identified as US-ASCII.

Copyright © 1995, 2017, Oracle and/or its affiliates. All rights reserved.

GGSCI (server01) 2> start mgr
Manager started.

GGSCI (server01) 3> info all

Program Status Group Lag at Chkpt Time Since Chkpt

MANAGER RUNNING
REPLICAT ABENDED REKAFKA 00:00:00 4598:06:12

第三步:启动源端extract进程

GGSCI (server01) 3> start EXTKAFKA

Sending START request to MANAGER …
EXTRACT EXTKAFKA starting

第四步:启动源端pump进程

GGSCI (server01) 4> start PUKAFKA

Sending START request to MANAGER …
EXTRACT PUKAFKA starting

GGSCI (server01) 5> info all

Program Status Group Lag at Chkpt Time Since Chkpt

MANAGER RUNNING
EXTRACT RUNNING EXTKAFKA 4598:08:10 00:00:00
EXTRACT RUNNING PUKAFKA 00:00:00 4598:07:38

第五步:启动目标端replicate进程

GGSCI (server01) 4> start REKAFKA

Sending START request to MANAGER …
REPLICAT REKAFKA starting

GGSCI (server01) 7> info all

Program Status Group Lag at Chkpt Time Since Chkpt

MANAGER RUNNING
REPLICAT RUNNING REKAFKA 00:00:00 00:00:08



> 
> 使用KafkaTool工具连接Kafka集群,查看Topic信息和数据
> 
> 
> 


![1615780362820](https://img-blog.csdnimg.cn/img_convert/89ea812873f461cfd30056a29f4380da.png)


### 10-[掌握]-OGG 数据同步之物流数据同步Kafka



> 
> 采用OGG中间件将Oracle数据库表的数据实时同步到Kafka消息队列中:
> 
> 
> * 1)、源端 :Oracle数据库【itcast】
> * 2)、采集工具:OGG,分为SRC和DST
> * 3)、目标端:Kafka 消息队列【logistics】
> 
> 
> 测试:向Oracle数据库某张表中插入insert、更新update及删除delete操作,查看Kafka Topic中数据
> 
> 
> 目前OGG11版本,延迟性相对较大,在2s左右,需要进行合理化调参配置,到OGG12版本,很快。
> 
> 
> 


* 1)、插入数据测试



– 插入数据INSERT
INSERT INTO ITCAST.“tbl_company”(“id”, “company_name”, “city_id”, “company_number”, “company_addr”, “company_addr_gis”, “company_tel”, “is_sub_company”, “state”, “cdt”, “udt”, “remark”)VALUES(11, ‘广州码农速递邮箱公司’, 440100, NULL, ‘广州校区’, ‘117.28177895734918_31.842711680531399’, NULL, 1, 1, TO_DATE(‘2020-06-13 15:24:51’,‘yyyy-mm-dd hh24:mi:ss’), TO_DATE(‘2020-06-13 15:24:51’,‘yyyy-mm-dd hh24:mi:ss’), NULL);



> 
> 同步至Kafka Topic中JSON数据
> 
> 
> 



{
“table”: “ITCAST.tbl_company”,
“op_type”: “I”,
“op_ts”: “2021-03-15 03:57:07.000306”,
“current_ts”: “2021-03-15T03:57:20.578000”,
“pos”: “00000000150000001245”,
“after”: {
“id”: 11,
“company_name”: “广州码农速递邮箱公司”,
“city_id”: 440100,

img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化资料的朋友,可以戳这里获取

“after”: {
“id”: 11,
“company_name”: “广州码农速递邮箱公司”,
“city_id”: 440100,

[外链图片转存中…(img-raxWXsjJ-1714524608522)]
[外链图片转存中…(img-xYppoULm-1714524608523)]
[外链图片转存中…(img-Weyg9ADF-1714524608523)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化资料的朋友,可以戳这里获取

  • 10
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值