一、部署要求
1.1 硬件要求
DMDRS服务 | 描述 |
源DMDRS |
源DMDRS对内存空间的需求主要与装载的并发数相关。当内存空间配置低于2GB时,可以调整装载的线程数来降低源DMDRS对内存空间的需求。
源DMDRS对磁盘空间的需求与应用场景相关。当源DMDRS需要处理大规模查询建表同步、大事务同步和启用大对象延时装载时,建议预留200GB及以上的磁盘空间。 |
目标DMDRS |
目标DMDRS对内存空间的需求与应用场景相关。目标DMDRS内存空间不足会导致频繁的检查点读写从而影响同步性能。建议配置8GB以上的内存空间。
目标DMDRS对磁盘空间的需求与应用场景相关。目标DMDRS的磁盘空间不足会影响无主键表同步和大事务同步的性能。当磁盘空间低于20GB时,目标DMDRS将不再执行检查点,从而阻塞源DMDRS服务的检查点。建议预留1TB以上的磁盘空间 |
DMDSS |
DMDSS对内存空间的需求与应用场景的性能需求相关。充足的内存可以减小IO的次数从而提升数据存储和数据消费的性能,建议配置32GB以上的内存。
DMDSS对磁盘空间的需求主要与数据同步延时和日志流量相关。充足的磁盘空间可以在同步延时较高或日志流量较大的情况下有效降低源数据库机器对归档存储空间的需求。建议配置为源数据库三天归档日志文件量的磁盘空间大小。当磁盘空间低于10GB时,DMDSS将挂起同步数据的接收,从而间接阻塞源DMDRS服务的日志解析。 |
1.2 软件要求
环境项目 | 描述 |
操作系统 | CentOS Linux 7 |
源数据库类型及驱动 | DM8(单机):DMDPI驱动。 |
目标数据库类型及驱动 | DM8(单机):DMDPI驱动。 |
DMDRS安装包 | dmdrs_rev166696_x86_rh6_64_20240808.bin |
二、 数据库准备工作
在运行DMDRS服务前,数据库管理员需要对数据库做如下准备工作:
配置服务 | 准备工作 |
源DMDRS | 除数据迁移场景外,其他应用场景均需要开启源数据库的归档和逻辑日志。 |
除数据迁移场景外,其他应用场景均需要配置DDL同步。 | |
创建源数据库同步用户DMDRS。 | |
配置源数据库同步用户最小权限。 | |
目标DMDRS | 创建数据库同步用户DMDRS。 |
配置目标数据库同步用户最小权限。 | |
DMDSS | 无 |
2.1 开启源数据库的归档和逻辑日志
- 动态开启数据库给归档日志
alter database mount;
alter database add archivelog 'DEST=/data/dmarch,TYPE=LOCAL,FILE_SIZE=512,SPACE_LIMIT=10240';
alter database archivelog;
alter database open;
- 动态开启数据库附加日志(调用系统过程SP_SET_PARA_VALUE修改RLOG_APPEND_LOGIC参数值)
call sp_set_para_value(1,'RLOG_APPEND_LOGIC',1);
2.2 配置DDL同步
set define off;
start /home/dmdrs/dmdrs5/bin/scripts/ddl_sql_dm8.sql
注: /home/dmdrs/dmdrs5 为DMDRS软件安装目录
2.3 创建数据库同步用户DMDRS
- 源数据库同步用户最小权限
-- ## 基础权限
-- 需要创建会话权限
GRANT CREATE SESSION TO DMDRS;
-- 插入、删除、更新数据时,需要数据操作权限
GRANT PUBLIC TO DMDRS;
-- 需要系统表、系统字典和动态视图的查询权限
GRANT SOI,SVI,VTI TO DMDRS;
-- ## 装载权限
-- 需要非同步用户下待装载表/序列上的查询权限
GRANT SELECT ON <待装载表/序列的模式名>.<待装载表/序列的表名>TO DMDRS;
-- ## 同步权限
-- DSC时,需要新增以下权限:
GRANT CREATE TABLE TO DMDRS;
GRANT CREATE PACKAGE TO DMDRS;
- 目的端数据库同步用户最小权限
-- ## 基础权限
-- 需要创建会话权限
GRANT CREATE SESSION TO DMDRS;
-- 启动时需要在目标数据库中创建辅助表和辅助存储过程
GRANT RESOURCE TO DMDRS;
-- 插入、删除、更新数据时,需要数据操作权限
GRANT PUBLIC TO DMDRS;
-- 启动时需要查询数据库的相关参数信息
GRANT SOI TO DMDRS;
-- ## 装载、同步相关权限
-- 需要如下系统表、系统字典及动态视图的查询权限
GRANT SVI,VTI TO DMDRS;
-- ## 装载与同步相关权限
-- 需要非同步用户模式下已存在的待同步表/序列的操作权限
GRANT INSERT ON <目标表的模式名>.<目标表名> TO DMDRS;
GRANT UPDATE ON <目标表的模式名>.<目标表名> TO DMDRS;
GRANT DELETE ON <目标表的模式名>.<目标表名> TO DMDRS;
GRANT SELECT ON <目标序列的模式名>.<目标序列名> TO DMDRS;
-- 需要非同步用户模式下未存在的表/序列的数据的操作权限。也可以在目标同步表创建后,同上行所述单独为每张表赋予操作权限
GRANT INSERT ANY TABLE TO DMDRS;
GRANT UPDATE ANY TABLE TO DMDRS;
GRANT DELETE ANY TABLE TO DMDRS;
GRANT SELECT ANY TABLE TO DMDRS;
GRANT SELECT ANY SEQUENCE TO DMDRS;
-- 需要非同步用户模式下对象的DDL权限
GRANT CREATE ANY <对象类型> TO DMDRS;
GRANT ALTER ANY <对象类型> TO DMDRS;
GRANT DROP ANY <对象类型> TO DMDRS;
-- 需要赋予同步用户辅助存储过程的执行权限以及非同步用户下模式所属用户的存储过程的创建权限
GRANT EXECUTE ON PROCEDURE "DRS_$DDL_SQL_PROC" TO DMDRS;
GRANT CREATE PROCEDURE TO <非同步用户下模式所属的用户>;
三、 DMDRS准备工作
本文搭建是一对一同步,将源数据库的数据通过DMDRS单向地同步到目标数据库。
3.1 安装部署dmdrs软件
上传软件安装到指定目录,如:/data/dmsoft,执行以下命令开始安装:
/dmdrs_xxx.bin -i
根据需求,安装相关的管理组件或代理组件
建议元数据库选择外置库,方便查询和管理
接着就是根据提示选择下一步即可。
需要注意,如果自带的dmdrs授权过期,启动时会报错,需要将dmdrs授权放置在安装目录的bin目录下,重启服务即可。
3.2 设置运行用户权限
#设置源DMDRS服务的运行用户对服务所在目录及子目录的读、写和执行权限,并设置运行用户同数据库归档文件所在目录属同一用户组,此用户组应对归档文件所在目录及子目录有读权限。#设置目标DMDRS服务的运行用户对服务所在目录及子目录的读、写和执行权限。
3.3 源端和目的端设置环境变量
#在源DMDRS和目标DMDRS服务器的环境变量中添加DMDPI驱动文件路径。#打开.bash_profile配置文件。
$ vi ~/.bash_profile#在.bash_profile配置文件末尾增加DMDPI驱动路径。
export LD_LIBRARY_PATH=<DMDPI驱动路径>:$LD_LIBRARY_PATH#保存并退出vi编辑器,使环境变量生效。
$ source ~/.bash_profile#查看环境变量是否设置成功。
$ echo $LD_LIBRARY_PATH
四、DMDRS配置
4.1 配置源DMDRS
进入安装目录下的bin目录,新建drs.xml:
cd /home/dmdrs/dmdrs5/bin/
vi drs.xml
配置源端的配置文件内容,如下:
<?xml version="1.0" encoding="GB18030"?>
<drs><base><mgr_port>5345</mgr_port><!--如:5345--><siteid>1</siteid><!--如:1--><mem_size>1</mem_size></base><cpt><name>cpt_dm8</name><!--如:cpt_dm8--><login><dbtype>dm8</dbtype><!--如:dm8--><server>192.***.**.100</server><!--如:192.168.20.24--><user>DMDRS</user><!--如:DMDRS--><pwd>密码</pwd><!--如:DMDRS--><port>5236</port><!--如:5236--></login><send><ip>192.***.**.101</ip><!--如:192.168.20.21--><port>5345</port><!--如:5345--><target_name>exec_dm8</target_name><!--如:exec_dm8--><map><item>TEST.*==TEST.*</item><!--如:*.*==*.*--></map></send></cpt>
</drs>
4.2 配置目的端DMDRS
进入安装目录下的bin目录,新建drs.xml:
cd /home/dmdrs/dmdrs5/bin/
vi drs.xml
配置目的端的配置文件内容,如下:
<?xml version="1.0" encoding="GB18030"?>
<drs><base><mgr_port>5345</mgr_port><!--如:5345--><siteid>2</siteid><!--如:2--></base><exec><name>exec_dm8</name><!--如:exec_dm8--><login><dbtype>dm8</dbtype><!--如:dm8--><server>192.***.**.101</server><!--如:192.168.20.21--><user>DMDRS</user><!--如:DMDRS--><pwd>密码</pwd><!--如:DMDRS--><port>5236</port><!--如:5236--></login></exec>
</drs>
五、管理DMDRS
5.1 配置源端DMDRS服务(目的端一样)
5.1.1 配置DMDRS服务脚本
将服务脚本模板TemplateService拷贝到执行程序目录,并修改服务脚本的名称为默认服务脚本名。
cd /home/dmdrs/dmdrs5/bin/service_template
mv TemplateService ../DrsService
打开并修改服务脚本中的相关配置参数。
INSTALL_HOME=<安装目录>
PROG_DIR=<执行程序目录>
CONF_PATH=<配置文件路径>
EXEC_PROG_NAME=<可执行程序名>
SERVICE_TYPE_NAME=<服务类型名>
5.1.2 启动目的端、源端DMDRS服务
cd /home/dmdrs/dmdrs5/bin
./DrsService start/stop
5.2 数据迁移
数据迁移启动顺序:先启动EXEC模块,无需启动CPT模块。
5.2.1 启动目的端exec模块
cd /home/dmdrs/dmdrs5/bin
./drcsl drs.xml #登录控制台
CSL> connect #连接源DMDRS服务#启动exec模块
CSL> start exec_dm8
5.2.2 源端执行数据迁移
数据迁移装载示例如下:
cd /home/dmdrs/dmdrs5/bin
./drcsl drs.xml #登录控制台
CSL> connect #连接源DMDRS服务#全量装载TEST模式下的所有表数据
CSL> alter cpt_dm8 cp "sch.name='TEST' " #全量装载TEST模式下的表employee数据
CSL> alter cpt_dm8 cp "sch.name='TEST' and tab.name='employee'"#装载一类对象:装载TEST模式下的所有触发器。
CSL> cp cpt_dm8 "sch.name='TEST'" CREATE TRIGGER
5.3 数据同步
数据同步启动顺序:先启动EXEC模块,再启动CPT模块。
5.3.1 启动目的端exec模块
(参考5.2.1)
5.3.2 启动源端cpt模块
cd /home/dmdrs/dmdrs5/bin
./drcsl drs.xml #登录控制台
CSL> connect #连接源DMDRS服务
5.3.3 配置起始LSN并进行增量同步
#设置数据库当前最新的日志LSN作为日志解析的起始位置。如需指定归档文件作为起始位置,请参考《DMDRS参考手册》进行设置。
CSL> alter cpt_dm8 set lsn#启动源DMDRS服务中的CPT模块。
CSL> start#将源数据库中TEST模式下所有的表添加同步,并在同步之前把源端表的全量数据装载到目标数据库。
CSL> alter cpt_dm8 add table "sch.name='TEST'"
资料参考:
更多的数据迁移,数据同步命令和搭建步骤查看《DMDRS参考手册》和《DMDRS搭建手册-DM8》,其中文中用到的命令详情可参考文档中如下几个章节的内容:
DMDRS中xml配置相关参数详解参考《DMDRS参考手册》中"1 DMDRS配置参数"。
对象装载查看文档《DMDRS参考手册》中"2.3.1 数据迁移"小节。
对象装载查看文档《DMDRS参考手册》中"2.3.2 对象装载"小节。
动态添加、更新、删除增量同步表等查看文档《DMDRS参考手册》中"2.3.4 添加、更新、删除和终止增量同步表"小节。
动态添加和删除同步表查看文档《DMDRS参考手册》中"2.3.5 添加同步表"小节。