OGG双向同步配置(DDL+DML双向同步实施方案)

GoldenGate简介

GoldenGate软件是一种基于日志的结构化数据复制软件,它通过解析源数据库在线日志或归档日志获得数据的增删改变化,再将这些变化应用到目标数据库,实现源数据库与目标数据库实时同步(real-time data synchronize)、双活(active-active high availability)。GoldenGate软件可以在异构的IT基础结构(包括几乎所有常用操作系统平台和数据库平台)之间实现大量数据亚秒一级的实时复制。

一、双向同步配置架构图

OGG双向同步配置(DDL+DML双向同步实施方案)_第1张图片

二、双向同步配置注意点

1.防止数据循环

双向复制中,最主要的问题是需要防止数据的循环应用。在GoldenGate中,需要从两方面进行预防:

(1)防止Extract进程抓取Replicat进程的SQL操作。

在默认配置下,GoldenGate的Extract进程会忽略捕获由Replicat执行的SQL操作(Teradata除外,需要进行额外配置),所以这部分一般不需要额外设置。

(2)使Extract进程识别本地Replicat执行的DML事务,并进行忽略。

这步在Oracle(10g and later)中的配置为在Extract进程加入参数:

TRANLOGOPTIONS EXCLUDEUSER 进行排除。

e.g: TRANLOGOPTIONS EXCLUDEUSER ogg

不同的数据库这里需要配置的参数不同。如果是Oracle 9i或之前的版本,需要配置tracetable。

2.防止数据冲突

由于是双向复制,那么当两端都对同一数据进行操作时,就会发生冲突。比如同时对某行数据进行修改,修改的操作将会被覆盖(视LAG以及事务的先后);又比如两端插入或删除相同键值的数据。

对于这类数据冲突,最好是在业务应用层解决。比如,可以划分两端数据库应用的业务范围,一部分数据只在一端修改维护,另一端则修改维护其他数据;在两端定义不同的键值生成策略;关注同步表上的触发器和on delete cascade约束。也可以借助GoldenGate的映射和过滤功能,对于两端同步的数据进行区分。

总之,在配置双向复制环境时,需要综合考虑当时业务情况,一般都需要在应用层进行适当的修改,以防止数据冲突带来的数据丢失和不一致。

三、方案实施

服务器名

IP

ORACLE

系统

ORACLE_SID

Master

192.168.30.27

Oracle 11g

Centos 6.3

64 bit

Oggtest

Backup

192.168.30.28

Oracle 11g

Centos 6.3

64 bit

testw

3.1 环境准备及ogg安装

3.1.1.      下载OGG软件并解压安装

下载ogg并解压就完成了安装J

服务端:

[oracle@Test-DB01 ora11g]$  mkdir -p /opt/ora11g/ogg

[oracle@Test-DB01 ora11g]$  cd /opt/ora11g/ogg

[oracle@Test-DB01 ora11g]$  tar –xvf fbo_ggs_Linux_x64_ora10g_64bit.tar  

[oracle@Test-DB01 ora11g]$  chown -R oracle:oinstall /opt/ora11g/ogg
客户端(目录不一样):

[oracle@Test-DB01 ora11g]$  mkdir -p /opt/oracle/ogg

[oracle@Test-DB01 ora11g]$  cd /opt/ oracle /ogg

[oracle@Test-DB01 ora11g]$  tar –xvf fbo_ggs_Linux_x64_ora10g_64bit.tar  

[oracle@Test-DB01 ora11g]$  chown -R oracle:oinstall /opt/ oracle /ogg

3.1.2.      准备OGG环境

l  主备服务器上都要配置:

[oracle@Test-DB01 ora11g]$  vi /home/oracle/.bash_profile

增加如下两行:

export GGATE=$ORACLE_BASE/ogg

export LD_LIBRARY_PATH_64=$ORACLE_HOME/lib

生效环境变量
[oracle@Test-DB01 ora11g]$  source /home/oracle/.bash_profile

3.1.3.      Oracle归档日志设置

l  主备服务器上都要配置(在单向环境下从无需配置)

1)    查看归档日志模式:

sqlplus / as sysdba
select log_mode,supplemental_log_data_min,force_logging from v$database;

2)    更改归档模式(在生产环境下一般都开启了归档模式,不执行)

shutdown immediate;
startup mount;
alter database archivelog;
alter database open;
alter system set log_archive_dest_1='location=/opt/ora11g/flash_recovery_area/ORCL/archivelog' scope=both;

3)    配置日志模式(打开强制规档与补充日志模式)

alter database add supplemental log data; 
alter database force logging; 

4)    查看配置结果:

SQL> select log_mode,supplemental_log_data_min,force_logging from v$database;

5)    切换归档日志:

SQL> alter system switch logfile;

3.1.4.      创建ogg用户帐号

l  主备服务器上都要配置(在单向环境下从无需配置)

su – oracle
sqlplus /nolog
conn / as sysdba;

create user ogg identified by ogg default tablespace users temporary tablespace TEMP;
grant connect,resource to ogg;
grant create session,alter session to ogg;
grant select any dictionary,select any table to ogg;
grant alter any table to ogg;
grant flashback any table to ogg;
grant execute on dbms_flashback to ogg;

3.1.5.      配置GoldenGate软件

su – oracle
cd /opt/ora11g/ogg
./ggsci  

–如果找不到.so文件,注意检查$LD_LIBRARY_PATH(和系统自带的不同)环境变量

GGSCI (test) 1> create subdirs

