Golden Gate 数据库复制应用

发布于 2024-09-20 16:36:36 字数 7274 浏览 8 评论 0

Oracle Goldengate (GG) 是一款实时访问、基于日志变化捕捉数据,并且在异构平台和数据库之间进行数据传输的外部软件和产品。利用这个技术,Goldengate 能够实现低延迟、高性能、低影响业务连续的数据集成。

本案例将会实现使用 Golden Gate 在两台 Oracle 数据库之间进行数据同步的操作。首先实现的是从源数据库到目标数据库的同步。
相关配置环境为:

  • 源数据库:Oracle Enterprise 12C, CentOS 7.9, 192.168.9.71
  • 目标数据库:Oracle Enterprise 12C, CentOS 7.9, 192.168.9.75
  • 同步工具:Oracle Golden Gate 19.1 For Oracle on Linux x86-64

OGG 的原理

GoldenGate 的运行主要包含以下过程:

  • Manager 进程

在源和目标端,首先都需要运行一个 Manager 进程,它用于负责启动、关闭、监控其他进程的健康状态,报告错误事件、分配数据存储空间,发布阀值报告等。

  • Extract 进程

运行在数据库源端,负责从源端数据表或日志中捕获数据,然后捕获到的将写到本地 trail 文件。 想要复制的对象数据发生改变时,Extract 进程 就会进行捕捉,当事务提交时,所有和该事务相关的日志记录被以事务为单元顺序的记录到 trail 文件中。Extract 进程利用其内在的 checkpoint 机制,周期性的记录其读写的位置,实现断点同步。

Extract 包括两种捕获模式:

传统模式:基于在线日志或归档日志进行抽取

集成(Integrated, 11G 以上) 模式: Logmining server 负责以 LCR 格式从数据库日志中捕获数据变化,extract 进程再将这些数据存入 trail 文件。

  • Pump 进程(可选)

运行在数据库源端, 其作用是将源端产生的本地 trail 文件,把 trail 以数据块的形式通过 TCP/IP 协议发送到目标端。
但是如果如果不使用 trail 文件,那么 extract 进程在抽取完数据以后,直接投递到目标端,生成远程 trail 文件,那么这时候,Pump 进程就可以不用配置(存在) 了。

  • Replicat 进程

运行在数据库目标端 ,负责读取源端传送到目标端的 trail 文件中的内容,并将其解析为 DML 或 DDL 语句, 然后应用到目标数据库中。

  • Replicat 也有两种模式
  • 传统模式:基于 sql 交付,最常用的一种方式
  • Integrated 模式:对应这种模式,官方文档是这样描述的

Replicat 操作的过程如下:

读取源端传输过来的 trail 文件;执行 data 数据过滤和转换操作;
DML 操作:根据 commit 顺序,构造 LCR;DDL 操作:Replicat 进程直接 apply;
Replicat 通过 lightweight streaming 接口和目标库后台进程(Database inbound server)建立连接;
将 LCR 传输到 inbound server,然后 apply 这些数据到目标数据库。

两个 Apply Servers 的 Integrated 模式

其实对于进程的 Capture and Apply Modes 可以参考一下官方文档:http://docs.oracle.com/goldengate/1212/gg-winux/GIORA/process_mode.htm#GIORA554

  • Server Collector 进程

运行于目标端,作用就是把 Extract/Pump 进程投递过来的数据块重新组装成 Trail 文件。运行期间无需任何配置。是一个完全自动的进程

环境准备、安装和配置

在需要安装配置 OGG 的主机上,需要进行相关的配置,不分源数据库或者目标数据库。我们这里简化之间使用 oracle 用户,作为 ogg 用户。

我们假设 OGG 将会安装到 /u01/app/ogg 文件夹之下

安装 OGG

直接将 OGG 安装文件解压到 /u01/app/ogg 文件夹下?(可能已经不能使用)

在 11 版本之后,Oracle 提供了类似安装数据库产品的安装过程来安装 OGG。
我们假设我们将安装包解压到了 /stage/ogg 文件夹下,并从此处启动安装过程

 unzip 123012_fbo_ggs_Linux_x64_shiphome.zip  
 mv fbo_ggs_Linux_x64_shiphome/Disk1  /stage/ogg
 chown -R oracle:oinstall /stage/ogg

编辑响应文件,修改或增加以下内容

 nano /stage/ogg/ogg.rsp 

 // rsp file content 
 INSTALL_OPTION=ORA12c
 SOFTWARE_LOCATION=/u01/app/ogg
 START_MANAGER=true
 MANAGER_PORT=7809
 DATABASE_LOCATION=/u01/app/oracle/product/12.2.0/dbhome_1
 INVENTORY_LOCATION=/u01/app/oraInventory
 UNIX_GROUP_NAME=oinstall

 // 启动安装
 cd /stage/ogg
 ./runInstaller -silent -responseFile /stage/ogg/ogg.rsp 

过程中,可能需要使用 root 来运行一些脚本程序。

.bash_profile

编辑 oracle 的 bash_profile 文件增加以下内容

 # Path Oracle GoldenGate
 export OGG_HOME=/u01/app/ogg
 export PATH=$OGG_HOME:$PATH
 export LD_LIBRARY_PATH=$OGG_HOME:$LD_LIBRARY_PATH

 // 重载环境变量
 source ~/.bash_profile 

准备 OGG 文件夹

启动 ggsci 命令行

 cd $OGG_HOME
 ./ggsci

 // 创建相关目录
 create subdirs

