DMHS同步原理介绍以及DM8同步到DM8

news2024/10/5 17:26:16

一、DMHS原理介绍

1.DMHS介绍

达梦数据实时同步软件 DMHS 是达梦公司推出的新一代支持异构环境的高性能、高可靠和高可扩展的数据库实时同步系统。该产品基于成熟的关系数据模型和标准接口,跨越多种软硬件平台实现秒级数据实时同步。该产品可广泛应用于应急系统、容灾备份、负载均衡、数据移植、联机维护、订阅分发和多业务中心等业务领域。

达梦数据实时同步软件 DMHS,通过秒级数据实时同步可以有效避免传统备份系统导致的无法完全满足企业对于信息系统不中断服务的问题;通过变化日志捕捉可以有效降低传统 ETL 工具因创建触发器、影子表等对业务系统带来的性能影响;通过实时的数据同步,构建“双活”的主备系统,解决传统基于数据库自身的主备系统中备机只读而无法对外提供写服务的问题。

 

DMHS 的组成原理框图中包含源端数据库、目标端数据库、源端 DMHS 服务以及目标端 DMHS 服务,其中源端 DMHS 服务主要由装载模块(LOAD)、日志捕获分析模块(CPT)以及管理服务模块(MGR)组成;目标端 DMHS 服务则由执行模块(EXEC)和管理服务模块(MGR)组成。

在源端,DMHS 的 CPT 模块采用优化的日志扫描算法实现增量日志数据的快速捕获分析,并将分析完成后的日志数据转换为内部的消息格式,然后通过网络将消息发送至目标端DMHS 服务;

在目标端, DMHS 服务接收到源端的日志消息后,对消息进行处理,通过多线程并行执行的方式将同步数据应用至目标端数据库,实现数据实时同步。

2.DMHS 系统组成

DMHS 同步服务主要包括四个模块,分别是捕获模块(CPT)、装载模块(LOAD)、传输 模块(NET)以及执行模块(EXEC),这些模块统一由管理模块(MGR)进行管理执行。

 

管理模块(MGR)是DMHS 同步服务的启动框架,根据配置文件加载并启动相关的功能模块:

捕获模块(CPT 

对源数据库增量日志进行捕获并完成解析,结合数据字典信息提取其中数据的变化如插入(INSERT)、删除(DELETE)、修改(UPDATE)和对象操作(DDL),然后将这些操作及数据转换为内部的消息格式投递给网络(NET)模块。

装载模块(LOAD)

DMHS 在进行增量数据同步之前,需完成同步表的字典装载和表数据的初始装载。表字典装载将所有同步表的数据字典信息从源库中抽取出来,保存为本地的数据字典文件,用于数据同步过程中提供准确表定义信息。数据初始装载用于将源端数据库的初始数据同步至目标数据库,使得源库和目标库的初始数据保持一致。

传输模块(NET)

1) NET 消息发送子模块

经过CPT捕获到的日志操作,在这里进行分发,分发前可以对操作进行过滤,或者对表进行过滤和映射,还可以对消息中的列进行映射(改名、剔除和函数计算)。经过处理的消息通过网络(TCP/IP)发送给下一级,或者保存到本地文件。

2) NET 消息接收子模块

经上一级 NET 消息发送子模块通过网络传输的消息,在这里由 NET 消息接收子模块通过网络(TCP/IP)接收并发送给 EXEC 模块。而上一级 NET 消息发送子模块保存消息的本地文件目录,既可以是一般的本地文件目录,也可以是提供 FTP 服务的 FTP 文件目录。当上一级 NET 消息发送子模块将消息保存在一般本地文件目录时,NET 消息接收子模块读取本地文件并发送给 EXEC 模块;当上一级 NET 消息发送子模块将消息保存在 FTP 文件目录时,NET 消息接收子模块可通过 FTP 服务器下载数据,并发送给 EXEC 模块。

执行模块(EXEC

DMHS 目标端通过 NET 模块接收源端发送过来的日志消息,然后把这些消息按事务分类,如果某个事务上收到了提交消息,则通过 SQL 逆向生成的技术构造还原相应的事务 SQL语句,使用 ODBC 驱动接口对这些数据进行入库执行,完成数据同步;如果某个事务在源端回滚,则直接丢弃不执行。

二、安装前准备环境

1.DMHS安装环境

源端环境:达梦8  ip:192.168.1.104  主机名:centos-04 操作系统版本:ky10

目的端环境:达梦8 ip:192.168.1.105    主机名:centos-05 操作系统版本:ky10

2.安装环境检查

1)检查系统信息

源端192.168.1.104:

[root@centos-04 ~]# lsb_release -a

LSB Version:    :core-5.0-amd64:core-5.0-noarch

Distributor ID: KylinAdvancedServer

Description:    Kylin Linux Advanced Server release V10 (Sword)

Release:        V10

Codename:       Sword

[root@centos-04 ~]# getconf LONG_BIT

64

[root@centos-04 ~]# lsb_release -a

LSB Version:    :core-5.0-amd64:core-5.0-noarch

