日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ogg oracle 测试kafka_基于OGG的Oracle与Hadoop集群/kafka准实时同步

發(fā)布時間:2023/12/10 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ogg oracle 测试kafka_基于OGG的Oracle与Hadoop集群/kafka准实时同步 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Oracle里存儲的結(jié)構(gòu)化數(shù)據(jù)導(dǎo)出到Hadoop體系做離線計算是一種常見數(shù)據(jù)處置手段。近期有場景需要做Oracle到Hadoop體系的實時導(dǎo)入,這里以此案例做以介紹。

Oracle作為商業(yè)化的數(shù)據(jù)庫解決方案,自發(fā)性的獲取數(shù)據(jù)庫事務(wù)日志等比較困難,故選擇官方提供的同步工具OGG(Oracle GoldenGate)來解決。

安裝與基本配置

環(huán)境說明

軟件配置角色數(shù)據(jù)存儲服務(wù)及版本OGG版本IP源服務(wù)器OracleRelease11.2.0.1Oracle GoldenGate 11.2.1.0 for Oracle on Linux x86-6410.0.0.25

目標(biāo)服務(wù)器Hadoop 2.7.2Oracle GoldenGate for Big Data 12.2.0.1 on Linux x86-6410.0.0.2

以上源服務(wù)器上OGG安裝在Oracle用戶下,目標(biāo)服務(wù)器上OGG安裝在root用戶下。

注意

Oracle導(dǎo)出到異構(gòu)的存儲系統(tǒng),如MySQL,DB2,PG等以及對應(yīng)的不同平臺,如AIX,Windows,Linux等官方都有提供對應(yīng)的Oracle GoldenGate版本,可在這里或者在舊版本查詢下載安裝。

Oracle源端基礎(chǔ)配置

將下載到的對應(yīng)OGG版本放在方便的位置并解壓,本示例Oracle源端最終的解壓目錄為/u01/gg。配置環(huán)境變量

這里的環(huán)境變量主要是對執(zhí)行OGG的用戶添加OGG相關(guān)的環(huán)境變量,本示例為Oracle用戶添加的環(huán)境變量如下:(/home/oracle/.bash_profile文件)

Oracle打開歸檔模式

使用如下命令查看當(dāng)前是否為歸檔模式(archive)

如非以上狀態(tài),手動調(diào)整即可

Oracle打開日志相關(guān)

OGG基于輔助日志等進行實時傳輸,故需要打開相關(guān)日志確保可獲取事務(wù)內(nèi)容。通過一下命令查看當(dāng)前狀態(tài):

如果以上查詢結(jié)果非YES,可通過以下命令修改狀態(tài):

Oracle創(chuàng)建復(fù)制用戶

為了使Oracle里用戶的復(fù)制權(quán)限更加單純,故專門創(chuàng)建復(fù)制用戶,并賦予dba權(quán)限

最終這個ggs帳號的權(quán)限如下所示:

OGG初始化

進入OGG的主目錄執(zhí)行./ggsci,進入OGG命令行

Oracle創(chuàng)建模擬復(fù)制庫表

模擬建一個用戶叫tcloud,密碼tcloud,同時基于這個用戶建一張表,叫t_ogg。

目標(biāo)端基礎(chǔ)配置

將下載到的對應(yīng)OGG版本放在方便的位置并解壓,本示例Oracle目標(biāo)端最終的解壓目錄為/data/gg。配置環(huán)境變量

這里需要用到HDFS相關(guān)的庫,故需要配置java環(huán)境變量以及OGG相關(guān),并引入HDFS的相關(guān)庫文件,參考配置如下:

OGG初始化

目標(biāo)端的OGG初始化和源端類似進入OGG的主目錄執(zhí)行./ggsci,進入OGG命令行

Oracle源配置

Oracle實時傳輸?shù)紿adoop集群(HDFS,Hive,Kafka等)的基本原理如圖:

根據(jù)如上原理,配置大概分為如下步驟:源端目標(biāo)端配置ogg管理器(mgr);源端配置extract進程進行Oracle日志抓取;源端配置pump進程傳輸抓取內(nèi)容到目標(biāo)端;目標(biāo)端配置replicate進程復(fù)制日志到Hadoop集群或者復(fù)制到用戶自定義的解析器將最終結(jié)果落入到Hadoop集群。

配置全局變量

在源端服務(wù)器OGG主目錄下,執(zhí)行./ggsci到OGG命令行下,執(zhí)行如下命令:

其中./globals變量沒有的話可以用edit params ./globals來編輯添加即可(編輯器默認(rèn)使用的vim)

配置管理器mgr

在OGG命令行下執(zhí)行如下命令:

