现在的位置: 首页 > 综合 > 正文

goldengate_单节点单双项复制

2014年11月06日 ⁄ 综合 ⁄ 共 11766字 ⁄ 字号 评论关闭

 

Goldengate 单节点对单节点单向复制(DML)

一、前言
Ggs软件是一种基于日志的结构化数据复制软件,它通过解析源数据库在线日志或归档日志获得数据的增量变化,再将这些变化应用到目标数据库,从而实现源数据库与目标数据库同步。Ggs 可以在异构的IT基础结构(包括几乎所有常用操作系统平台和数据库平台)之间实现大量数据亚秒一级的实时复制,从而在可以在应急系统、在线报表、实时数据仓库供应、交易跟踪、数据同步、集中/分发、容灾等多个场景下应用。

同时,Ggs可以实现一对一、广播(一对多)、聚合(多对一)、双向、点对点、级联等多种灵活的拓扑结构

 

二、环境要求

1. 支持的平台
    支持的Oracle Database 版本
    在当前的Oracle Ggs 10.4版本中,支持如下Oracle Database版本
Oracle 8i (DML support only)
Oracle 9.1 and 9.2 (DML and DDL support)
Oracle 10.1 and 10.2 (DML and DDL support)
Oracle 11g (DML and DDL support)

支持的操作系统平台
几乎所有主流的操作系统,Ggs都支持
Windows 2000, 2003, XP,Linux,Sun Solaris,HP NonStop,HP-UX

 2.  操作系统需求

(1)内存要求
        Ggs对操作系统内存的需求主要取决于Extract和Replicat进程数,一般建议>2G

2DISK空间需求
         
由于要数据库必须设置为归档模式,所以要求至少保存7天以上的日志,建议剩余空间在10G~100G之间。

(3)对于RAC环境
        Ggs的相关软件和工作目录需要配置在shared disk环境中,从而保证对所有node都是可用的,从任何一个node都可以启动Ggs的进程,当其中一个node出现异常时,可以在剩余的node启动而无须修改任何配置参数。否则如果运行在单个node上的话,需要将剩余node中的归档日志通过一定的技术共享出来并加载到Ggs运行节点。

对于RAC环境,Ggs要求所有node必须保持时钟同步,同时必须保持所有RAC
node
和运行extract进程的node节点保持时钟同步。因为Ggs会比较本地的系统时间和commit的时间戳。所以不能忽略这个设置。否则可能导致数据复制的紊乱。

 

[oracle@rac1 ~]$ cat .bashrc

# .bashrc

 

# Source global definitions

if [ -f /etc/bashrc ]; then

       . /etc/bashrc

fi

 

# User specific aliases and functions

export ORACLE_BASE=/u01/app/oracle

exportORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1

export PATH=$ORACLE_HOME/bin:$PATH

export ORACLE_OWNER=oracle

export ORACLE_SID=orcl

export ORACLE_TERM=vt100

export THREADS_FLAG=native

export GG_HOME=/home/oracle

export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$GG_HOME:$LD_LIBRARY_PATH

export LANG=en_US

 

 

相应的目录和文件赋予相关权限

# chmod -R a+x *

# chown -R aoracle.oinstall*

 

禁用iptablesselinux

 

 

(4)监听文件存在并起监听程序;tnsname.ora
客户端设置

     Oracle用户下的信任关系,主机host文件一致

     Sshrac1

Ssh rac2

3.   数据库需求

(1)数据库客户端
      Ggs需要安装full Oracleclient,以便于Ggs程序访问Oracle XDK libraries。
(2)数据库用户
       建议使用sys或任何其他具有sysdba/sysasm权限的用户。
(3)数据库配置
对于Source Oracle Database要求,数据库处于归档模式下,打开补充日志,打开force logging

分别配置连接源数据库和目标数据库的主机字符串
建立一个专门的用户如Ggs来负责将所需的数据同步到远端,而不是用已有的业务用户
这个用户需要哪些权限呢?