Distributor ID: KylinAdvancedServer

Description:    Kylin Linux Advanced Server release V10 (Sword)

Release:        V10

Codename:       Sword

[root@centos-04 ~]# cat /etc/issue



Authorized users only. All activities may be monitored and reported.

[root@centos-04 ~]# uname -a

Linux centos-04 4.19.90-24.4.v2101.ky10.x86_64 #1 SMP Mon May 24 12:14:55 CST 2021 x86_64 x86_64 x86_64 GNU/Linux



目的端192.168.1.105:

[root@centos-05 ~]# getconf LONG_BIT

64

[root@centos-05 ~]# lsb_release -a

LSB Version:    :core-5.0-amd64:core-5.0-noarch

Distributor ID: KylinAdvancedServer

Description:    Kylin Linux Advanced Server release V10 (Sword)

Release:        V10

Codename:       Sword

[root@centos-05 ~]# cat /etc/issue



Authorized users only. All activities may be monitored and reported.

[root@centos-05 ~]# uname -a

Linux centos-05 4.19.90-24.4.v2101.ky10.x86_64 #1 SMP Mon May 24 12:14:55 CST 2021 x86_64 x86_64 x86_64 GNU/Linux

2)检查系统内存与存储空间

源端192.168.1.104:

[root@centos-04 ~]# free -m

              total        used        free      shared  buff/cache   available

Mem:           2915         485        1168          10        1261        2229

Swap:          4095           0        4095

[root@centos-04 ~]# df -h

Filesystem             Size  Used Avail Use% Mounted on

devtmpfs               1.4G     0  1.4G   0% /dev

tmpfs                  1.5G     0  1.5G   0% /dev/shm

tmpfs                  1.5G  9.0M  1.5G   1% /run

tmpfs                  1.5G     0  1.5G   0% /sys/fs/cgroup

/dev/mapper/klas-root   46G   12G   35G  25% /

tmpfs                  1.5G  4.0K  1.5G   1% /tmp

/dev/sda1              495M  200M  295M  41% /boot

tmpfs                  292M     0  292M   0% /run/user/993

tmpfs                  292M     0  292M   0% /run/user/0

/dev/sr0               4.1G  4.1G     0 100% /media/Kylin10-repo-iso

目的端192.168.1.105:

[root@centos-05 ~]# free -m

              total        used        free      shared  buff/cache   available

Mem:           2915         814         859          10        1241        1857

Swap:          4095           0        4095

[root@centos-05 ~]# df -h

文件系统               容量  已用  可用 已用% 挂载点

devtmpfs               1.4G     0  1.4G    0% /dev

tmpfs                  1.5G     0  1.5G    0% /dev/shm

tmpfs                  1.5G  9.0M  1.5G    1% /run

tmpfs                  1.5G     0  1.5G    0% /sys/fs/cgroup

/dev/mapper/klas-root   46G   15G   32G   32% /

tmpfs                  1.5G  4.0K  1.5G    1% /tmp

/dev/sda1              495M  200M  295M   41% /boot

tmpfs                  292M     0  292M    0% /run/user/993

tmpfs                  292M     0  292M    0% /run/user/0

/dev/sr0               4.1G  4.1G     0  100% /media/kylin10-repo-iso

注意:DMHS 安装程序在安装时将产生临时文件,临时文件需要 1GB 的存储空间,临时文件目录默认为/tmp。如果/tmp 目录不能保证 1GB 的存储空间,用户可以扩展/tmp 目录存储空间。

3)检查系统环境变量 LD_LIBRARY_PATH 中是否设置了 DM8 的安装路径。

LINUX 平台:echo $LD_LIBRARY_PATH

源端192.168.1.104:

[dmdba@centos-04 ~]$ echo $LD_LIBRARY_PATH

:/dm/dmdbms/dm8/bin

目的端192.168.1.105:

[dmdba@centos-05 ~]$ echo $LD_LIBRARY_PATH

:/dm8/dmdbms/bin

三、DMHS部署安装

