关键词:DMDRS、达梦数据复制软件、DM8、GBase 8s、一对一数据同步、搭建部署、DMDPI驱动、ODBC驱动、归档日志、逻辑日志、DDL同步
摘要:本文以源数据库DM8、目标数据库GBase 8s为例,介绍一对一数据同步场景中DMDRS的搭建流程,主要步骤包括场景规划(业务规划、网络规划、目录规划)、设置DMDRS运行用户、设置环境变量(源DMDRS添加DMDPI驱动文件路径,目标DMDRS添加ODBC驱动文件路径)、开启源数据库的归档和逻辑日志、配置DDL同步、配置DMDRS服务、运行DMDRS服务(启动目标DMDRS服务、启动源DMDRS服务、启动源DMDRS服务中的CPT模块)以及验证同步结果。配置文件中siteid为必配参数,须确保源、目标DMDRS站点号唯一。
以源数据库DM8和目标数据库GBase 8s为例,介绍在一对一数据同步场景中DMDRS的搭建流程。
1 场景规划
业务规划
数据同步场景中已部署两个数据库,包括源数据库DM8(192.168.20.24)和目标数据库GBase 8s(192.168.20.21),现需通过搭建DMDRS,将源数据库RESOURCES模式下所有表的全量数据和增量数据同步到目标数据库的gbasedbt用户下。
源DMDRS:捕获源数据库的数据,将捕获到的数据发送到目标DMDRS。
目标DMDRS:将接收的数据同步到目标数据库。
网络规划
| DMDRS服务 | IP地址和端口 | 连接数据库 | 说明 |
|---|---|---|---|
| 源DMDRS | 192.168.20.24:5345 | 源数据库 DM8 192.168.20.24:5236 | 源DMDRS服务器需要安装DMDPI驱动与源数据库DM8连接。 |
| 目标DMDRS | 192.168.20.21:5345 | 目标数据库GBase 8s 192.168.20.21:9088 | 目标DMDRS服务器需要安装ODBC驱动与目标数据库GBase 8s连接。 |
目录规划
源数据库、源DMDRS服务和目标DMDRS服务相关的目录规划如下表所示。
| 目录类型 | 目录名 | 目录示例 |
|---|---|---|
| 源数据库 | 数据库归档文件目录 | /dm8/data/arch |
| 数据库DDL同步脚本目录 | /home/dmdrs/dmdrs5/bin/scripts | |
| 源DMDRS服务 | 安装目录 | /home/dmdrs/dmdrs5 |
| 执行程序目录 | /home/dmdrs/dmdrs5/bin | |
| 配置文件路径 | /home/dmdrs/dmdrs5/bin/cpt.xml | |
| 服务脚本模板目录 | /home/dmdrs/dmdrs5/bin/service_template | |
| 服务脚本目录 | /home/dmdrs/dmdrs5/bin | |
| console远程控制工具 | /home/dmdrs/dmdrs5/bin/drcsl | |
| 目标DMDRS服务 | 安装目录 | /home/dmdrs/dmdrs5 |
| 执行程序目录 | /home/dmdrs/dmdrs5/bin | |
| 配置文件路径 | /home/dmdrs/dmdrs5/bin/exec.xml | |
| 服务脚本模板目录 | /home/dmdrs/dmdrs5/bin/service_template | |
| 服务脚本目录 | /home/dmdrs/dmdrs5/bin | |
| console远程控制工具 | /home/dmdrs/dmdrs5/bin/drcsl |
2 设置DMDRS运行用户
设置源DMDRS服务的运行用户对服务所在目录及子目录的读、写和执行权限,并设置运行用户同数据库归档文件所在目录属同一用户组,此用户组应对归档文件所在目录及子目录有读权限。
设置目标DMDRS服务的运行用户对服务所在目录及子目录的读、写和执行权限。
3 设置环境变量
在源DMDRS服务器的环境变量中添加DMDPI驱动文件路径,在目标DMDRS的服务器的环境变量中添加ODBC驱动文件路径。
打开.bash_profile配置文件。
$vi~/.bash_profile在.bash_profile配置文件末尾增加驱动路径。
源DMDRS服务器环境变量中添加DMDPI驱动路径。
exportLD_LIBRARY_PATH=<DMDPI驱动路径>:$LD_LIBRARY_PATH目标DMDRS服务器环境变量中添加ODBC驱动路径。
exportLD_LIBRARY_PATH=<ODBC驱动路径>:$LD_LIBRARY_PATH
保存并退出vi编辑器,使环境变量生效。
$source~/.bash_profile查看环境变量是否设置成功。
$echo$LD_LIBRARY_PATH
4 开启源数据库的归档和逻辑日志
使用动态配置的方式开启源数据库的归档和逻辑日志。
挂载源数据库。
SQL>alterdatabasemount;开启源数据库归档模式。
SQL>alterdatabasearchivelog;源数据库添加归档日志配置项。
SQL>alterdatabaseaddarchivelog'DEST=/dm8/data/arch,TYPE=LOCAL,FILE_SIZE=512,SPACE_LIMIT=10240';开启源数据库。
SQL>alterdatabaseopen;配置源数据库逻辑日志。
SQL>callsp_set_para_value(1,'RLOG_APPEND_LOGIC',1);
5 配置DDL同步
使用触发器方式配置DDL同步。
注意
- 创建DDL触发器和辅助表时,请使用具有DBA权限的用户。
- 如果触发器或辅助表无效或缺失,会导致DDL同步失败,甚至会影响数据库。
在源数据库执行“ddl_sql_dm8.sql”脚本创建触发器和辅助表,脚本默认位置在DMDRS执行程序目录下的scripts子目录中。
SQL>setdefineoff;SQL>startddl_sql_dm8.sql6 配置DMDRS服务
介绍源DMDRS服务和目标DMDRS服务的配置方法。
说明以下DMDRS服务的配置文件仅为示例,在实际应用场景中,请根据实际搭建环境修改配置文件中的参数配置,具体的参数说明和其他功能参数配置请参见《DMDRS参考手册》。
6.1 配置目标DMDRS服务
在目标DMDRS服务的配置文件目录,打开并修改exec.xml配置文件,修改后配置文件如下所示。
注意配置文件中的siteid为必配参数,配置时请确保源DMDRS和目标DMDRS服务站点号的唯一性,如果重复,会造成链路中数据复制的混乱。
<?xml version="1.0" encoding="GB18030"?><drs><base><mgr_port>5345</mgr_port><siteid>站点号</siteid></base><exec><name>exec_gbase</name><login><dbtype>gbase8s</dbtype><server>192.168.20.21/gbaseserver</server><driver>GBase ODBC DRIVER</driver><user>gbasedbt</user><pwd>gbasedbt</pwd><port>9088</port><dbname>gbasedbt</dbname></login><toggle_case>1</toggle_case></exec></drs>6.2 配置源DMDRS服务
在源DMDRS服务的配置文件目录,打开并修改cpt.xml配置文件,修改后配置文件如下所示。
注意配置文件中的siteid为必配参数,配置时请确保源DMDRS和目标DMDRS服务站点号的唯一性,如果重复,会造成链路中数据复制的混乱。
<?xml version="1.0" encoding="GB18030"?><drs><base><mgr_port>5345</mgr_port><siteid>站点号</siteid></base><cpt><name>cpt_dm8</name><login><dbtype>dm8</dbtype><server>192.168.20.24</server><user>DMDRS</user><pwd>DMDRS</pwd><port>5236</port></login><send><ip>192.168.20.21</ip><port>5345</port><target_name>exec_gbase</target_name><map><item>RESOURCES.*==gbasedbt.*</item></map></send></cpt></drs>7 运行DMDRS服务
按照服务的运行顺序,启动目标DMDRS服务和源DMDRS服务。
7.1 启动目标DMDRS服务
将服务脚本模板TemplateService拷贝到服务脚本目录并修改服务脚本的名称为DrsService。
$cpTemplateService../DrsService打开并修改DrsService服务脚本中的相关配置参数。
$viDrsServiceINSTALL_HOME=/home/dmdrs/dmdrs5PROG_DIR=/home/dmdrs/dmdrs5/binCONF_PATH=/home/dmdrs/dmdrs5/bin/exec.xmlEXEC_PROG_NAME=drsvrSERVICE_TYPE_NAME="drs server"启动目标DMDRS服务。
$ ./DrsService start
7.2 启动源DMDRS服务
将服务脚本模板TemplateService拷贝到服务脚本目录并修改服务脚本的名称为DrsService。
$cpTemplateService../DrsService打开并修改DrsService服务脚本中的相关配置参数。
$viDrsServiceINSTALL_HOME=/home/dmdrs/dmdrs5PROG_DIR=/home/dmdrs/dmdrs5/binCONF_PATH=/home/dmdrs/dmdrs5/bin/cpt.xmlEXEC_PROG_NAME=drsvrSERVICE_TYPE_NAME="drs server"启动源DMDRS服务。
$ ./DrsService start
7.3 启动源DMDRS服务中的CPT模块
使用服务脚本启动服务后,需要使用远程控制台对服务中的模块执行启动命令。
启动控制台。
$ ./drcsl cpt.xml连接源DMDRS服务。
CSL>connect设置数据库当前最新的日志LSN作为日志解析的起始位置。如需指定归档文件作为起始位置,请参考《DMDRS控制台命令手册》进行设置。
CSL>alter cpt_dm8setlsn启动源DMDRS服务中的CPT模块。
CSL>start将源数据库中RESOURCES模式下所有的表添加同步,添加后自动将源数据库表的全量数据装载到目标数据库,装载完成后自动进行增量数据的同步。
CSL>alter cpt_dm8addtable"sch.name='RESOURCES'"使用命令查看数据装载的监控信息,具体命令请参见《DMDRS控制台命令手册》。
8 验证同步结果
在源数据库中RESOURCES模式下所有的表中分别插入数据,如果插入的数据能正确地同步到目标数据库,则表示数据同步成功。
如果你在使用AI助手时想了解源数据库DM8到目标数据库GBase 8s一对一数据同步的DMDRS搭建流程(场景规划、环境配置、服务配置与运行、验证同步结果),这篇文章可以作为参考。