Create user ggs identified by ggs  default tablespace users temporarytablespace temp quota unlimited on users ;
GRANT CONNECT TO ggs;
GRANT ALTER ANY TABLE TO ggs;
GRANT ALTER SESSION TO ggs;
GRANT CREATE SESSION TO ggs;
GRANT FLASHBACK ANY TABLE TO ggs;
GRANT SELECT ANY DICTIONARY TO ggs;
GRANT SELECT ANY TABLE TO ggs;
GRANT RESOURCE TO ggs;
GRANT drop ANY TABLE TO ggs;
GRANT DBA TO ggs;

注*
补充日志是否打开查询语句:
select supplemental_log_data_min from v$database;
打开补充日志语句:
alter database add supplemental log data;
打开force logging语句:
alter database force logging;

 

添加表级别trandata

scott用户下创建一张表,用来作为需要同步的表

Sql>Create table demo (in number primary key, ename varchar2(20)); ----必须有主键

GGSCI>add trandata scott.demo  ----也可以scott.*全部

Target端添加checkpoin表(非必须的但强烈建议)

两端关闭recyclebin(如果使用DDL必须关闭)

四、配置Golengate
1. 安装ggs 软件

        进入到Ggs的安装目录.
      c:\gss1\GGSCI

 In GGSCI, issue the following commandto create the Ggs working directories.
     GGSCI> CREATE SUBDIRS
Issue the following command to exit GGSCI.
EXIT

2. 配置进程

第一步: 在源数据库和目标数据库分别配置管理进程mgr

$./ggsi
GGSCI> edit params mgr
port  9001
(保存退出)
GGSCI> start mgr
Manager started.
GGSCI> info all
ProgramStatus  Group  Lag  ime Since Chkpt
MANAGER  RUNNING

GGSCI>view report mgr ------------------------查看相关进程启动详细内容,是否报错

(可以正常启动)

第二步:源数据库增加两个进程
*.一般源数据库需要应配置两个进程,一个负责抽取数据(ZLE_01),另一个负责投递数据(ZLE_02),默认只支持DML,如果要支持DDL需要执行一些单独的配置

GGSCI> add extract <group name>,TRANLOG, BEGIN NOW, THREADS <thread number>

其中group name表示这个Extract group的名字
TRANLOG 表示使用事务日志的方式
BEGIN NOW 表示从现在开始,你也可以指定一个具体的开始时间
THREADS 表示从哪个instance上运行,只对RAC环境有用
,单机环境不需要指定该Option

 

 (1) 配置抽取进程

我这里是单机环境,extract group name定义为zle_01

GGSCI > DBLOGIN USERID ggs@orcl1, PASSWORD ggs

GGSCI >add trandata scott.demo ----也可以scott.*全部

GGSCI > add extract ZLE_01, tranlog,begin now ---以现在为时间点
EXTRACT added.

GGSCI > add RMTTRAIL ./dirdat/ra, extract zle_01,  megabytes50  ---./dirdat/ra
当前路径下的/dirdat /ra目录必须存在

查看一下刚才定义的这个extract process的结果
GGSCI > info extract zle_01
EXTRACT    ZLE_01    Initialized   2010-01-1911:50   Status STOPPED

Checkpoint Lag       00:00:00(updated 00:00:22 ago)

Log Read Checkpoint  Oracle RedoLogs

                    2010-01-1911:50:39  Seqno 0, RBA 0

补充一个命令: info extract zle_01, showch 看的更详细

为该抽取Extract进程配置参数文件,在源数据库执行如下命令

GGSCI>edit param zle_01

增加如下内容
EXTRACT ZLE_01
SETENV (ORACLE_SID=ORCL)
USERID ggs@ORCL1, PASSWORD ggs
RMTHOST 192.168.8.1, MGRPORT 9001
RMTTRAIL ./dirdat/ra
TABLE ZLHIS.TEST;