源端和目的端创建DMHS安装目录:
mkdir -p /dm/dmhs
chown -R dmdba.dinstall /dm/dmhs/
将安装程序目录授权给dmdba用户和dinstall组
chown -R dmdba.dinstall /soft
chmod 755 -R /soft
源端192.168.1.104::
[dmdba@centos-04  soft]$ ./dmhs_V4.3.08_dm8_rev127399_rh6_64_veri_20230407_sp8.bin -i
Extract install files..........
1.英文(English)
2.简体中文(简体中文)
请选择安装语言[2.简体中文(简体中文)]:
/tmp/DMHSInstall/install.log
1.免费试用达梦数据实时同步
2.使用已申请的Key文件
验证许可证文件[1.免费试用达梦数据实时同步]:
1.精简版
2.完整版(web客户端)
3.自定义
安装类型[1.精简版]:2
1.实时同步软件服务器
2.远程部署工具
3.实时同步软件客户端
4.内置数据库
5.实时同步软件配置助手
6.手册
所需磁盘空间:866 MB
安装目录: [/home/dmdba/dmhs]/dm/dmhs
该路径不为空,是否继续安装?[Y or N]Y
安装路径可能存在覆盖安装
1.统一部署
2.现在初始化
是否初始化达梦数据实时同步系统[1.统一部署]:
正在安装
default start ...    default finished.
server start ...    server finished.
hs_agent start ...    hs_agent finished.
webmanager start ...    webmanager finished.
db start ...    db finished.
hsca start ...    hsca finished.
doc start ...    doc finished.
doc start ...    doc finished.
postinstall start ...    postinstall finished.
正在创建快捷方式
安装成功
远程部署工具配置
远程部署工具名称[HsAgent]:
主机Ip(外网)[192.168.1.105](192.168.1.105):
远程部署工具管理端口[5456](1000-65535):
内置数据库轮询间隔[3](1-60):
内置数据库IP[192.168.1.105]:
内置数据库端口[15236]:
内置数据库用户名[SYSDBA]:
内置数据库密码[SYSDBA]:dameng123
服务脚本环境变量设置
依赖库路径
提示:此配置项供用户配置源或目的数据库依赖库路径和odbc依赖库路径, 多个路径以":"隔开(例:/opt/dmdbms/bin:/usr/local/lib),此配置项会添加到服务脚本的NEED_LIB_PATH的变量值中。
请配置依赖库路径:
内置数据库服务
1.自动
2.手动
启动方式:[2.手动]
正在创建内置数据库服务
初始化内置数据库
远程控制服务
1.自动
2.手动
启动方式:[2.手动]
正在创建远程控制服务
web服务
1.自动
2.手动
启动方式:[2.手动]
正在创建web服务
达梦数据实时同步V4.0安装完成
更多安装信息,请查看安装日志文件:
/dm/dmhs/log/install.log
目的端192.168.1.105:
[dmdba@centos-04  soft]$ ./dmhs_V4.3.08_dm8_rev127399_rh6_64_veri_20230407_sp8.bin -i
Extract install files..........
1.英文(English)
2.简体中文(简体中文)
请选择安装语言[2.简体中文(简体中文)]:
/tmp/DMHSInstall/install.log
1.免费试用达梦数据实时同步
2.使用已申请的Key文件
验证许可证文件[1.免费试用达梦数据实时同步]:
1.精简版
2.完整版(web客户端)
3.自定义
安装类型[1.精简版]:2
1.实时同步软件服务器
2.远程部署工具
3.实时同步软件客户端
4.内置数据库
5.实时同步软件配置助手
6.手册
所需磁盘空间:866 MB
安装目录: [/home/dmdba/dmhs]/dm/dmhs
该路径不为空,是否继续安装?[Y or N]Y
安装路径可能存在覆盖安装
1.统一部署
2.现在初始化
是否初始化达梦数据实时同步系统[1.统一部署]:
正在安装
default start ...    default finished.
server start ...    server finished.
hs_agent start ...    hs_agent finished.
webmanager start ...    webmanager finished.
db start ...    db finished.
hsca start ...    hsca finished.
doc start ...    doc finished.
doc start ...    doc finished.
postinstall start ...    postinstall finished.
正在创建快捷方式
安装成功
远程部署工具配置
远程部署工具名称[HsAgent]:
主机Ip(外网)[192.168.1.105](192.168.1.105):
远程部署工具管理端口[5456](1000-65535):
内置数据库轮询间隔[3](1-60):
内置数据库IP[192.168.1.105]:
内置数据库端口[15236]:
内置数据库用户名[SYSDBA]:
内置数据库密码[SYSDBA]:dameng123
服务脚本环境变量设置
依赖库路径
提示:此配置项供用户配置源或目的数据库依赖库路径和odbc依赖库路径, 多个路径以":"隔开(例:/opt/dmdbms/bin:/usr/local/lib),此配置项会添加到服务脚本的NEED_LIB_PATH的变量值中。
请配置依赖库路径:
内置数据库服务
1.自动
2.手动
启动方式:[2.手动]
正在创建内置数据库服务
初始化内置数据库
远程控制服务
1.自动
2.手动
启动方式:[2.手动]
正在创建远程控制服务
web服务
1.自动
2.手动
启动方式:[2.手动]
正在创建web服务
达梦数据实时同步V4.0安装完成
更多安装信息,请查看安装日志文件:
/dm/dmhs/log/install.log

四、DMHS目的执行端配置

