OGG(oracle goldengate)oracleからmysql異性環境へのデータ同期を実現


環境の紹介
source
データベースバージョン:Oracle RDBMS 11.2.0.3 goldengateバージョン:OGfor oracle OGG-12.2.0.1 IP:192.168.1.1インストールディレクトリ:/home/oggs OGGデータベースユーザー:ggs OGGデータベース表領域:oggtbs
target
データベースバージョン:MySQL 5.7.24 goldengateバージョン:OGfor mysql OGG-12..0.1 IP:192.168.1.2インストールディレクトリ:/home/oggt OGGデータベースユーザー:ggtテストデータベース:targetdb OGGセルフデータベース:ogg
ソース環境の準備
オペレーティングシステムアカウントoggoraを作成します.このユーザーは、関連ファイルにアクセスできるようにデータベースシステムアカウントと同じグループになります.
[root@source ~]# useradd -g oinstall oggora [root@source ~]# id oggora uid=501(oggora) gid=500(oinstall) groups=500(oinstall)
ソース・データベースの設定
ogg表領域、データベースユーザー、テストユーザー、テストテーブルの作成
--     ,   OGG  ,   ,         OGG
SQL> CREATE TABLESPACE oggtbs DATAFILE 
  '/home/oracle/oradata/oggtbs.dbf' SIZE 1024M AUTOEXTEND ON NEXT 100M MAXSIZE UNLIMITED
LOGGING
EXTENT MANAGEMENT LOCAL AUTOALLOCATE
BLOCKSIZE 8K
SEGMENT SPACE MANAGEMENT AUTO
FLASHBACK ON;
Tablespace created.

SQL> create user ggs identified by 123456 default tablespace oggtbs;
User created.

SQL> grant connect,resource,dba to ggs;
Grant succeeded.

SQL> exec dbms_goldengate_auth.grant_admin_privilege('ggs');
PL/SQL procedure successfully completed.

Oracleデータベースの構成、アーカイブのオープン、ログの追加、force logging
SQL> create pfile='/home/oracle/init20190923.ora' from spfile;
SQL> select LOG_MODE,FORCE_LOGGING,SUPPLEMENTAL_LOG_DATA_MIN from v$database;
LOG_MODE     FOR SUPPLEME
------------ --- --------
ARCHIVELOG   NO  NO

SQL> archive log list;
                         
                   
                USE_DB_RECOVERY_FILE_DEST
              5
                 7

SQL> shutdown immediate;
       。
       。
ORACLE       。
SQL> startup mount;
ORACLE       。

Total System Global Area  801701888 bytes
Fixed Size                  2259480 bytes
Variable Size             532678120 bytes
Database Buffers          264241152 bytes
Redo Buffers                2523136 bytes
       。
SQL> alter database archivelog;

      。

SQL> alter database open;

      。

         FORCE LOGGING

SQL> select force_logging from v$database;

FOR
---
NO

SQL> ALTER DATABASE FORCE LOGGING;

      。

SQL> select force_logging from v$database;

FOR
---
YES

    ,     

SQL> alter system switch logfile;

     。

            (supplemental Log)

SQL> select supplemental_log_data_min from v$database;

SUPPLEME
--------
NO

SQL> alter database add supplemental log data;

      。

SQL> select supplemental_log_data_min from v$database;

SUPPLEME
--------
YES

SQL> select LOG_MODE,FORCE_LOGGING,SUPPLEMENTAL_LOG_DATA_MIN from v$database;
LOG_MODE     FOR SUPPLEME
------------ --- --------
ARCHIVELOG   YES YES 

oggソフトウェアのインストール
ソース側とターゲット側の対応するディレクトリの下にOGGソフトウェアをインストールします.
インストール手順は、前のメモを参照してください.https://blog.csdn.net/weixin_41229271/article/details/98888847
ソースOGG構成
checkpointの追加
GGSCI (source) 2> dblogin userid ggs,password 123456
 
#  GoldenGate checkpoint 
GGSCI (source) 4> edit PARAMS GLOBALS
 
MGRSERVNAME GGMGR
checkpointtable ggs.checkpoint
 
GGSCI (source) 4> add checkpointtable ggs.checkpoint
 
Successfully created checkpoint table ggs.checkpoint.

追加ログの追加
テストテーブル構築文:
create user scott identified by 123456;
GRANT CONNECT,RESOURCE TO SCOTT;
grant dba to scott;
CREATE TABLE DEPT
       (DEPTNO NUMBER(2) CONSTRAINT PK_DEPT PRIMARY KEY,
  DNAME VARCHAR2(14) ,
  LOC VARCHAR2(13) ) ;
INSERT INTO DEPT VALUES
  (10,'ACCOUNTING','NEW YORK');
INSERT INTO DEPT VALUES (20,'RESEARCH','DALLAS');
INSERT INTO DEPT VALUES
  (30,'SALES','CHICAGO');