3.1.6.      配置主从一致

数据泵的方式进行倒数据

export ORACLE_SID=orcl

expdp system/oracle directory=data_pump_dir SCHEMAS=SVD,CTR,PAL,YLWL,PST,MSG,CTS,SND,SAL,PORTAL,BIL,ITD,OPRT,MESSAGER,STAT  dumpfile=expdp_orcl02.dmp  logfile=expdp_orcl02.log

scp -P 99  /opt/ora11g/admin/orcl/dpdump/expdp_orcl02.dmp  [email protected]:/opt/ora11g/admin/orcl/dpdump/expdp_orcl02.dmp

=====================================================================

export ORACLE_SID=orcl

impdp system/oracle directory=data_pump_dir dumpfile=expdp_orcl02.dmp PARALLEL=12   logfile=impdp_orcl02.log

3.2 主从配置

3.2.1.   相关进程说明

  Mgr     主进程:负责端口监听,以及进程守护

  Extract 抽取进程:负责抽取指定的语句,并写入到本地的文件里

  Pump  发送进程:负责把本地的文件发送到远端服务器

  检查表          :复制进程需要的表

  Replicat 复制进程: 复制进程,把主过来的文件复制到本地数据库

3.2.2.   Oracle相关配置

l      主备服务器上都要配置(此配置为DDL配置,如DML无需配置)

SQL> grant dba to ogg;
SQL> @marker_setup            说明: 均指定用户ogg
SQL> @ddl_setup                 说明: 11.1.1.2需要手动输入 ogg (INITIALSETUP,yes)
SQL> @role_setup 
SQL> grant GGS_GGSUSER_ROLE to ogg;
SQL> @ddl_enable
SQL> @marker_status.sql

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

SQL> @ddl_pin.sql ogg

注1: 执行dbmspool包将在数据库中创建DBMS_SHARED_POOL包,之后ddl_pin包需要用到

注2: 执行ddl_pin.sql通过dbms_shared_pool.keep存储过程将DDLReplication相关对象keep在共享池中,以保证这些对象不要RELOAD,提升性能。

3.2.3.   OGG相关配置

进入控制台进行配置

  /opt/ora11g/ogg/ggsci

A.     配置mgr主进程组

edit params mgr

port 7809                                                   /* mgr所用端口号*/

dynamicportlist 7800-8000                                  /* mgr可用的端口范围*/

autostart  extract  *                                        /* 自动启动抽取进程 */   

autorestart extract *, waitminutes 2, resetminutes 5          /* 自动重启抽取进程 */    

lagreporthours 1                                             /* 每隔1小时检查延迟报告*/

laginfominutes 3                    /* 每隔3分钟检查延迟,如果超过延迟阈值,将写入错误日志*/

lagcriticalminutes 5                  /*延迟阈值5分钟*/

purgeoldextracts  /opt/ora11g/ogg/dirdat/rt*, usecheckpoints, minkeepdays 3

 /* 队列传递结束后,依然保留本地队列3天*/

配置完成后启动mgr进程

start mgr

B.          配置Extract进程组

配置抓取进程eora

edit params eora

extract eora                                               

dynamicresolution

setenv (ORACLE_SID=testw)                                 

setenv (NLS_LANG=AMERICAN_AMERICA.AL32UTF8)       

userid ogg,password ogg                                   

exttrail /opt/ora11g/ogg/dirdat/et                          

tranlogoptions excludeuser ogg                           

ddl include all                                             

ddloptions addtrandata, report

table hr.*;                                                

添加抽取进程

add extract eora, tranlog,begin now

添加本地trail文件

add exttrail /opt/ora11g/ogg/dirdat/et,extract eora

启动服务

start extract eora

C.  配置pump进程组

edit params pump_so

extract pump_so                                                    

dynamicresolution

passthru

rmthost 192.168.30.41,mgrport 7809,compress                        

rmttrail /opt/oracle/ogg/dirdat/pt                                  

table hr.*;

添加pump进程

add extract pump_so,exttrailsource /opt/ora11g/ogg/dirdat/et

添加远程trail文件

add rmttrail /opt/oracle/ogg/dirdat/pt,extract pump_so

说明: 指定远程trail文件

启动pump进程

start extract pump_so

D. 添加检查表

编辑全局配置文件

edit params ./GLOBALS
CHECKPOINTTABLE ogg.checkpoint

exit

export ORACLE_SID=test

./ggsci  

GGSCI (slave) 1> dblogin userid ogg,password ogg
Successfully logged into database.

GGSCI (slave) 2> add checkpointtable ogg.checkpoint
Successfully created checkpoint table OGG.CHECKPOINT.

E.  配置replicat进程组

edit params repl

replicat repl

setenv (ORACLE_SID=testw)

setenv (NLS_LANG=AMERICAN_AMERICA.AL32UTF8)

userid ogg,password ogg

assumetargetdefs

reperror default,discard

discardfile /opt/oracle/ogg/dirrpt/repl.dsc,append,megabytes 50

dynamicresolution
DBOPTIONS SUPPRESSTRIGGERS

DBOPTIONS DEFERREFCONST
map hr.*, target hr.*;

2) 添加复制进程
add replicat repl,exttrail /opt/oracle/ogg/dirdat/pt, CHECKPOINTTABLE ogg.checkpoint

3) 启动进程
start repl 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29578568/viewspace-2138128/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/29578568/viewspace-2138128/

你可能感兴趣的:(数据库,操作系统)