1.创建同步的业务用户
create user "TEST" identified by "Dameng123" default tablespace "MAIN";
2.配置执行端 dmhs.hs
cd /dm/dmhs/bin
示例目的端的机器 IP 为:192.168.1.105,配置文件 vi dmhs.hs,内容如下:
<?xml version="1.0" encoding="GB2312"?>
<dmhs>
<base>
<lang>en</lang>
<mgr_port>5345</mgr_port>
<ckpt_interval>60</ckpt_interval>
<siteid>2</siteid>
<version>2.0</version>
</base>
<exec>
<recv>
<data_port>5346</data_port>
</recv>
<db_type>dm8</db_type>
<db_server>127.0.0.1</db_server>
<db_user>SYSDBA</db_user>
<db_pwd>dameng123</db_pwd>
<db_port>5236</db_port>
<db_name></db_name>
<exec_thr>4</exec_thr>
<exec_sql>1024</exec_sql>
<exec_trx> 5000 </exec_trx>
<exec_rows>1000</exec_rows>
</exec>
</dmhs>
根据具体的 DM8 数据库账号配置用户名和密码以及端口。
3.开启执行 DMHS 服务
作为系统服务启动,在 dmhs_serverd 配置完成的情况下,可以使用如下命令启动:
cd /dm/dmhs/bin
[dmdba@centos-05 bin]$ ./dmhs_server dmhs.hs start
MGR[INFO]: DMHS start up, current version: V4.3.08-Build(2023.03.31-127399trunc)_64_2303_sp8 (The beta)(Enterprise Edition)
MGR[WARN]: License will expire on 2023-07-01
MGR[INFO]: load config file successful,site no:2, manager port :5345, poll interval:3, max mem size:64(GB)
MGR[INFO]: manager listening  port:5345
DMHS 的搭建过程中,目的端都会是优先启动并执行 start exec。
start exec
MGR[INFO]: loading the execute module...
MGR[ERROR]: lib libdmhs_exec.so can not found,error code 2, libdmoci.so: cannot open shared object file: No such file or directory
MGR[ERROR]: log exec start fail
[dmdba@centos-05 bin]$ ldd libdmhs_exec.so
linux-vdso.so.1 (0x00007ffc0edda000)
libc.so.6 => /usr/lib64/libc.so.6 (0x00007f485df9f000)
libm.so.6 => /usr/lib64/libm.so.6 (0x00007f485de1c000)
librt.so.1 => /usr/lib64/librt.so.1 (0x00007f485de11000)
libpthread.so.0 => /usr/lib64/libpthread.so.0 (0x00007f485ddf0000)
libdl.so.2 => /usr/lib64/libdl.so.2 (0x00007f485ddeb000)
libdmhs_pub.so => ./libdmhs_pub.so (0x00007f485dae0000)
libdmhs_ucvt.so => ./libdmhs_ucvt.so (0x00007f485d586000)
libdmhs_dm_obj.so => ./libdmhs_dm_obj.so (0x00007f485d375000)
libdmhs_cvt.so => ./libdmhs_cvt.so (0x00007f485d107000)
libdodbc.so => /dm8/dmdbms/bin/libdodbc.so (0x00007f485d0d6000)
/lib64/ld-linux-x86-64.so.2 (0x00007f485e4e7000)
libdmhs_exp.so => ./libdmhs_exp.so (0x00007f485cd47000)
libdmhs_xml.so => ./libdmhs_xml.so (0x00007f485cb38000)
libdmoci.so => not found   --找不到libdmoci.so文件
libdmdpi.so => /dm8/dmdbms/bin/libdmdpi.so (0x00007f485c027000)
libdmfldr.so => /dm8/dmdbms/bin/libdmfldr.so (0x00007f485bf30000)
libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00007f485bd7d000)
libgcc_s.so.1 => /usr/lib64/libgcc_s.so.1 (0x00007f485bd64000)
[root@centos-05 ~]# find / -name libdmoci.so;
/dm/dmdbms/dm8/bin/libdmoci.so
报错段错误 (核心已转储)
将数据库安装目录下向原厂申请的libdmoci.so文件拷贝(其他目录的测试无用)到DMHS安装目录bin下面,或配置。
[dmdba@centos-05 bin]$ cp /dm/dmdbms/dm8/bin/libdmoci.so ./
[dmdba@centos-05 bin]$ ldd libdmhs_exec.so|grep oci
libdmoci.so =>/dm/dmhs/bin/libdmoci.so (0x00007f7af5917000)

五、DMHS源端配置