RMTTRAIL告诉extract process需要将trail文件写到哪里

TABLE部分说明我这个Extract 进程只处理ZLHIS用户下的TEST表

好了,到这里就可以启动上面定义的Capture 进程了,执行如下命令

GGSCI> start extract zle_01

Sending START request to MANAGER ('mgr')...
EXTRACT ZLE_01 starting

GGSCI>

Verify the results:
GGSCI> info EXTRACT ZLE_01, DETAIL
GGSCI> view REPORT ZLE_01

GGSCI> info extract ZLE_01

好了,到这里就完成了一个最简单的抽取Extract process的配置并启动,下面来配置投递Extract process进程。

(2) 配置投递进程

GGSCI>view parampump_so ----------------有问题???

GGSCI (rac1) 60> viewparam pump_so

 

Pump ZLE_01

Dynamicresolution

Userid ggs@rac1,passwordggs

Setenv(ORACLE_SID=orcl)

Exttrial ./dirdat/ra

Table scott.*;

在Source系统执行如下命令

GGSCI> ADD EXTRACT racpump, EXTTRAILSOURCE ./dirdat/de, BEGIN now
GGSCI> ADD RMTTRAIL./dirdat/dp, EXTRACT racpump

*(./dirdat/la为远端接收目录,必须存在)

GGSCI>edit params zle_02

添加内容如下:

extract ZLE_02

dynamicresolution

PASSTHRU

rmthost 192.168.8.2, mgrport 9001, compress

rmttrail  ./dirdat/la

numfiles 3000

TABLE ZLHIS.TEST ;

GGSCI> start extract zle_02

Sending START request to MANAGER ('mgr')...
EXTRACT ZLE_02 starting

查看下状态:

GGSCI> info all

Program    Status      Group      Lag           Time Since Chkpt

MANAGER     RUNNING                                       

EXTRACT    RUNNING     ZLE_01    00:00:00      00:00:05   

EXTRACT    RUNNING     ZLE_02    00:00:00      00:00:07   

(3) 配置接收进程

在目标系统(Target system)上执行如下命令增加一个复制组(Replicat Group)

GGSCI > DBLOGIN USERID ggs@orcl2,PASSWORD ggs

GGSCI>add replicat racrep, EXTTRAIL ./dirdat/dp , nodbcheckpoint

注,我这个中配置Extract process那个示例对应的,所以这里的exttrail文件名正好是Extract process中定义的RMTTRAIL ./dirdat/la点需要大家注意.

GGSCI> edit param ZLR_01

增加如下内容并保存退出

REPLICAT ZLR_01

SETENV (ORACLE_SID=ORCL)

USERID ggs@ORCL2, PASSWORD ggs

HANDLECOLLISIONS

ASSUMETARGETDEFS

allownoopupdates

dynamicresolution

numfiles 3000

DISCARDFILE  ./dirrpt/ZLR_01.DSC,append,megabytes 10

map ZLHIS.TEST , target ZLHIS.TEST ;

在Target系统中,执行如下命令

GGSCI> start replicat ZLR_01

Verify the results:
GGSCI> info replicat ZLR_01
REPLICAT   ZLR_01    Last Started 2010-01-19 13:50  Status RUNNING

Checkpoint Lag      00:00:00 (updated 00:00:03 ago)

Log ReadCheckpoint  File  ./dirdat/la000000

                    FirstRecord  RBA 0

查看下状态:

GGSCI> info all

Program    Status      Group      Lag           Time Since Chkpt

MANAGER     RUNNING

REPLICAT    RUNNING    ZLR_01     00:00:00     00:00:09

 

五、测试效果
在源数据库分别插入、修改、删除一条数据。查看抽取进程状态:

GGSCI> stats  ZLE_01

Sending STATS request to EXTRACT ZLE_01 ...

Start of Statistics at 2010-01-26 02:53:01.

Output to ./dirdat/ra:

