OGG ORACLE TO MYSQL配置方法


1、源爲ORACLE 11g,目的 MYSQL 5.6mysql

2、從http://download.oracle.com/  找到並下載相應安裝包,直接釋放到相應目錄。建設全用root,數據庫也用dba。由於可能要改系統參數。sql

3、ORACLE端配置數據庫

     系統環境配置數據結構

      #sqlplus /nologoracle

      SQL>conn  / as sysdbaapp

      SQL>ARCHIVE LOG LIST  查看歸檔狀態nosql

      SQL> ALTER DATABASE ARCHIVELOG;  設成歸檔模式ide

      若是已啓動ORACLE,可能須要關閉再設置。工具

       SQL>SHUTDOWN IMMEDIATE;測試

       SQL>STARTUP MOUNT;

       SQL> ALTER DATABASE ARCHIVELOG; 

       SQL> ALTER DATABASE OPEN;

       打開輔助日誌

       SQL> ALTER DATABASE ADD supplemental log data;

        關閉回收站

        SQL>alter system set recyclebin=off deferred;

--建立相應表空間

SQL>create tablespace oggtbs datafile '/u01/app/oracle/oradata/onimei1/oggtbs01.dbf' size 500M autoextend on;

--受權

SQL>create user ggs identified by ggs default tablespace oggtbs;

SQL>GRANT create table to ggs;

SQL>GRANT CONNECT TO ggs;

SQL>GRANT ALTER ANY TABLE TO ggs;

SQL>GRANT ALTER SESSION TO ggs;

SQL>GRANT CREATE SESSION TO ggs;

SQL>GRANT FLASHBACK ANY TABLE TO ggs;

SQL>GRANT SELECT ANY DICTIONARY TO ggs;

SQL>GRANT SELECT ANY TABLE TO ggs;

SQL>GRANT RESOURCE TO ggs;

SQL>GRANT DELETE ANY TABLE TO ggs;

SQL>GRANT INSERT ANY TABLE TO ggs;

SQL>GRANT UPDATE ANY TABLE TO ggs;

SQL>GRANT RESTRICTED SESSION TO ggs; 

SQL> @sequence.sql 
根據提示輸入(如下導入也是):ggs

SQL> @marker_setup.sql 

SQL> @ddl_setup.sql 

SQL>@role_setup.sql 

SQL> grant GGS_GGSUSER_ROLE to ggs; 

SQL> @ddl_enable.sql 

10g須要安裝dbms_share_pool包: 

SQL> @?/rdbms/admin/dbmspool.sql 

SQL> @ddl_pin ggs; 

SQL>QUIT;

#sqlplus /nolog

SQL>conn ggs/ggs

SQL>CREATE TABLE TEST (ID INT,NAME VARCHAR(50),TESTDATE DATE,PRIMARY KEY(ID));

SQL>QUIT;

GGS全局變量配置 

  #./ggsci

  GGSCI (ora11g) >CREATE SUBDIRS

在源庫上執行: 

GGSCI (ora11g) 2> EDIT PARAMS ./GLOBALS

在編輯模式下輸入並保存:ggschema ggs

GGSCI (ora11g) 1> dblogin userid ggs password ggs

Successfully logged into database.

GGSCI (ora11g) 3>  edit param mgr

PORT 7809

DYNAMICPORTLIST 7810-7909

--AUTOSTART ER *

AUTORESTART EXTRACT *,RETRIES 5,WAITMINUTES 3