1.开启归档和逻辑日志
1) 设置归档标记和逻辑日志标记。vi /dm/dmdata/cbdb/dm.ini,设置如下值:
ARCH_INI = 1
RLOG_APPEND_LOGIC = 1
注意:dm.ini 配置参数中“FAST_COMMIT”必须为 0,否则会导致逻辑日志不全而影响同步。
SQL> select * from  v$parameter where NAME='FAST_COMMIT';
行号     ID          NAME        TYPE VALUE SYS_VALUE FILE_VALUE DESCRIPTION                                                                   
---------- ----------- ----------- ---- ----- --------- ---------- ------------------------------------------------------------------------------
1          289         FAST_COMMIT SYS  0     0         0          0 or 1 means normal commit; other may speed up commit, but may not assure ACID
2) 添加归档配置文件。
vi  /dm/dmdata/cbdb/dmarch.ini
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dm/dmarch #归档目录
ARCH_FILE_SIZE = 256 #归档文件大小,单位 MB
ARCH_SPACE_LIMIT = 0 #空间大小限制,0 表示不限制
3) 重启DM8 数据库,使配置参数生效。
DmServicecbdb restart
4) 验证配置的正确性
a) 检查归档配置的正确性
SQL> SELECT ARCH_DEST, ARCH_FILE_SIZE FROM SYS.V$DM_ARCH_INI WHERE ARCH_TYPE='LOCAL' AND ARCH_IS_VALID='Y';
行号     ARCH_DEST  ARCH_FILE_SIZE
---------- ---------- --------------
1          /dm/dmarch 256
如果存在以上的查询表示配置归档是正确的。
b) 检查逻辑日志配置的正确性
SQL> SELECT PARA_VALUE FROM SYS.V$DM_INI WHERE PARA_NAME = 'RLOG_APPEND_LOGIC';
行号     PARA_VALUE
---------- ----------
1          1
c) 检查在线日志
SQL> SELECT PATH FROM SYS.V$RLOGFILE;
行号     PATH                      
---------- --------------------------
1          /dm/dmdata/cbdb/cbdb01.log
2          /dm/dmdata/cbdb/cbdb02.log
d) 检查 FAST_COMMIT 参数是否为 0
SQL> select para_value from v$dm_ini where para_name = 'FAST_COMMIT';
行号     PARA_VALUE
---------- ----------
1          0
2.配置 DDL
1)方式一:辅助表方式(推荐)
如果要求 DDL 同步,那么需要创建 DDL 触发器和辅助表。创建的脚本参见 DMHS 安装目录下 scripts 子目录中“ddl_sql_dm8.sql”。注意创建时需要使用 SYSDBA 用户。
[dmdba@centos-04 scripts]$ pwd
/dm/dmhs/scripts
[dmdba@centos-04 scripts]$ ls -rlt ddl_sql_dm8.sql
-rwxr-xr-x 1 dmdba dinstall 35043  6月 12 10:58 ddl_sql_dm8.sql
在源端数据库中执行ddl_sql_dm8.sql
start /dm/dmhs/scripts/ddl_sql_dm8.sql
检查创建的触发器和辅助表是否有效,检查辅助表的语句:
SQL> select owner, table_name from dba_tables where owner = 'SYSDBA' and table_name like 'DMHS%' and status = 'VALID';
行号     OWNER  TABLE_NAME      
---------- ------ ----------------
1          SYSDBA DMHS_DDL_COL
2          SYSDBA DMHS_DDL_SQL
3          SYSDBA DMHS_DDL_CONS
4          SYSDBA DMHS_DDL_IDX
5          SYSDBA DMHS_DDL_RENAME
6          SYSDBA DMHS_DDL_SEQ
7          SYSDBA DMHS_DDL_PART
8          SYSDBA DMHS_DDL_COMMENT
9          SYSDBA DMHS_DDL_LOG
9 rows got
检查触发器的语句:
SQL> select owner, trigger_name from dba_triggers where owner = 'SYSDBA' and trigger_name like 'DMHS%' and  status = 'Y';
行号     OWNER  TRIGGER_NAME           
---------- ------ -----------------------
1          SYSDBA DMHS_DDL_TRIGGER_AFTER
2          SYSDBA DMHS_DDL_TRIGGER_BEFORE
3          SYSDBA DMHS_DDL_TRIGGER_GRANT
4          SYSDBA DMHS_DDL_TRIGGER_REVOKE
3.配置 dmhs.hs
dmhs.hs 是 DMHS 默认的配置文件名,如果需要 DDL 同步,那么基本的配置示例如下:
<?xml version="1.0" encoding="GB2312"?>
<dmhs>
<base>
<lang>en</lang>
<mgr_port>5345</mgr_port>
<ckpt_interval>60</ckpt_interval>
<siteid>1</siteid>
<version>2.0</version>
</base>
<cpt>
<db_type>dm8</db_type>
<db_server>127.0.0.1</db_server>
<db_user>SYSDBA</db_user>
<db_pwd>dameng123</db_pwd>
<db_port>5236</db_port>
<db_ssl_path></db_ssl_path>
<db_ssl_pwd></db_ssl_pwd>
<parse_thr>1</parse_thr>
<ddl_mask>op:obj</ddl_mask> <!--DDL 配置项-->
<arch><!--归档清理配置项-->
<clear_interval>600</clear_interval>
<clear_flag>0</clear_flag>
</arch>
<send><!-- 发送模块配置 -->
<ip>192.168.1.105</ip> <!—执行端 IP-->
<mgr_port>5345</mgr_port><!—执行端 mgr_port -->
<data_port>5346</data_port><!—执行端 data_port -->
<trigger>1</trigger><!-- 是否忽略触发器,默认为 0,限定值 0,1 -->
<constraint>1</constraint><!-- 是否忽略约束,默认为 0,限定值 0,1 -->
<identity>1</identity>
<net_turns>0</net_turns>
<filter><!--过滤配置项-->
<enable><!-- 白名单,所有允许同步的表 -->
<item>TEST.*</item>
</enable>
</filter>
<map><!--映射配置项-->
<item>TEST.*==TEST.*</item>
</map>
</send>
</cpt>
</dmhs>
现对以上的基本配置作如下几点说明:
1) siteid 全局唯一,即 DMHS 同步系统涉及的所有节点的 siteid 必须全局唯一,不允许有重复值。
2) DDL 配 置 项 , 如 果 不 需 要 DDL 同 步 , 那 么 就 配 置 为 空 , 即<ddl_mask></ddl_mask>,相应地 DMHS DDL 触发器和辅助表也不需要创建。
3) 归档清理配置项,clear_flag 为 1 表示清除,即 DMHS 将同步完成的归档文件删除;为 2,表示将同步完成的归档移到 bak_dir 目录下;为 0,表示不作任何操作。
4) 过滤配置项,本示例配置了白名单,即 enable,也可以配置黑名单,详见 DMHS
用户手册。其过滤的规则是:先判断白名单,然后判断黑名单。如果存在重叠的情况,那么也是会被过滤的。
5) 映射配置项,表示存在不同模式之间的表同步,例如本示例中源端的 SYSDBA 模式下的表映射成目的端的 DMHS 模式下同名的表。
4.初始装载
1)开启源端 DMHS 服务:
[dmdba@centos-04 bin]$ dmhs_server dmhs.hs start
MGR[INFO]: DMHS start up, current version: V4.3.08-Build(2023.03.31-127399trunc)_64_2303_sp8 (The beta)(Enterprise Edition)
MGR[WARN]: License will expire on 2023-07-01
MGR[INFO]: load config file successful,site no:1, manager port :5345, poll interval:3, max mem size:64(GB)
MGR[INFO]: manager listening  port:5345
clear exec lsn#为了初始化日志的起始位置。
PUB[INFO]: set enable_directio = 0
MGR[INFO]: loading DM8 log analysis...
CPT[INFO]: DM8_V4.3.08_64
CPT[INFO]: send_lst is 3
CPT[INFO]: DM8 IS SUPPORT UNICODE: FALSE
CPT[INFO]: DM8 parameter LENGTH_IN_CHAR: 0
CPT[INFO]: DM8 RLOG_APPEND_SYSTAB_LOGIC = 0, then using DMHS auxiliary table and triggers for DDL sync.
CPT[INFO]: DM8 log format is RLOG_PKG, arch: /dm/dmarch/ARCHIVE_LOCAL1_0x7A353119[0]_2023-06-19_21-04-56.log, db_magic: 2050306329 - 2050306329
CPT[INFO]: DM8 archive directory: /dm/dmarch archive file size:256 M
CPT[INFO]: dm8 log version flag is : 2, old: 0
CPT[INFO]: [0]Searched archived file number: 1, START_ARCH_LSN: 0, START_FILE: null, VER: 1
CPT[INFO]: DM8 CPT is created.
CPT[INFO]: DM8 CPT is free.
SND[INFO]: Loading filter info:
SND[INFO]:   ENABLE: TEST.*
SND[INFO]: Loading col map:
SND[INFO]: Analysis module 192.168.1.105:5346 's log sending thread created successfully
SND[INFO]: Analysis module  1 are connecting to  site 192.168.1.105:5346...
SND[INFO]: the analysis module 1 are resetting  192.168.1.105:5346 site 's execute module...
PUB[WARN]: user env lang:PG_UTF8 is conflict with char_code:PG_GB18030
PUB[WARN]: use char_code:PG_GB18030
SND[INFO]: Analysis module  1 are sending the map rules...
SND[INFO]:      TEST.*==TEST.*...
SND[INFO]: The analysis module 1 are getting the min LSN from site 192.168.1.105:5346...
SND[INFO]: analysis module 1 get LSN:0 LFS:0 successfully
SND[INFO]: Analysis module are checking the execute module complete all transactions...
SND[INFO]: 192.168.1.105:5346 to site 1 's sending thread has quited
MGR[INFO]: setting destion 192.168.1.105:5345 net lock mode:DISABLE
MGR[INFO]: send commnd to site 192.168.1.105:5345 success
command exec finish
2)初始装载:
./dmhs_console
DMHS> copy 0 "sch.name='TEST'" DICT|LSN|CREATE|INSERT|INDEX
CSL[WARN]: Detect the LSN mask, the mask will be ignored in the log is less than the current LSN all operations, please confirm whether to continue?(Y/N)
Y
copy mask is : |CREATE|INSERT|INDEX|TABLE|DICT|LSN|PARTITION|OBJID|REP
execute finish, please look up log file of exec module to check data load result
5.开启同步
初始装载完成后,则可以开启同步:
源端 DMHS 开启CPT模块:
dmhs_console
DMHS> start cpt
execute success
6.配置dmhs服务方式启动
[dmdba@centos-05 ~]$ cd /dm/dmhs/bin
[dmdba@centos-05 bin]$ cp TemplateDmhsService DmhsService
修改DMHS_HOME、PROG_DIR、CONF_PATH路径
sed -i 's/\/opt\/dmhs/\/dm\/dmhs/g' DmhsService
[dmdba@centos-05 bin]$ grep "/dm/dmhs" DmhsService
DMHS_HOME=/dm/dmhs
PROG_DIR=/dm/dmhs/bin
CONF_PATH=/dm/dmhs/bin/dmhs.hs
[dmdba@centos-05 bin]$ DmhsService start
(ORACLE NLS_LANG) is not set in this script, starting failed!!!
启动报错需要设置HS_NLS_LANG
[dmdba@centos-05 bin]$ grep "HS_NLS_LANG=" DmhsService
HS_NLS_LANG="AMERICAN_AMERICA.ZHS16GBK"
启动dmhs服务:
[dmdba@centos-05 bin]$ DmhsService start
Starting DmhsService: [ OK ]
[dmdba@centos-05 bin]$ ps -ef|grep dmhs
dmdba     5152     1  0 11:23 pts/0    00:00:00 /dm/dmhs/bin/dmhs_server /dm/dmhs/bin/dmhs.hs -noconsole
dmdba     5225  4561  0 11:23 pts/0    00:00:00 grep --color=auto dmhs
[dmdba@centos-05 bin]$ 