說明:PORT即mgr的默認(rèn)監(jiān)聽端口;DYNAMICPORTLIST動態(tài)端口列表,當(dāng)指定的mgr端口不可用時,會在這個端口列表中選擇一個,最大指定范圍為256個;AUTORESTART重啟參數(shù)設(shè)置表示重啟所有EXTRACT進程,最多5次,每次間隔3分鐘;PURGEOLDEXTRACTS即TRAIL文件的定期清理

在命令行下執(zhí)行start mgr即可啟動管理進程,通過info mgr可查看mgr狀態(tài)

添加復(fù)制表

在OGG命令行下執(zhí)行添加需要復(fù)制的表的操作,如下:

配置extract進程

配置extract進程OGG命令行下執(zhí)行如下命令:

說明:第一行指定extract進程名稱;dynamicresolution動態(tài)解析;SETENV設(shè)置環(huán)境變量,這里分別設(shè)置了Oracle數(shù)據(jù)庫以及字符集;userid ggs,password ggs即OGG連接Oracle數(shù)據(jù)庫的帳號密碼,這里使用2.3.4中特意創(chuàng)建的復(fù)制帳號;exttrail定義trail文件的保存位置以及文件名,注意這里文件名只能是2個字母,其余部分OGG會補齊;table即復(fù)制表的表明,支持*通配,必須以;結(jié)尾

接下來在OGG命令行執(zhí)行如下命令添加extract進程:

最后添加trail文件的定義與extract進程綁定:

可在OGG命令行下通過info命令查看狀態(tài):

配置pump進程

pump進程本質(zhì)上來說也是一個extract,只不過他的作用僅僅是把trail文件傳遞到目標(biāo)端,配置過程和extract進程類似,只是邏輯上稱之為pump進程

在OGG命令行下執(zhí)行:

說明:第一行指定extract進程名稱;passthru即禁止OGG與Oracle交互,我們這里使用pump邏輯傳輸,故禁止即可;dynamicresolution動態(tài)解析;userid ggs,password ggs即OGG連接Oracle數(shù)據(jù)庫的帳號密碼,這里使用2.3.4中特意創(chuàng)建的復(fù)制帳號;rmthost和mgrhost即目標(biāo)端OGG的mgr服務(wù)的地址以及監(jiān)聽端口;rmttrail即目標(biāo)端trail文件存儲位置以及名稱

分別將本地trail文件和目標(biāo)端的trail文件綁定到extract進程:

同樣可以在OGG命令行下使用info查看進程狀態(tài):

配置define文件

Oracle與MySQL,Hadoop集群(HDFS,Hive,kafka等)等之間數(shù)據(jù)傳輸可以定義為異構(gòu)數(shù)據(jù)類型的傳輸,故需要定義表之間的關(guān)系映射,在OGG命令行執(zhí)行:

在OGG主目錄下執(zhí)行:

./defgen paramfile dirprm/tcloud.prm

完成之后會生成這樣的文件/u01/gg/dirdef/tcloud.t_ogg,將這個文件拷貝到目標(biāo)端的OGG主目錄下的dirdef目錄即可。

目標(biāo)端的配置

創(chuàng)建目標(biāo)表(目錄)

這里主要是當(dāng)目標(biāo)端為HDFS目錄或者Hive表或者MySQL數(shù)據(jù)庫時需要手動先在目標(biāo)端創(chuàng)建好目錄或者表,創(chuàng)建方法都類似,這里我們模擬實時傳入到HDFS目錄,故手動創(chuàng)建一個接收目錄即可

hadoop –fs mkdir /gg/replication/hive/

配置管理器mgr

目標(biāo)端的OGG管理器(mgr)和源端的配置類似,在OGG命令行下執(zhí)行:

配置checkpoint

checkpoint即復(fù)制可追溯的一個偏移量記錄,在全局配置里添加checkpoint表即可

保存即可

配置replicate進程

在OGG的命令行下執(zhí)行:

說明:REPLICATE r2hdfs定義rep進程名稱;sourcedefs即在3.6中在源服務(wù)器上做的表映射文件;TARGETDB LIBFILE即定義HDFS一些適配性的庫文件以及配置文件,配置文件位于OGG主目錄下的dirprm/hdfs.props;REPORTCOUNT即復(fù)制任務(wù)的報告生成頻率;GROUPTRANSOPS為以事務(wù)傳輸時,事務(wù)合并的單位,減少IO操作;MAP即源端與目標(biāo)端的映射關(guān)系

其中property=dirprm/hdfs.props的配置中,最主要的幾項配置及注釋如下:

具體的OGG for Big Data支持參數(shù)以及定義可參考地址

