(1)两台机器均安装达梦数据库
(2)两台数据库字符集相同
(3)两台主机都关闭防火墙,上传dmhs安装包、libdmoci.so文件(对应版本)
(1)可执行文件授权:
mv dmhs_V4.3.08_dm8_rev126685_rh6_64_veri_20230323_sp5.bin /home/dmdba
chmod +x dmhs_V4.3.08_dm8_rev126685_rh6_64_veri_20230323_sp5.bin
(2)检查下tmp空间是否有1G大小,不足的话在root进行扩容:
mount -o remount,size=2G /tmp
(3)启动dmhs执行文件:
./dmhs_V4.3.08_dm8_rev126685_rh6_64_veri_20230323_sp5.bin -i
环境安装路径为/home/dmdba/dmhs,源端虚机和目的端虚机环境都需要安装。
(1)归档参数检查
DMHS同步源端数据库需要开启归档模式,检查归档是否开启:
如果ARCH_MODE为N,则未开启归档,执行步骤如下:
SQL> alter database mount;
SQL> alter database add archivelog 'DEST=/dm8/dmarch,TYPE=LOCAL,FILE_SIZE=256,SPACE_LIMIT=0';
SQL> alter database archivelog;
SQL> alter database open;
(2)附件日志参数
DMHS同步源端数据库需要开启附加日志参数
SP_SET_PARA_VALUE(1,'RLOG_APPEND_LOGIC',1);
select para_value from v$dm_ini where para_name in ('RLOG_APPEND_LOGIC');
注意:dm.ini配置参数中“FAST_COMMIT”必须为0,否则会导致逻辑日志不全而影响同步。
SP_SET_PARA_VALUE(1,'FAST_COMMIT',0);
select para_value from v$dm_ini where para_name in ('FAST_COMMIT');
注:一定了解清楚客户的需求是否需要ddl同步,如果不需要,不要执行此脚本,并且源端配置文件中配置
DMHS支持DDL同步功能,但是默认不启用该功能。对于同步源端为DM8数据
库,有两种方式启用DDL同步功能:
(1)启用DM8数据库系统参数“RLOG_APPEND_SYSTAB_LOGIC”,该参数启用在日志中记录系统表逻辑操作功能。该参数默认取值为0,即不启用;设置为1时,启用该功能。同时也需要在DMHS配置文件中进行ddl_mask参数配置,用于设置DDL同步对象及操作。
RLOG_APPEND_SYSTAB_LOGIC这个参数在启用 RLOG_APPEND_LOGIC 后有效
(2)执行DDL同步脚本方式。在源端DM8数据库中以SYSDBA用户执行DDL同步脚本,在SYSDBA模式下创建相关DMHS系统表及触发器,并在DMHS配置文件中配置ddl_mask参数选项以启用该功能。ddl_mask参数的取值参见《达梦数据实时同步软件用户手册》。
同步脚本位于DMHS安装目录的scripts子目录下,命名为:ddl_sql_DM8.sql。运行过程使用以下命令:
SYSDBA用户执行。
start .../ddl_sql_DM8.sql --建议用管理工具执行。
--检查创建的触发器和辅助表是否有效,检查辅助表的语句:
select owner, table_name from dba_tables where owner = 'SYSDBA' and table_name like 'DMHS%' and status = 'VALID';
如果存在以上的查询结果,表示DMHS辅助表创建有效。
--检查触发器的语句:
select owner, trigger_name from dba_triggers where owner = 'SYSDBA' and trigger_name like 'DMHS%' and status = 'Y';
如果存在以上的查询结果,表示DMHS触发器创建有效。
源端和目标端数据库执行操作进行连接用户创建及授权:
CREATE TABLESPACE HSEXEC DATAFILE 'HSEXEC.DBF' size 128;
CREATE USER HSEXEC IDENTIFIED by "111111111" DEFAULT TABLESPACE HSEXEC DEFAULT INDEX TABLESPACE HSEXEC;
GRANT VTI TO HSEXEC;
GRANT PUBLIC TO HSEXEC;
GRANT RESOURCE TO HSEXEC;
GRANT DBA TO HSEXEC;
源端创建测试模式及对象:
create tablespace lcz datafile '/dm8/dmdata/DMDB/lcz.dbf' size 256;
create user lcz identified by “lcz123456” default tablespace LCZ default index tablespace lcz;
GRANT VTI TO LCZ;
GRANT PUBLIC TO LCZ;
GRANT RESOURCE TO LCZ;
GRANT DBA TO LCZ;
create table lcz.test1 (id int,ename varchar(10));
insert into lcz.test1 values (1,'lcz');
insert into lcz.test1 values (2,'you');
insert into lcz.test1 values (3,'rui');
commit;
create table lcz.test_insert(id int,name varchar(100),addr varchar(200));
declare
sqlstr varchar;
begin
for i in 1..100 loop
sqlstr:='insert into lcz.test_insert values ';
for j in 1..10 loop
sqlstr=sqlstr || '(' ||j|| ',''test'',''testestewt''),';
end loop;
sqlstr=rtrim(sqlstr,',') ;
execute immediate sqlstr;
end loop;
commit;
end
/
目标端创建用户:
create tablespace lcz1 datafile 'lcz1.dbf' size 256;
create user lcz1 identified by “lcz123456” default tablespace lcz1 default index tablespace lcz1;
GRANT VTI TO LCZ1;
GRANT PUBLIC TO LCZ1;
GRANT RESOURCE TO LCZ1;
GRANT DBA TO LCZ1;
由于DMHS配置文件涉及多个配置项,在安装配置DMHS之前,需要做好相关准备工作,具体有如下准备工作:
(1)检查操作系统及数据库版本以及位数,确保与待部署的DMHS版本相匹配。
(2)规划好源端DMHS可使用的安装部署路径。
(3)DMHS部署需要设置管理端口号(mgr_port)和数据端口号(data_port),因此在部署之前,需要提供两个端口号以供使用。
(4)在部署之前需要明确DMHS配置文件中连接DM8数据库的用户(db_user)及密码(db_pwd),该用户需要具有操作待同步表的权限。本文档为测试用例,自行创建测试用户。
(5)确定是否有DDL同步需求,如果有,确定待同步的对象如表、视图、存储过程、函数、序列等,并且需要确定对象的操作如创建、删除、修改等。根据此同步需求设置ddl_mask参数值。
(6)确定源端DM8数据库的归档日志是否需要DMHS进行处理如删除、保留或转移。依据此需求设置clear_flag参数值。
(7)确定需要进行数据同步的用户表(白名单及黑名单)及同步映射关系,并据此需求,完成filter及map元素项的参数值设置。
(8)源端数据库是否通过HA管理
源端数据库是否通过HA管理,请咨询现场数据库DBA或实施人员。如果源端数据库是通过HA进行管理的,则配置DMHS的时候需要将整个DMHS部署到HA管理的阵列上或者将DMHS配置
(9)源端是否为主备环境,如果在主备环境上搭建DMHS,在进行数据装载的时候指定的IP必须是主机的IP,不能为备机IP。
cd /home/dmdba/dmhs/bin
cp TemplateDmhsService DmhsService
vim DmhsService
下面为内容解析:
本例dmhs.hs文件配置如下:
DMHS部署分为源端部署和目的端部署两个步骤。在完成源端相关准备工作后,需要进行目的端的相关准备,具体有如下准备工作:
(1)检查操作系统及数据库版本以及位数,确保与待部署的DMHS版本相匹配。
(2)规划好目的端DMHS可使用的安装部署路径。
(3)DMHS部署需要设置管理端口号(mgr_port)和数据端口号(data_port),在部署之前,需要提供两个端口号以供使用。
(4)在部署之前需要明确DMHS配置文件中目的端DM8数据库的用户(db_user)及密码(db_pwd),该用户用来执行同步,需要具有操作其他同步用户的权限。
当目标端数据库管理系统是DM6时,执行端数据库连接必须使用SYSDBA
(5)源端是否有序列同步,如果有,目的端配置文件中需要设置参数“seq_sync_mode”取值为1。
(6)目的端同步表上是否有触发器,如果有,需要禁用触发器。
DMHS管理员手册:
EXEC模块在事务数据入库时,由于采用的是ODBC标准的接口操作数据库,如果目标表上存在触发器,那么入库操作同样会触发这些触发器,如果触发器中会涉及到数据或是其它表的修改,则会造成源端和目标端数据的不一致。在搭建DMHS时,应该事先禁用目标库中需要同步表上的触发器,针对表上约束也是一样的道理。
cd /home/dmdba/dmhs/bin
cp TemplateDmhsService DmhsService
vim DmhsService
本文示例:
在启动服务之前,需确认动态库匹配:
Ldd libdmhs_exec.so
Ldd libcpt_dm8.so
最好目的端和源端都检查一下,找到对应版本的libdmoci.so,放到hs的bin下。
DMHS初始装载有两种:初始字典装载和初始数据装载。
DMHS同步源端在首次启动日志分析进行数据同步之前,需要进行初始字典装载操作,在程序目录下创建DICT文件夹,并将同步表的字典信息写入文件保存在磁盘上,然后才能启动源端日志分析模块功能。
初始数据装载主要用于将同步源端的数据装载到目的端,保持源端和目的端的数据初始一致。如果没有数据装载的需求,可以不用进行该操作。
(1)启动目的端执行服务
进行初始字典装载时,需要首先启动目的端DMHS服务。启动DMHS服务方式有命令行启动和后台服务启动。如下为Linux环境启动方式,Windows方式类似。
启动DMHS管理服务:
cd /home/dmdba/dmhs/bin
./DmhsService start
ps -ef |grep dmhs
服务启动成功,检查日志未发生报错
初次启动目的端DMHS服务时,同步执行服务并未开启,需要使用DMHS控制台工具连接DMHS管理服务,手动输入start exec命令开启。具体示例如下:
(2)源端进行初始字典装载
源端启动hs服务,并进入管理工具:
cd /home/dmdba/dmhs/bin
./DmhsService start
进行初始数据装载时,首先也需要启动目的端执行服务。在启动目的端执行服务后,启动源端DMHS管理服务,并通过DMHS控制台工具连接管理服务,使用COPY命令及相关数据装载选项进行数据装载操作。
目的端需要使用DMHS创建初始表
当目标端已建立有同步表时,初始装载不需要进行表的创建,不需要使用CREATE装载关键字。示例如下:
DMHS >COPY 0 "SCH.NAME='XXX1'" INSERT|REG|THREAD|8
如果有多个同步模式可以使用如下命令:
DMHS >COPY 0 "SCH.NAME IN ('XXX1','XXX2','XXX3')" INSERT|THREAD|8
将XXX替换为实际同步模式名。
查看源端数据表和目标端已同步数据:
源端插入数据:
目标端查看是否同步:
结论:单向同步搭建完成。
更多相关资料请参考达梦云适配技术社区
达梦数据库 - 新一代大型通用关系型数据库 | 达梦在线服务平台