六、验证数据

源端:
DMHS> exit
[dmdba@centos-04 ~]$ disql sysdba/dameng123
服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间: 8.385(毫秒)
disql V8
SQL> insert into test.TAB_CB values(101,'test101',SYSDATE);commit;
DMSQL 过程已成功完成
已用时间: 7.729(毫秒). 执行号:398.
SQL> select COUNT(*) from test.TAB_CB;
行号     COUNT(*)            
---------- --------------------
1          101
目的端:
[dmdba@centos-05 bin]$ disql TEST/Dameng123
服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间: 6.057(毫秒)
disql V8
SQL> select COUNT(*) from test.TAB_CB;
行号     COUNT(*)            
---------- --------------------
1          101

达梦在线服务平台:https://eco.dameng.com

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/649446.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

什么是产品经理 | 文末赠书

目录 一. 产品经理是什么&#xff1f;二. 产品经理需要具备的技能三. 产品经理的职责四. 产品经理在软件开发过程中如何平衡不同利益方的需求&#xff1f;五. 入门建议六. 发展前景七. 总结&#x1f981;文末福利图书介绍作者简介 一. 产品经理是什么&#xff1f; 产品经理是指…

使用阿里巴巴开源神器Arthas进行性能分析

目录 前言&#xff1a; Arthas介绍 启动 分析命令 Profiler工具 前言&#xff1a; Arthas是一款由阿里巴巴开源的Java诊断工具&#xff0c;它可以在生产环境中帮助开发人员快速地定位问题&#xff0c;并进行高效的性能分析。通过在命令行中输入简单的命令&#xff0c;开发人员…