INSERT INTO DEPT VALUES
  (40,'OPERATIONS','BOSTON');

同期するテーブルの追加ログ、例
GGSCI (source ) 2>ADD TRANDATA scott.dept
プロセス構成の管理
GGSCI (source) 3> edit param mgr
#   
PORT 7809
#      
DYNAMICPORTLIST 7801-8200
#      
AUTOSTART ER *
#      ,           
AUTORESTART EXTRACT *,RETRIES 5,WAITMINUTES 3
#               
PURGEOLDEXTRACTS /home/oggs/dirdat/*,usecheckpoints, minkeepdays 3
LAGREPORTHOURS 1
LAGINFOMINUTES 30
LAGCRITICALMINUTES 45
 
GGSCI (source) 3> start mgr
GGSCI (source) 4> info mgr

targetエンド環境準備
OSユーザーの作成
OSユーザー、データベース、およびデータベースユーザーを作成します.
[root@source ~]# useradd oggmy
3.  target           ,  ogg   ,    ,  ogg      。

--          
--   Mysql          , Oracle          。
--   Oracle                    
--          Mysql   Mysql         
--        Map               ,       。
mysql> create database targetdb;
mysql> use targetdb;
-- targetdb        

--   OGG          
mysql> create database ogg;
mysql> grant all on *.*  to 'ggt'@'%' identified by '123456';
mysql> flush privileges

ターゲット側にoggソフトウェアをインストールする
[root@target ~]# mkdir -p /home/oggt
[root@target ~]# chown oggmy:oggmy /home/oggt
[root@target oggt]#  chown oggmy:oggmy /oggt/122022_ggs_Linux_x64_MySQL_64bit.zip

[oggmy@target oggt]$ unzip 122022_ggs_Linux_x64_MySQL_64bit.zip
[oggmy@target oggt]$ rm -rf 122022_ggs_Linux_x64_MySQL_64bit.zip
[oggmy@target oggt]$ tar -xvf ggs_Linux_x64_MySQL_64bit.tar
[oggmy@target oggt]$ rm -rf ggs_Linux_x64_MySQL_64bit.tar
[oggmy@target oggt]$ ./ggsci
GGSCI (target) 1> create subdirs
GGSCI (target) 1> dblogin sourcedb [email protected]:3306 userid ggt password 123456

GGSCI (target DBLOGIN as ggt) 2> edit params ./GLOBALS

checkpointtable ogg.checkpoint
GGSCI (target DBLOGIN as ggt) 3> view  params ./GLOBALS

checkpointtable ogg.checkpoint
	

プロセス構成の管理
GGSCI (target) 2> edit params mgr

PORT 9900 
DYNAMICPORTLIST 9901-9920,9930 
AUTOSTART ER * 
AUTORESTART ER *,RETRIES 4,WAITMINUTES 4 
STARTUPVALIDATIONDELAY 5 
purgeoldextracts /oggt/dirdat/*,usecheckpoints,minkeephours 2 
ACCESSRULE, PROG *, IPADDR 192.168.1.*, ALLOW 
LAGREPORTHOURS 1
LAGINFOMINUTES 30
LAGCRITICALMINUTES 45
GGSCI (target) 2> start mgr
Manager started.

GGSCI (target) 3> info all
Program     Status      Group       Lag at Chkpt  Time Since Chkpt
MANAGER     RUNNING   

データ定義ファイルの作成
sourceエンドOracleデータベースを作成するには、同期されたデータ定義ファイルをtargetエンドの対応するディレクトリにコピーする必要があります.
--           
GGSCI (source) 5> edit params defsgrdb
userid ggs password 123456
defsfile /home/oggs/dirdef/sgrdb.def
table scott.dept;

--         
[oggora@source oggs]$ ./defgen paramfile dirprm/defsgrdb.prm

--                       
[oggora@source dirdef]$ scp /home/oggs/dirdef/sgrdb.def [email protected]:/home/oggt/dirdef/

データ初期化ロード構成
初期化プロセスを設定します.ソース側とターゲット側の初期化プロセスを開始し、データを初期化し、データの初期化が完了すると、初期化プロセスは自動的に停止します.、テストでは、少量のデータを使用して、このステップをスキップし、手動で一貫性を保つことができます.
1.source          
--              
GGSCI (source) 3> edit params init
extract init
userid ggs password 123456
rmthost 192.168.1.2,mgrport 9900
rmttask replicat,group repinit
table scott.dept;

--  source             Extract    init,      :
dblogin userid ggs password 123456
GGSCI (source) 3> add extract init,sourceistable
#delete init
GGSCI (ogg4o.gzds.gov.cn) 15> info extract *, task

EXTRACT    INIT      Initialized   2018-03-08 22:20   Status STOPPED
Checkpoint Lag       Not Available
Log Read Checkpoint  Not Available
                     First Record         Record 0
Task                 SOURCEISTABLE

2.target          
--              
GGSCI (source) 3> edit params repinit
GGSCI (jx2.hubu.edu.cn DBLOGIN as ogg4m) 5>  view  params repinit     

replicat repinit
targetdb [email protected]:3306 userid ggt password 123456
--       ,     sourcedefs  ,  source          。
sourcedefs /oggt/dirdef/defsgrdb.def
discardfile /oggt/dirrpt/repinit.dsc,purge
MAP USERNAME.TABLE1,target targetdb.TABLE1;


--  target                  ,      :
dblogin sourcedb [email protected]:23307 userid ggt password 123456

GGSCI (source) 3> add replicat repinit,specialrun

GGSCI (source DBLOGIN as ggt) 10> info replicat *,task

REPLICAT   REPINIT   Initialized   2018-09-13 20:41   Status STOPPED
Checkpoint Lag       00:00:00 (updated 00:00:04 ago)
Log Read Checkpoint  Not Available
Task                 SPECIALRUN

ソース抽出プロセス構成
GGSCI (source) 5> edit  params EX_ORCL1
extract EX_ORCL1
DYNAMICRESOLUTION
SETENV (ORACLE_SID="orcl1")
SETENV (NLS_LANG=AMERICAN_AMERICA.AL32UTF8)
userid ggs,password 123456
REPORT AT 01:59
REPORTROLLOVER AT 02:00
CACHEMGR, CACHESIZE 256MB
DBOPTIONS  ALLOWUNUSEDCOLUMN
WARNLONGTRANS 3h,CHECKINTERVAL 20000000s
EXTTRAIL ./dirdat/e1,format release 12.2
NUMFILES 3000
EOFDELAYCSECS 30
GETTRUNCATES
TRANLOGOPTIONS DBLOGREADER
TRANLOGOPTIONS DBLOGREADERBUFSIZE 1048576
BR BRINTERVAL 2H , BRDIR BR
GETUPDATEBEFORES
NOCOMPRESSDELETES FETCHMISSINGCOLUMNS
NOCOMPRESSDELETES
NOCOMPRESSUPDATES
FETCHOPTIONS FETCHPKUPDATECOLS
TABLE scott.dept;

GGSCI (source) 5> view params EX_ORCL1
 
        EX_HJ_G,          
	GGSCI (source) 6> add extract EX_ORCL1,tranlog,THREADS 2, begin now
EXTRACT added.
 
 EX_EMP          trail      
	GGSCI (source) 7> add exttrail ./dirdat/e1,extract EX_ORCL1
EXTTRAIL added.

ソース配信プロセスの構成
GGSCI (source) 8> edit params pm_orcl1
extract pm_orcl1
SETENV (ORACLE_SID="orcl1")
SETENV (NLS_LANG=AMERICAN_AMERICA.AL32UTF8)
userid ggs, password 123456
REPORT AT 01:59
REPORTROLLOVER AT 02:00
CACHEMGR, CACHESIZE 256MB
FLUSHCSECS 30
NUMFILES 3000
EOFDELAYCSECS 30
RMTHOST 192.168.1.2,MGRPORT 9900, TCPBUFSIZE 100000, TCPFLUSHBYTES 300000, COMPRESS
RMTTRAIL /oggt/dirdat/p1,format release 12.2
GETTRUNCATES
PASSTHRU
DYNAMICRESOLUTION
GETUPDATEBEFORES
TABLE scott.dept;

GGSCI (source) 9> view params pm_orcl1
 
GGSCI (source) 10> add extract pm_orcl1,exttrailsource ./dirdat/e1
EXTRACT added.
 
GGSCI (source) 11> add rmttrail /oggt/dirdat/p1,extract pm_orcl1
RMTTRAIL added.

ターゲット側適用プロセス構成
GGSCI (target) 4> edit param re_orcl1
replicat re_orcl1
--DYNAMICRESOLUTION
targetdb [email protected]:3306 userid ggt password 123456
--handlecollisions
--assumetargetdefs
REPORT AT 01:59
REPORTROLLOVER AT 02:00
CACHEMGR, CACHESIZE 256MB
REPERROR DEFAULT,ABEND
discardfile /oggt/dirrpt/re_orcl1.dsc,purge
DISCARDROLLOVER AT 06:00
GETTRUNCATES
NUMFILES 3000
EOFDELAYCSECS 30
--ASSUMETARGETDEFS
ALLOWNOOPUPDATES
GETUPDATEBEFORES
--NOCOMPRESSDELETES
sourcedefs /oggt/dirdef/defsgrdb.def
DBOPTIONS NOLIMITROWS
--INSERTUPDATES
--INSERTDELETES
--INSERTALLRECORDS
MAP scott.dept,target targetdb.dept;

GGSCI (target) 8> view param RE_TEST
 
GGSCI (target) 9> add replicat re_orcl1,exttrail /oggt/dirdat/p1,checkpointtable ogg.checkpoint
REPLICAT added.

抽出、配達、適用プロセスを開始し、データの同期に成功したかどうかをテストします.