PURGEOLDEXTRACTS ./dirdat/*,usecheckpoints, minkeepdays 3

LAGREPORTHOURS 1

LAGINFOMINUTES 30

LAGCRITICALMINUTES 45

MANAGER進程參數配置說明:

PORT:指定服務監聽端口;這裏以7809爲例,默認端口爲7809

DYNAMICPORTLIST:動態端口:能夠制定最大256個可用端口的動態列表,當指定的端口不可用時,管理進程將會從列表中選擇一個可用的端口,源端和目標段的Collector、Replicat、GGSCI進程通訊也會使用這些端口;

COMMENT:註釋行,也能夠用--來代替;

AUTOSTART:指定在管理進程啓動時自動啓動哪些進程;

AUTORESTART:自動重啓參數設置:本處設置表示每3分鐘嘗試從新啓動全部EXTRACT進程,共嘗試5次;

PURGEOLDEXTRACTS:按期清理trail文件設置:本處設置表示對於超過3天的trail文件進行刪除。

LAGREPORT、LAGINFO、LAGCRITICAL:

定義數據延遲的預警機制:本處設置表示MGR進程每隔1小時檢查EXTRACT的延遲狀況,若是超過了30分鐘就把延遲做爲信息記錄到錯誤日誌中,若是延遲超過了45分鐘,則把它做爲警告寫到錯誤日誌中。

GGSCI (ora11g) 6> start mgr

Manager started.

GGSCI (ora11g) 7> info all

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER     RUNNING

添加並查看須要複製的表:

GGSCI (ora11g) 8> ADD TRANDATA ggs.test

GGSCI (ora11g) 9> info trandata ggs.*

配置抽取進程

GGSCI (ora11g) 11> edit params ext3

extract ext3

dynamicresolution

userid ggs,password ggs

exttrail /u01/ogg/11.2/dirdat/xs

table ggs.test;

--注意分號結尾


GGSCI (ora11g) 13> add extract ext3,tranlog,begin now

EXTRACT added.

GGSCI (ora11g) 14> add exttrail /u01/ogg/11.2/dirdat/xs,extract ext3

EXTTRAIL added.

ext的模板能夠是:

EXTRACT extmb

setenv (NLS_LANG = "AMERICAN_AMERICA.UTF8")

SETENV (ORACLE_HOME = "/u01/oracle/product/11.2.0/db_1")

SETENV (ORACLE_SID = "orcl")

USERID ggs, PASSWORD ggs

--GETTRUNCATES

REPORTCOUNT EVERY 1 MINUTES, RATE

DISCARDFILE ./dirrpt/extmb.dsc,APPEND,MEGABYTES 1024

--THREADOPTIONS MAXCOMMITPROPAGATIONDELAY 60000 IOLATENS 60000

DBOPTIONS ALLOWUNUSEDCOLUMN

WARNLONGTRANS 2h,CHECKINTERVAL 3m

EXTTRAIL ./dirdat/mb

--TRANLOGOPTIONS EXCLUDEUSER USERNAME

FETCHOPTIONS NOUSESNAPSHOT

TRANLOGOPTIONS CONVERTUCS2CLOBS

TABLE hr.emp;

SETENV:配置系統環境變量

USERID/ PASSWORD: 指定OGG鏈接數據庫的用戶名和密碼,這裏使用3.4部分中建立的數據庫用戶OGG;

COMMENT:註釋行,也能夠用--來代替;

TABLE:定義需複製的表,後面需以;結尾

TABLEEXCLUDE:定義須要排除的表,若是在TABLE參數中使用了通配符,可使用該參數指定排除掉得表。

GETUPDATEAFTERS|IGNOREUPDATEAFTERS:

是否在隊列中寫入後影像,缺省複製

GETUPDATEBEFORES| IGNOREUPDATEBEFORES:

是否在隊列中寫入前影像,缺省不復制

GETUPDATES|IGNOREUPDATES:

是否複製UPDATE操做,缺省複製

GETDELETES|IGNOREDELETES:

是否複製DELETE操做,缺省複製

GETINSERTS|IGNOREINSERTS:

是否複製INSERT操做,缺省複製

GETTRUNCATES|IGNORETRUNDATES:

是否複製TRUNCATE操做,缺省不復制;

配置投遞進程

GGSCI (ora11g) 17> edit params push3 

extract push3

passthru

dynamicresolution

userid ggs,password ggs

rmthost 192.168.0.166,mgrport 7809

rmttrail /u01/ogg/11.2/dirdat/xs

table ggs.test;

push的模板:

EXTRACT pushmb

SETENV (NLS_LANG = "AMERICAN_AMERICA.UTF8")

USERID ggs, PASSWORD ggs

PASSTHRU

RMTHOST 192.168.0.165, MGRPORT 7809, compress

RMTTRAIL /u01/ogg/11.2/dirdat/xs

TABLE hr.ah4;

RMTHOST:指定目標系統及其Goldengate Manager進程的端口號,還用於定義是否使用壓縮進行傳輸,本例中的compress爲壓縮傳輸;

RMTTRAIL:指定寫入到目標斷的哪一個隊列;

EXTTRAIL:指定寫入到本地的哪一個隊列;

SQLEXEC:在extract進程運行時首先運行一個SQL語句;

PASSTHRU:禁止extract進程與數據庫交互,適用於Data Pump傳輸進程;

REPORT:定義自動定時報告;

STATOPTIONS:定義每次使用stat時統計數字是否須要重置;

REPORTCOUNT:報告已經處理的記錄條數統計數字;

TLTRACE:打開對於數據庫日誌的跟蹤日誌;

DISCARDFILE:定義discardfile文件位置,若是處理中油記錄出錯會寫入到此文件中;

DBOPTIONS:指定對於某種特定數據庫所須要的特殊參數;

TRANLOGOPTIONS:指定在解析數據庫日誌時所須要的特殊參數,例如:對於裸設備,可能須要加入如下參數 rawdeviceoggset 0

WARNLONGTRANS:指定對於超過必定時間的長交易能夠在gsserr.log裏面寫入警告信息,本處配置爲每隔3分鐘檢查一次場交易,對於超過2小時的進行警告;

配置define文件

GGSCI (ora11g) 21> edit params test

defsfile /u01/ogg/11.2/dirdef/test.prm

userid ggs,password ggs

table ggs.test;

去相應的目錄下生產define文件:

[oracle@ora11g 11.2]$ ./defgen paramfile dirprm/test.prm 

拷貝到mysql相應位置
[root@ora11g ~]#  scp /u01/ogg/11.2/dirdef/ah4.prm 192.168.0.166:/u01/ogg/11.2/dirdef/

GGSCI (ora11g) 18> add extract push3,exttrailsource /u01/ogg/11.2/dirdat/xs

EXTRACT added.

GGSCI (ora11g) 19> add rmttrail /u01/ogg/11.2/dirdat/xs,extract push3

RMTTRAIL added.

4、MYSQL目的端配置

#vi /etc/my.cnf

log-bin=master-bin

binlog-format=row

mysql -u root -p

mysql>CREATE DATABASE ggs;

mysql>use ggs;

mysql>CREATE TABLE test (ID INT,NAME VARCHAR(50),TESTDATE DATE,PRIMARY KEY(ID)) engine=innodb;

建立ogg的初始化目錄

#./ggsci

GGSCI (mysql) 1> create subdirs

配置mgr

GGSCI (mysql) 2> edit params mgr

PORT 7809

DYNAMICPORTLIST 7810-7909

--AUTOSTART ER *

AUTORESTART EXTRACT *,RETRIES 5,WAITMINUTES 3

PURGEOLDEXTRACTS ./dirdat/*,usecheckpoints, minkeepdays 3

LAGREPORTHOURS 1

LAGINFOMINUTES 30

LAGCRITICALMINUTES 45

GGSCI (mysql) 3> start mgr

Manager started.

GGSCI (mysql) 4> info all

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER     RUNNING      


配置checkpoint table

GGSCI(mysql)>dblogin sourcedb ggs,userid root,password 123456
若有特別端口,可用以下命令
dblogin sourcedb ggs@10.142.78.54:8866 userid test,password test

GGSCI (mysql) 7> edit  params ./GLOBALS

CHECKPOINTTABLE ggs.checkpoint 

GGSCI (mysql) 8>  add checkpointtable ggs.checkpointtab

Successfully created checkpoint table ggs.checkpointtab.

GGSCI (mysql) 9> info checkpointtable ggs.checkpointtab

在相應的mysql數據庫中,也能夠看到相應的表被添加了:

mysql> show tables;

+---------------+

| Tables_in_hr  |

+---------------+

| test           |

|checkpointtab_lox |

| checkpointtab |

+---------------+


配置應用進程

GGSCI (mysql) 10> edit params rep3 

replicat rep3

sourcedefs /u01/ogg/11.2/dirdef/test.prm

TARGETDB ggs,userid root,password 123456

reperror default,discard

discardfile /u01/ogg/11.2/dirrpt/rep3.dsc,append,megabytes 50

map ggs.test, target ggs.test;

GGSCI (nosql2) 13> add replicat rep3,exttrail /u01/ogg/11.2/dirdat/xs,checkpointtable ggs.test

PS:

REPLICAT進程參數配置說明:

ASSUMETARGETDEFS:假定兩端數據結構一導致用此參數;

SOURCEDEFS:假定兩端數據結構不一致,使用此參數指定源端的數據結構定義文件,該文件須要由GlodenGate工具產生。

MAP:用於指定源端與目標端表的映射關係;

MAPEXCLUDE:用於使用在MAP中使用*匹配時排除掉指定的表;

REPERROR:定義出錯之後進程的響應,通常能夠定義爲兩種:

ABEND,即一旦出現錯誤即中止複製,此爲缺省配置;

DISCARD,出現錯誤後繼續複製,只是把錯誤的數據放到discard文件中。

DISCARDFILE:定義discardfile文件位置,若是處理中油記錄出錯會寫入到此文件中;

SQLEXEC:在進程運行時首先運行一個SQL語句;

GROUPTRANSOPS:將小交易合併成一個大的交易進行提交,減小提交次數,下降系統IO消耗。

MAXTRANSOPS:將大交易拆分,每XX條記錄提交一次。

5、測試和排錯

在源端

GGSCI>START ext3

GGSCI>START push3

經過info all

應該能夠看到 mgr,ext3,push3被啓動,觀察一下子,會不會掉下來。

在目的端

GGSCI>START rep3

經過 info all

能夠看到mgr,rep3

若是不能正常啓動,能夠查看 ggserr.log。查找緣由。

常見可能的出錯緣由有:

一、因爲/tmp/mysql.sock不存在,致使dbloing失敗。在自定義的目錄,經過export MYSQL_UNIX_TCP= 來指向文件,或者經過ln -s創建軟連接。

二、因爲分號或其餘參數配置問題致使參數出錯。

三、因爲兩邊對應關係不一致,致使不能正常啓動相應進程。

四、字符集的問題,建議兩端都設成UTF8.

  ORACLE端:

  1).       關閉數據庫

   SQL>SHUTDOWN IMMEDIATE

   2) 啓動到Mount

   SQL>STARTUP MOUNT;

   SQL>ALTER SYSTEM ENABLE RESTRICTED SESSION;

   SQL>ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;

    SQL>ALTER SYSTEM SET AQ_TM_PROCESSES=0;

    SQL>ALTER DATABASE OPEN;

    SQL>ALTER DATABASE CHARACTER SET INTERNAL_USE AL32UTF8;

    SQL>ALTER DATABASE NATIONAL CHARACTER SET INTERNAL_USE AL16UTF16;

     SQL>SHUTDOWN IMMEDIATE;

     SQL>STARTUP

   LINUX環境配置:

 # export     NLS_LANG='American_America.AL32UTF8'

  #export  LANG=en_US.UTF-8

LANG,NLS_LANG,客戶端OS 這3個字符集一致 

(GB2312 ZHS16GBK)

(UTF-8 AL32UTF8)

   MYSQL 端

  CREATE DATABASE TEST DEFAULT CHARSET SET UTF-8

   OGG 設置源端和目的端:

  ggsci>edit params ./GLOBALS

  在第一行加

   CHARSET UTF-8


參考官方文檔

http://docs.oracle.com/goldengate/1212/gg-winux/GWURF/preface.htm#GWURF101

相關文章
相關標籤/搜索