Win10开机后自动显示右键菜单怎么办?

Win10开机后自动显示右键菜单怎么办&#xff1f;用户打开Win10电脑后发现电脑自动显示右键菜单&#xff0c;如果是使用联想电脑的用户&#xff0c;需要打开联想管家&#xff0c;关掉联想锁屏即可&#xff0c;若是系统不兼容导致的&#xff0c;这时候用户就需要恢复Win10系统来解…

前端性能优化:高在性能,大在范围,必要前置知识一网打尽!(上)

前言 前端性能优化 又是个听起来很高大上的词&#xff0c;确实是的&#xff0c;因为它需要 高在性能&#xff0c;大在范围 &#xff0c;所幸很多大佬都已经输出了很多高质量的内容供大家参考&#xff0c;作者最近也在学习和了解这方面的内容&#xff0c;对如下文中的一些理解若…

死磕测试 10 余年,呕心整理出了核心知识点已经做成PDF,无私奉献

前言&#xff1a; 想在面试、工作中脱颖而出&#xff1f;想在最短的时间内快速掌握 软件测试 的核心基础知识点&#xff1f;想要成为一位优秀的测试工程师&#xff1f;本篇文章能助你一臂之力&#xff01; 目前正值招聘求职旺季&#xff0c;很多同学对一些新技术名词都能侃侃…

智能文本生成:进展与挑战

智能文本生成&#xff1a;进展与挑战 万小军 北京大学王选计算机研究所 摘要&#xff1a;智能文本生成是人工智能与自然语言处理领域的前沿研究方向&#xff0c;也是AI生成内容&#xff08;AIGC&#xff09;的关键技术支撑&#xff0c;近些年受到学术界和产业界的高度关注&…

[笔记]pg常用命令

数据库版本 &#xff1a;9.6.6 注意 &#xff1a;PostgreSQL中的不同类型的权限有SELECT,INSERT,UPDATE,DELETE,TRUNCATE,REFERENCES,TRIGGER,CREATE,CONNECT,TEMPORARY,EXECUTE 和 USAGE。 1. 登录PG数据库 以管理员身份 postgres 登陆&#xff0c;然后通过 #psql -U postg…

【TA100 】3.3 曲面细分与几何着色器---大规模草渲染

一、两者的应用列举 1-1.曲面细分着色器的应用 ①海浪、雪地等 2著名的应用&#xff1a;和置换贴图&#xff08;DIsplacement mapping&#xff0c;也叫位移贴图&#xff09;结合使用 ● 使用普通法线的模型&#xff0c;在边缘部分的凹凸感会不理想 ● 如果使用置换贴图&#…