最后在OGG的命令行下執(zhí)行:

將文件與復(fù)制進程綁定即可

測試

啟動進程

在源端和目標(biāo)端的OGG命令行下使用start [進程名]的形式啟動所有進程。

啟動順序按照源mgr——目標(biāo)mgr——源extract——源pump——目標(biāo)replicate來完成。

檢查進程狀態(tài)

以上啟動完成之后,可在源端與目標(biāo)端的OGG命令行下使用info [進程名]來查看所有進程狀態(tài),如下:

源端:

目標(biāo)端:

所有的狀態(tài)均是RUNNING即可。(當(dāng)然也可以使用info all來查看所有進程狀態(tài))

測試同步更新效果

測試方法比較簡單,直接在源端的數(shù)據(jù)表中insert,update,delete操作即可。由于Oracle到Hadoop集群的同步是異構(gòu)形式,目前尚不支持truncate操作。

源端進行insert操作

查看源端trail文件狀態(tài)

查看目標(biāo)端trail文件狀態(tài)

查看HDFS中是否有寫入

注意:從寫入到HDFS的文件內(nèi)容看,文件的格式如下:

很明顯Oracle的數(shù)據(jù)已準(zhǔn)實時導(dǎo)入到HDFS了。導(dǎo)入的內(nèi)容實際是一條條的類似流水日志(具體日志格式不同的傳輸格式,內(nèi)容略有差異,本例使用的delimitedtext。格式為操作符 數(shù)據(jù)庫.表名 操作時間戳(GMT+0) 當(dāng)前時間戳(GMT+8) 偏移量 字段1名稱 字段1內(nèi)容 字段2名稱 字段2內(nèi)容),如果要和Oracle的表內(nèi)容完全一致,需要客戶手動實現(xiàn)解析日志并寫入到Hive的功能,這里官方并沒有提供適配器。目前騰訊側(cè)已實現(xiàn)該功能的開發(fā)。

當(dāng)然你可以直接把這個HDFS的路徑通過LOCATION的方式在Hive上建外表(external table)達到實時導(dǎo)入Hive的目的。

總結(jié)

OGG for Big Data實現(xiàn)了Oracle實時同步到Hadoop體系的接口,但得到的日志目前仍需應(yīng)用層來解析(關(guān)系型數(shù)據(jù)庫如MySQL時OGG對應(yīng)版本已實現(xiàn)應(yīng)用層的解析,無需人工解析)。

OGG的幾個主要進程mgr,extract,pump,replicate配置方便,可快速配置OGG與異構(gòu)關(guān)系存儲結(jié)構(gòu)的實時同步。后續(xù)如果有新增表,修改對應(yīng)的extract,pump和replicate進程即可,當(dāng)然如果是一整個庫,在配置上述2個進程時,使用通配的方式即可。

附錄

OGG到Hadoop體系的實時同步時,可在源端extract和pump進程配置不變的情況下,直接在目標(biāo)端增加replicate進程的方式,增加同步目標(biāo),以下簡單介紹本示例中增加同步到Kafka的配置方法。

本示例中extract,pump進程都是現(xiàn)成的,無需再添加。只需要在目標(biāo)端增加同步到Kafka的replicate進程即可。

在OGG的命令行下執(zhí)行:

replicate進程和導(dǎo)入到HDFS的配置類似,差異是調(diào)用不同的配置dirprm/r2kafka.props。這個配置的主要配置如下:

r2kafka.props引用的custom_kafka_producer.properties定義了Kafka的相關(guān)配置如下:

以上配置以及其他可配置項可參考地址:

以上配置完成后,在OGG命令行下添加trail文件到replicate進程并啟動導(dǎo)入到Kafka的replicate進程

檢查實時同步到kafka的效果,在Oracle源端更新表的同時,使用kafka客戶端自帶的腳本去查看這里配置的ggtopic這個kafkatopic下的消息:

目標(biāo)端Kafka的同步情況:

顯然,Oracle的數(shù)據(jù)已準(zhǔn)實時同步到Kafka。從頭開始消費這個topic發(fā)現(xiàn)之前的同步信息也存在。架構(gòu)上可以直接接Storm,SparkStreaming等直接消費kafka消息進行業(yè)務(wù)邏輯的處理。

從Oracle實時同步到其他的Hadoop集群中,官方最新版本提供了HDFS,HBase,Flume和Kafka,相關(guān)配置可參考官網(wǎng)給出的例子配置即可。

總結(jié)

以上是生活随笔為你收集整理的ogg oracle 测试kafka_基于OGG的Oracle与Hadoop集群/kafka准实时同步的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。