Extracting from ZLHIS.TEST to ZLHIS.TEST:

*** Total statistics since 2010-01-2602:15:01 ***

        Totalinserts                               1.00

        Totalupdates                               1.00

        Totaldeletes                               1.00

        Totaldiscards                              0.00

        Totaloperations                            3.00

*** Daily statistics since 2010-01-2602:15:01 ***

        Totalinserts                               1.00

        Totalupdates                               1.00

        Totaldeletes                               1.00

        Totaldiscards                              0.00

        Totaloperations                            3.00

*** Hourly statistics since 2010-01-2602:15:01 ***

        Totalinserts                               1.00

        Totalupdates                               1.00

        Totaldeletes                               1.00

        Totaldiscards                              0.00

        Totaloperations                            3.00

*** Latest statistics since 2010-01-2602:15:01 ***

        Totalinserts                               1.00

        Totalupdates                               1.00

        Totaldeletes                               1.00

        Totaldiscards                              0.00

        Totaloperations                            3.00

End of Statistics.

可以看到已经有记录,而且已经抽取成功,再查看投递进程,

GGSCI> stats ZLE_02

Sending STATS request to EXTRACT ZLE_02 ...

Start of Statistics at 2010-01-26 03:04:13.

 

Output to /u01/ggs/dirdat/re:

Extracting from ZLHIS.TEST to ZLHIS.TEST:

*** Total statistics since 2010-01-2602:14:25 ***

        Totalinserts                               1.00

        Totalupdates                               1.00

        Totaldeletes                               1.00

        Totaldiscards                              0.00

        Totaloperations                            3.00

 

*** Daily statistics since 2010-01-2602:14:25 ***

        Totalinserts                               1.00

        Totalupdates                               1.00

        Totaldeletes                               1.00

        Totaldiscards                              0.00

        Totaloperations                            3.00

 

*** Hourly statistics since 2010-01-2603:00:00 ***

 

        Nodatabase operations have been performed.

 

*** Latest statistics since 2010-01-2602:14:25 ***

        Totalinserts                               1.00

        Totalupdates                               1.00

        Totaldeletes                               1.00

        Totaldiscards                              0.00

        Totaloperations                            3.00

 

End of Statistics.

切换到目标数据库环境,同样查看接受应用进程。

GGSCI > stats ZLR_01

Sending STATS request to REPLICAT ZLR_01...

Start of Statistics at 2010-01-26 05:58:36.

Replicating from ZLHIS.TEST to ZLHIS.TEST:

*** Total statistics since 2010-01-2604:46:57 ***

        Totalinserts                               1.00

        Totalupdates                               1.00

        Totaldeletes                               1.00

        Totaldiscards                              0.00

        Totaloperations                            3.00

 

*** Daily statistics since 2010-01-2604:46:57 ***

        Totalinserts                               1.00

        Totalupdates                               1.00

        Totaldeletes                               1.00

        Totaldiscards                              0.00

        Totaloperations                            3.00

 

*** Hourly statistics since 2010-01-2605:00:00 ***

        Totalinserts                               0.00

        Totalupdates                               1.00

        Totaldeletes                               1.00

        Totaldiscards                              0.00

        Totaloperations                            2.00

 

*** Latest statistics since 2010-01-2604:46:57 ***

        Totalinserts                               1.00

        Totalupdates                               1.00

        Totaldeletes                               1.00

        Totaldiscards                              0.00

        Totaloperations                            3.00

 

End of Statistics.

六、总结
         以上只是记录了对于Ggs软件测试的一小部分,总体感觉Ggs同Oracle的流复制非常类似,但又有所不同,对比其各自的应用,各有有缺点:
         优点:
1. 安装、配置简单。
2.  管理维护相对直观,通过其自带的Oracle Management Pack for Oracle Ggs管理工具,能够对其进行图形化界面的管理。
3. 支持异构复制,如不同用户,不同数据库平台的复制,这也是其亮点所在。
4. 未来发展潜力还是很看好。

