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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

基于Docker的GoldenGate部署

發布時間:2023/12/13 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 基于Docker的GoldenGate部署 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

??? Docker最近幾年異常火爆,主要是因為其方便、快捷、輕量,相對于VM,它不需要占用太多資源,隨時可以創建、刪除,或在已有image上添加一些軟件,再制作成另一個模板image供日后使用。Docker提供的Hub或private registry功能,也極大的方便了日常測試環境的配置和使用,類似于手機應用商店,可以按需下載,幫助企業在很短的時候內部署多個不同的DB環境,如Windows, Unbuntu, MySQL, Postgresql, Hive等,跟傳統的VM相比,占用資源更少,效率也更高。

針對軟件開發、測試和發布,Docker在DevOps更是如魚得水,將持續集成和測試提升到了一個新的高度。不過,今天主要介紹GoldenGate在Docker環境下的使用和心得。

GoldenGate主要用于關系型數據庫的增量數據捕獲和實時投遞,支持Oracle, MySQL, SQLServer, DB2, Sybase, Big data等。通過將GoldenGate制作成Docker Image,可以很容易的搭建一套捕獲增量數據的測試環境,同時,也可以在企業內部實現快速的GoldenGate部署。

本次測試主要有三套Docker環境

l Oracle DB on Docker

l OGG on Docker with Oracle Instant client and OGG for mysql

l MySQL on Docker

下面測試以Oracle DB為源數據庫,使用OGG遠程抽取增量數據,再將增量數據投遞到MySQL中。架構如下:

Docker環境準備

Oracle on docker準備

針對Oracle DB on docker,可以從store.docker.com上下載,也可以自己在一個Oracle Linux容器中安裝oracle db,從省事的角度,我們直接從docker hub上面pull即可,不過需要先在docker網站創建賬號,然后才能下載oracle db image

docker login

docker pull store/oracle/database-enterprise:12.2.0.1

由于當前是oracle db 12.2版本,因此,OGG for oracle只能使用12.3版本。

Mysql on docker準備

直接下載官方的image即可。

docker pull mysql

OGG on docker準備

GoldenGate Image沒有現成的,所以還需要我們手工生成。本次測試主要是為了展現docker的可重用性,因此,我們在一個image中部署有ogg for oracle和ogg for mysql。

由于ogg for oracle需要有OCI才能正常運行,所以我們可以直接使用docker oracle instant client image,在此基礎上再安裝ogg for oracle和ogg for mysql。

先準備oracle instance client image

docker pull store/oracle/database-instantclient:12.2.0.1

基于此image再建立一個包含ogg for oracle及ogg for mysql的image,需要先將安裝好的ogg目錄打包,再添加到docker中。

Dockerfile內容如下:

FROM container-registry.oracle.com/database/instantclient:12.2.0.1

ENV OGG_HOME=/u01/ogg123

ENV ORACLE_HOME=/lib/oracle/12.2/client64

ENV LD_LIBRARY_PATH=/lib/oracle/12.2/client64/lib

ENV TNS_ADMIN=/u01/tns

RUN mkdir /u01/tns/

ADD tnsnames.ora /u01/tns/

ADD ogg123.tar /u01/

ADD ggmysql.tar /u01/

EXPOSE 7809 7909

CMD ["/bin/bash"]


其中tnsnames.ora用于在ogg docker中訪問oracle db,內容如下:

其中172.17.0.3是oracle db docker的IP地址。

ORCLCDB=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=172.17.0.3)(PORT=1521))

(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=ORCLCDB.localdomain)))

ORCLPDB1=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=172.17.0.3)(PORT=1521))

(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=ORCLPDB1.localdomain)))


創建ogg image

docker build -t="ogg123mysql122" .

測試

下載的oracle db image默認是未打開歸檔的,所以需要根據OGG的配置要求,在oracle db上打開歸檔及設置其它參數,此處涉及到OGG的相關配置,在此略過。

啟動源端db on docker

docker run -d -it --name orcl –p 11521:1521 store/oracle/database-enterprise:12.2.0.1

#由于啟動DB需要花一定時間,等container運行正常之后,再連接到DB

docker exec -it orcl bash -c "source /home/oracle/.bashrc; sqlplus / as sysdba"

查看一下DB的相關信息

SQL> select instance_name from v$instance;

INSTANCE_NAME

----------------

ORCLCDB

SQL> show pdbs;

CON_ID CON_NAME OPEN MODE RESTRICTED

---------- ------------------------------ ---------- ----------

2 PDB$SEED READ ONLY NO

3 ORCLPDB1 READ WRITE NO

SQL>

切換到pdb上,查看我們的此次用到的測試表

啟動目標端DB

啟動mysql docker

docker run –ti –p 13306:3306 mysql /bin/bash

然后在內容中執行如下命令

#service mysql start

#mysql –u root

查看目標端的測試表

啟動OGG image并測試

根據前面創建的ogg image,運行并進入shell

docker run –ti --name oggdocker ogg123mysql122 /bin/bash

源端OGG for oracle

進入源端的ggsci,查看抽取進程參數及運行狀態

可以從OGG docker順利登錄到另一個docker內的oracle 源數據庫。

在源端DB插入測試數據,檢查OGG的捕獲進程情況。

OGG可以正常捕獲數據。

目標端ogg for mysql

投遞進程參數文件,通過docker內部IP,可正常登錄到mysql.

可以看到,數據可以正常投遞到mysql中。

以下是數據庫中的實際數據。

結論

可以看到,在具備ogg docker image的情況下,如果要部署一套實時的數據復制鏈路,只需要將docker run起來,通過簡單的參數配置即可。采用OGG+docker的架構,可以很快的提供數據復制測試和生產部署,同時,在大數據集成環境中,也可以很容易的部署多個投遞點,而不用擔心版本不一致。

轉載于:https://www.cnblogs.com/margiex/p/8999245.html

總結

以上是生活随笔為你收集整理的基于Docker的GoldenGate部署的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。