HarmonyOS学习路之开发篇—Java UI框架(自定义组件与布局 二)

自定义布局 当Java UI框架提供的布局无法满足需求时&#xff0c;可以创建自定义布局&#xff0c;根据需求自定义布局规则 常用接口 Component类相关接口 接口名称 作用 setEstimateSizeListener 设置测量组件的侦听器 setEstimatedSize 设置测量的宽度和高度 onEstima…

极速了解GPT生态

第一部分&#xff1a; 1、chatGPT:一个大语言模型&#xff0c;可以通过API去访问&#xff0c;下面很多是根据API去访问&#xff0c;然后来进行集成。 2、Vector store&#xff0c;你也可以叫是Vector search&#xff0c;主要目就是存储各种向量&#xff0c;然后去计算向量的各…

【Linux】基础IO——文件描述符:缓冲区的理解

上个月学校考试&#xff0c;进行课程复习&#xff0c;一直没有更新博客&#xff0c;现考试结束&#xff0c;继续保持更新&#xff0c;欢迎大家关注&#xff01; 目录 1 模仿C库自主封装简单的文件接口2 对缓冲区的理解2.1 数据刷新到磁盘的过程分析2.2 如何强制刷新内核 1 模仿…

00后是真的卷不过,工作没两年,跳槽到我们公司起薪17K都快接近我了

在程序员职场上&#xff0c;什么样的人最让人反感呢? 是技术不好的人吗?并不是。技术不好的同事&#xff0c;我们可以帮他。 是技术太强的人吗?也不是。技术很强的同事&#xff0c;可遇不可求&#xff0c;向他学习还来不及呢。 真正让人反感的&#xff0c;是技术平平&…

go+vue自建运维管理平台

文章目录 鲁班运维平台容器管理集群管理namespace管理节点管理工作负载存储管理网络管理配置管理事件中心 kuboard 鲁班运维平台 这个平台和spug很像&#xff0c;感觉就像是spug运维平台的容器版本。 但是如果是容器平台则选择的余地很大&#xff0c;优秀的如kubersphere、kub…

NeRF+SLAM论文阅读笔记

CVPR 2023 Co-SLAM: Joint Coordinate and Sparse Parametric Encodings for Neural Real-Time SLAM input&#xff1a; RGB-D contribution&#xff1a; 1.场景表示&#xff1a;多分辨率哈希网格&#xff08;加速&保留高频特征&#xff09; 2.编码方式&#xff1a;one-b…

STM32 实现简单定时任务调度器,动态创建任务,两种思路实现流水灯

代码实现和硬件没关系&#xff0c;所以并不限于STM32&#xff0c;Arduino 之类的其他地方也能用&#xff0c;只要有一个能获取时间的函数就行&#xff0c;或者说&#xff0c;只要有一个会随着时间自动增加的变量就行&#xff0c;时间单位无所谓&#xff0c;所以确实想的话&…

排它锁和共享锁.md

介绍 排它锁&#xff08;Exclusive&#xff09;&#xff0c;又称为X 锁&#xff0c;写锁。 共享锁&#xff08;Shared&#xff09;&#xff0c;又称为S 锁&#xff0c;读锁。 X和S锁之间有以下的关系&#xff1a; SS可以兼容的&#xff0c;XS、SX、XX之间是互斥的 显式加锁…

Django-带参数的路由编写(一)【不用正则表达式匹配的简单带参数路由】

在某urls.py文件有如下的路由配置语句&#xff1a; urlpatterns [path(app2/show/<int:id>/,views.show_id), ]语句&#xff1a; path(app2/show/<int:id>/,views.show_id),中的<int:id>就是带参数的URL中的参数部分&#xff0c;其语法格式如下&#xff1a…

PPT中如何做出透视圆的效果?

看两个例子 一个是上部这种垂直的圆环。 一个是下部这种圆。 它们都据有一定的透视感,上部用于表示流量,下部用于表示出“某一领域”的意镜。 向下延展的圆环透视效果 先说这个扁平的圆的例子,它有4个圆,画的技巧如下: 就是4个圆环;把4个圆环互相叠加;把上和下在“中…

2023年网络安全保姆级入门学习路线,建议收藏!

作为一个工作多年的网络安全渗透工程师&#xff0c;我知道对于零基础小白来说&#xff0c;网络安全可能是一个非常陌生而且有些恐怖的领域。但是不用担心&#xff0c;只要你愿意花费时间和精力去学习&#xff0c;你也能成为一个优秀的网络安全专家。 网络安全学习路线 首先&a…

顺序队列和链队列

队列也是一种线性结构&#xff0c;不同于栈的是队列为先进先出的数据结构&#xff0c;遵循一边入队一边出队。 顺序队列的底层使用的是数组&#xff0c;因此需预先申请一块足够大的内存空间初始化顺序队列。除此之外&#xff0c;为了满足顺序队列中数据从队尾进&#xff0c;队头…