准备 OGG 凭据库和别名 (ggadmin)

 add credentialstore // 创建凭据库
 alter credentialstore add user c##ggate alias ggadmin // 增加凭据和别名
 info credentialstore // 检查当前凭据
 dblogin useridalias ggadmin // 使用凭据别名登录

下面的操作分别在源和目标数据库上进行。

数据库参数配置

 // goldengate replication
 ALTER SYSTEM SET ENABLE_GOLDENGATE_REPLICATION=TRUE SCOPE=BOTH;
 show parameter ENABLE_GOLDENGATE_REPLICATION

 // recyclebin off
 alter session set recyclebin=off;

GG 管理用户和测试用户(表)

 CREATE TABLESPACE ggs_data LOGGING DATAFILE '/opt/oradata/ggs_data.dbf'
 SIZE 1024M  AUTOEXTEND ON  NEXT 512M MAXSIZE 8096M EXTENT MANAGEMENT LOCAL; 

 create TEMPORARY TABLESPACE ggs_temp TEMPFILE 'ggs_temp.dbf' SIZE 5M AUTOEXTEND ON;

 create user c##ggate identified by Ulsc_0202 default tablespace ggs_data temporary tablespace ggs_temp;
 grant dba to c##ggate container=all ;
 
 // gg 权限配置
 EXEC dbms_goldengate_auth.grant_admin_privilege('c##ggate');

我们将使用使用一个用户数据表先作为测试

 conn C##ULPLAT;
 create table tb_ggate (id number not null ,vl varchar2(200) ,primary key(id));

源数据库准备

源端数据库必须置于归档模式,force logging,并且启用 supplemental logging。查看这几个选项是否启动,最简单的方式是查询 v$database 视图;

   // 查看当前模式
   select log_mode,supplemental_log_data_min,force_logging from v$database;

如果不是,需要进行相关修改操作,如下:

 --启动到 mount 状态:
 startup mount;

 --置于归档模式:
 alter database archivelog;

 --强制日志记录:
 alter database force logging;

 --启用最少附加日志,数据库级别附加日志
 alter database add supplemental log data;

源数据库用户级别附加日志配置

 dblogin useridalias ggadmin
 add schematrandata c##ulplat@orcl.root
 add schematrandata c##ulplat@orcl.root

目标数据库配置和准备

按照源数据库的方式创建表空间、使用用户和 GG 管理用户。

目标 OGG 配置和准备

按照源数据库的方式准备 OGG,包括 OGG 账号、确认 mrg 状态等。还需要设置检查表如下:

  ggsci 
  dblogin useridalias ggadmin 
  add checkpointtable CDB$ROOT.c##ggate.chktable 

测试数据同步

两端数据库和相关环境参数配置完成之后,就可以进一步配置 OGG 本身,并且完成数据同步的过程了。基本的思路和过程是首先准备好测试数据,然后进行源端的 manager 进程管理配置,

目标 Manager 进程和管理用户

cd $OGG_HOME
ggsci

add credentialstore
alter credentialstore add user c##ulplat alias ggadmin
dblogin useridalias ggadmin

stop | start mgr
info all 

目标 replicat 进程

 add replicat rp000,specialrun
 edit params rp000

 REPLICAT re000
 DISCARDFILE ./dirrpt/repgg.dsc, APPEND
 DBOPTIONS ENABLE_INSTANTIATION_FILTERING
 ASSUMETARGETDEFS
 USERID c##ggadmin@pdb1, PASSWORD ggadmin
 DDL INCLUDE ALL
 DDLOPTIONS REPORT
 MAP pdb.C##ULPLAT.*, TARGET pdb.C##ULPLAT.*;

 start replicat rp000
 info all

测试数据准备- (源端)

 // 测试数据
 conn C##ULPLAT;
 insert into tb_ggate select rownum rn,object_name from all_objects;

源 Manager 进程和管理用户

GGSCI
edit params mgr

add credentialstore
alter credentialstore add user gguser alias ogguser
dblogin useridalias ogguser

配置 extract(源端)

配置 pump(源端)

本来 pump 是可选的。它的引入主要是增强数据同步的可靠性。使用 pump 的情况下,extract 抽取数据后,首先保存在本地的 trail 文件中,然后由 pump 负责将本地 trail 文件中的数据传输到远端,就可以避免由于网络问题而引起的数据传输错误。

checkpoint 表

源端进程启动

分别启动 mrg、extract 和 pump 进程

 start mgr
 start ext01
 start PUMP01
 info all

数据导入

目标端进程启动

 start mgr
 start rep01,aftercsn 54995990597
 info all

创建 ULPT 的 pdb

CREATE PLUGGABLE DATABASE ulptdb ADMIN USER ulpt IDENTIFIED BY Ulsc_0202
STORAGE (MAXSIZE 2G)
DEFAULT TABLESPACE ulpt
DATAFILE '/opt/oradata/ulpt/ulpt.dbf' SIZE 200M AUTOEXTEND ON
PATH_PREFIX = '/opt/oradata/ulpt/'
FILE_NAME_CONVERT = ('/u01/app/oracle/oradata/orcl/pdbseed', '/opt/oradata/ulpt');

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

凑诗

暂无简介

0 文章
0 评论
22 人气
更多

推荐作者

我们的影子

文章 0 评论 0

素年丶

文章 0 评论 0

南笙

文章 0 评论 0

18215568913

文章 0 评论 0

qq_xk7Ean

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文