环境介绍:
注:本次仅通过DMHS软件测试DM-DM数据同步,达梦数据库需要先部署完成。
systemctl stop firewalld
systemctl disable firewalld
临时关闭selinux:
setenforce 0
永久关闭selinux(重启生效):
sed -i"s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
获取当前selinux状态
[root@lbl ~]# getenforce
Disabled
[root@lbl ~]# sestatus
SELinux status: disabled
1. 使用系统用户dmdba执行安装程序,安装过程如下所示:
$ chmod 775 dmhs_V4.1.48_pack4_dm8_rev104804_rh6_64_veri_20211228.bin
$./dmhs_V4.1.48_pack4_dm8_rev104804_rh6_64_veri_20211228.bin
注:139HS软件安装同138,安装过程略
SQL> ALTER DATABASE MOUNT;
SQL> ALTER DATABASE ADD ARCHIVELOG 'DEST = /dm8/dmarch,TYPE = local, FILE_SIZE = 1024, SPACE_LIMIT = 51200';
SQL> ALTER DATABASE ARCHIVELOG;
SQL> SP_SET_PARA_VALUE(1,'RLOG_APPEND_LOGIC',1);
SQL> select para_value from V$DM_INI WHEREPARA_NAME='RLOG_APPEND_LOGIC';
注意:RLOG_APPEND_LOGIC为“1”,表示逻辑追加日志启用;为“0”表示未启用。
3. 执行DDL同步所需脚本
SQL> start /opt/dmhs/scripts/ddl_sql_dm8.sql
注意:建议在管理工具中执行sql脚本,避免一些乱码问题。脚本会在SYSDBA模式下创建9张表4个库级触发器。
4. 配置环境变量
su - dmdba
vim ~/.bash_profile
export DM_HOME=/opt/dmdbms
export DMHS_HOME=/opt/dmhs
export PATH=$PATH:$DM_HOME/bin
exportLD_LIBRARY_PATH=$LD_LIBRARY_PATH:$DMHS_HOME/bin:$DM_HOME/bin
source ~/.bash_profile
5. 依赖库查询
su - dmdba
cp dmoci/libdmoci.so /dm8/dmhs/bin
cd /opt/dmhs/bin
ldd libcpt_dm8.so
ldd libdmhs_exec.so
lblbak端:
操作方式与lbl端相同
配置lbl端dmhs.hs
注意:配置文件中siteid为唯一值,无论lbl端还是lblbak端,不同配置文件不能相同,请参考配置附件文件lblhs.hs文件内容
[dmdba@lbl ~]$ cd /opt/dmhs/bin
[dmdba@lbl bin]$ vim dmhs.hs
请参考第十章附件配置文件内容
配置lblbak端dmhs.hs
注意:配置文件中siteid为唯一值,不能与lbl端相同
[dmdba@lblbak ~]$ cd /opt/dmhs/bin
[dmdba@lblbak bin]$ vim dmhs.hs
请参考第十章附件配置文件内容
lbl端:
[root@lbl ~]# cd /opt/dmhs/scripts/root/
[root@lbl ~]# ./dmhs_service_installer.sh-t dmhs_server -a true -p DMSERVER -x /dm8/dmhs/bin/dmhs.hs
lblbak端:
[root@lblbak ~]# cd /opt/dmhs/scripts/root/
[root@lblbak ~]# ./dmhs_service_installer.sh -t dmhs_server -a true -pDMSERVER -x /dm8/dmhs/bin/dmhs.hs
lbl端:
[dmdba@lbl ~]$ cd /dm8/dmhs/bin
[dmdba@lbl ~]$ ./DmhsServiceDMSERVER start
lblbak端:
[dmdba@lblbak ~]$ cd /dm8/dmhs/bin
[dmdba@lblbak ~]$ ./DmhsServiceDMSERVER start
--生成禁用外键约束的语句
SELECT 'ALTER TABLE"'||OWNER||'"."'||TABLE_NAME||'" DISABLE CONSTRAINT"'||CONSTRAINT_NAME||'";',CONSTRAINT_TYPE,DBA_CONSTRAINTS.STATUS FROMDBA_CONSTRAINTS WHERE OWNER='WATERUSER' AND CONSTRAINT_TYPE='R';
--生成禁用其他约束的语句
SELECT 'ALTER TABLE"'||OWNER||'"."'||TABLE_NAME||'" DISABLE CONSTRAINT "'||CONSTRAINT_NAME||'";',CONSTRAINT_TYPE,DBA_CONSTRAINTS.STATUSFROM DBA_CONSTRAINTS WHERE OWNER='WATERUSER' AND CONSTRAINT_TYPE IN('C','P','U');
2. 禁用触发器
先在lblbak端中使用以下SQL语句批量生成禁用触发器的SQL语句,然后把生成的禁用触发器的语句在DM31端数据库中执行
--生成禁用触发器的语句
SELECT 'ALTER TRIGGER "'||OWNER||'"."'||TRIGGER_NAME||'"DISABLE;' FROM DBA_TRIGGERS WHERE OWNER ='WATERUSER' AND STATUS='Y';
[dmdba@lblbak ~]$ cd /dm8/dmhs/bin
[dmdba@lblbak bin]$ ./dmhs_console
DMHS> connect 192.168.128.139:5345
DMHS> start exec
[dmdba@lbl ~]$ cd /dm8/dmhs/bin
[dmdba@lbl bin]$ ./dmhs_console
DMHS> connect 192.168.128.138:5345
DMHS> clear exec lsn
DMHS> COPY 0 "SCH.NAME='WATERUSER'"CREATE|INSERT|DICT|THREAD|8|REG
[dmdba@lbl ~]$ cd /opt/dmhs/bin
[dmdba@lbl bin]$ ./dmhs_console
DMHS> connect 192.168.128.138:5345
DMHS> start cpt
lbl源端:
create table test(a1 int);
insert into hstest values(1);
commit;
lblbak目的端:
select * from SYSDBA.test;
DMHS同步过程中目的端EXEC模块在事务数据入库时,由于采用的是ODBC标准的接口操作数据库,如果目标表上存在触发器,那么入库操作同样会触发这些触发器,如果触发器中会涉及到数据或是其它表的修改,则会造成源端和目标端数据的不一致。在搭建启用DMHS同步时,应该事先禁用目标库中需要同步模式表上的触发器,针对表上外键约束也是如此。
lbl源端dmhs.hs配置文件:lblhs.hs.txt
lblbak目的端dmhs.hs配置文件:lblbakhs.hs.txt
文章
阅读量
获赞