DMDRS主备由两个功能相同的DMDRS服务组成,一个作为主节点,另一个作为备节点。正常情况下由主节点承担数据捕获或数据写入任务;主节点异常时,备节点在满足切换条件的情况下接替工作,减少数据复制中断。
源DMDRS和目标DMDRS可以分别搭建主备:
本文以“源数据库DSC→目标数据库Oracle 11g”为例,搭建源DMDRS主备和单节点目标DMDRS。
数据同步开始后,源DMDRS主节点通过CPT模块读取源数据库的归档日志和逻辑日志,从指定LSN开始解析数据库变化,并将解析后的数据发送给目标DMDRS。目标DMDRS通过EXEC模块接收数据并写入目标数据库。
源DMDRS备节点与主节点保持主备关系,记录同步状态和检查点信息。当主节点无法继续工作时,备节点根据当前同步状态判断是否能够切换。
主备切换需要满足以下条件:
本次搭建环境如下:
| 服务 | 地址 | 站点号 | 作用 |
|---|---|---|---|
| 源DMDRS主节点 | 192.168.20.24:5345 | 1 | 捕获DSC数据 |
| 源DMDRS备节点 | 192.168.20.25:5345 | 1 | 作为源端备用节点 |
| 目标DMDRS | 192.168.20.21:5345 | 2 | 向Oracle写入数据 |
源DMDRS服务器需要配置DMDPI驱动,目标DMDRS服务器需要配置Oracle OCI驱动。
export LD_LIBRARY_PATH=<数据库驱动路径>:$LD_LIBRARY_PATH
source ~/.bash_profile
源数据库需要开启归档,并将RLOG_APPEND_LOGIC设置为1。
ALTER DATABASE MOUNT;
ALTER DATABASE ADD ARCHIVELOG
'DEST=<归档文件路径>,TYPE=LOCAL,FILE_SIZE=512,SPACE_LIMIT=10240';
ALTER DATABASE ARCHIVELOG;
ALTER DATABASE OPEN;
CALL SP_SET_PARA_VALUE(1,'RLOG_APPEND_LOGIC',1);
DSC环境还需要开启事务视图同步参数:
CALL SP_SET_PARA_VALUE(1,'DSC_TRX_VIEW_SYNC',1);
需要同步DDL时,在源数据库执行DMDRS提供的脚本:
SET DEFINE OFF;
START ddl_sql_dm8.sql;
源数据库和目标数据库分别创建DMDRS同步用户,并授予连接数据库、读取源表、访问日志信息和操作目标表所需的权限。
目标端配置文件使用exec.xml。
<?xml version="1.0" encoding="GB18030"?>
<drs>
<base>
<mgr_port>5345</mgr_port>
<siteid>2</siteid>
</base>
<exec>
<name>exec_ora</name>
<login>
<dbtype>oracle</dbtype>
<server>192.168.20.21:1521/orcl</server>
<user>DMDRS</user>
<pwd>DMDRS</pwd>
</login>
</exec>
</drs>
源端主节点使用cpt_dsc_master.xml。除数据库连接、发送目标和DSC信息外,需要将节点模式设置为master,并指定备节点。
<cluster>
<mode>master</mode>
<standby>
<ip>192.168.20.25</ip>
<port>5345</port>
<target_name>cpt_dsc</target_name>
</standby>
</cluster>
源端发送目标配置如下:
<send>
<ip>192.168.20.21</ip>
<port>5345</port>
<target_name>exec_ora</target_name>
<map>
<item>RESOURCES.EMPLOYEE==RESOURCES.EMPLOYEE</item>
</map>
</send>
备节点使用cpt_dsc_slave.xml。数据库连接、CPT名称、发送目标和DSC配置应与主节点对应,节点模式设置为slave。
<cluster>
<mode>slave</mode>
</cluster>
主备节点的siteid和CPT模块名称需要保持一致,Manager管理端口必须能够正常通信。
服务启动顺序为:
服务脚本主要配置安装目录、执行程序目录和XML配置文件路径。
INSTALL_HOME=/home/dmdrs/dmdrs5
PROG_DIR=/home/dmdrs/dmdrs5/bin
CONF_PATH=<XML配置文件路径>
EXEC_PROG_NAME=drsvr
SERVICE_TYPE_NAME="drs server"
启动服务:
./DrsService start
三个DMDRS服务全部启动后,在源DMDRS主节点连接控制台:
./drcsl cpt_dsc_master.xml
设置日志解析起点并启动CPT:
CSL> connect
CSL> alter cpt_dsc set lsn
CSL> start
将RESOURCES.EMPLOYEE加入同步,并先执行全量数据装载:
CSL> alter cpt_dsc add table "sch.name='RESOURCES' and tab.name='EMPLOYEE'"
全量装载完成后,CPT继续解析新增的日志,后续数据变化会持续同步到目标数据库。
在源数据库的RESOURCES.EMPLOYEE表中插入一条测试数据,然后查询目标数据库中的对应表。如果目标端能够查询到相同数据,说明全量装载和增量同步已经正常运行。
主备环境还需要检查:
文章
阅读量
获赞