缺点:
1. 官方的软件目前都只支持64位系统。
2.由于是第三方工具,对环境要求比较高,特别是在LINUX环境下,对操作系统的字符集有所要求,主要是我们系统中的表名都是中文,必须要其对中文的支持。
3.在进行应用进程的参数配置时候发现,对于特别多的表复制,暂时不清楚Ggs是否有限制,因为启动的时候,我配置参数对ZLHIS所有表进行复制的时候,会提示“”错误,但是如果只对少数表或者单个表复制的时候,又不出现该提示,这个问题正在核实。
4. 目前网上能查询到的资料相当有限,普及率不是很高。
综上所述,Ggs同流复制比较起来的亮点还是在异构上,不过Oracle官方的说法是以后一流的Streams技术将被集成到Ggs中,这也是其发展的趋势,其价值对于我们用户的应用来说,还是很值得继续深入研究。
5.oracle官方解释,ggs暂时不支持中文表名!悲剧

Goldengate 单节点对单节点双向复制(DML+DDL)

 

 

Goldengate 单节点对单节点双向复制

gg_bi 同步用户

gg_src源端用户

ggs目标端用户

 

相同进程 mgr

GGSCI (rac2) 42> view param mgr

 

port 9001

 

源端rac1 进程

GGSCI (rac1) 35> view param extbi  -------------------------抽取进程

 

EXTRACT EXTBI

USERID gg_bi@rac1, PASSWORD ggs

TRANLOGOPTIONS EXCLUDEUSER gg_bi

RMTHOST 192.168.10.12, MGRPORT 9001

RMTTRAIL ./dirdat/bi

TABLE gg_src.tcustmer;

 

 

 

GGSCI (rac1) 36> view param extbi_2------------------------------投递进程

 

extract extbi_2

dynamicresolution

PASSTHRU

rmthost 192.168.10.20, mgrport 9001,compress

rmttrail ./dirdat/bo

numfiles 3000

TABLE gg_src.tcustmer;

 

 

GGSCI (rac1) 37> view param REPBI------------------------复制进程

 

REPLICAT REPBI

USERID gg_bi, PASSWORD ggs

HANDLECOLLISIONS

ASSUMETARGETDEFS

DISCARDFILE ./dirrpt/REPBI.DSC, PURGE

MAP ggs.tcustmer, TARGET gg_src.tcustmer;

 

 

GGSCI (rac1) 39> view param ./GLOBALS

 

--ggschema ggs  oracle-->oracle model DDL

checkpointtable gg_src.checkpoint

 

 

目标端进程

GGSCI (rac2) 37> view param extbi           --------------抽取进程

 

EXTRACT EXTBI

USERID gg_bi@rac2, PASSWORD ggs

TRANLOGOPTIONS EXCLUDEUSER gg_bi

RMTHOST 192.168.10.20, MGRPORT 9001

RMTTRAIL ./dirdat/bi

TABLE ggs.tcustmer;

 

GGSCI (rac2) 39> view param extbi_2        --------------------------------投递进程

 

extract extbi_2

dynamicresolution

PASSTHRU

rmthost 192.168.10.12, mgrport 9001,compress

rmttrail ./dirdat/bo

numfiles 3000

TABLE ggs.tcustmer;

 

 

GGSCI (rac2) 41> view param repbi---------------------复制进程

 

REPLICAT REPBI

USERID gg_bi, PASSWORD ggs

HANDLECOLLISIONS

ASSUMETARGETDEFS

DISCARDFILE ./dirrpt/REPBI.DSC, PURGE

MAP gg_src.tcustmer, TARGET ggs.tcustmer;

 

GGSCI (rac2) 43> view param ./GLOBALS

 

checkpointtable ggs.checkpoint

 

 

Goldengate  rac对单节点单向复制

 

抱歉!评论已关闭.