目录
1 准备工作
1.1 部署环境需求
1.2 安装DM8
1.2.1 源端数据库初始化
1.2.2 目的端数据库初始化
1.3 安装DMHS
1.3.1 上传安装包至服务器
1.3.2 命令行方式安装
2 数据库系统参数修改
2.1 数据库归档和逻辑日志相关参数修改
2.1.1 dm.ini配置文件
2.1.2 添加归档配置文件dmarch.ini。
2.1.3 启动数据库,验证配置的正确性
2.2 DDL同步触发器配置
3 DMHS同步参数文件配置
3.1 源端
3.2 目的端
4 启动服务和同步模块
4.1 DMHS服务启动脚本
4.1.1 源端注册服务启动
4.1.2 目的端注册服务启动
4.2 启动 DMHS 进行数据同步
4.2.1 目的端---启动本地的exec模块
4.2.2 源端---启动本地的cpt模块
5 同步数据的验证工作
1 准备工作
1.1 部署环境需求
内存要求:DMHS 需要的内存总量取决于执行的分析线程以及执行线程的并发数,最少需要 1G 内存。
磁盘需求:DMHS 安装文件占用 277M,包括了管理工具以及管理界面占用的空间,另外需要一些额外的空间存储 DMHS 运行的日志文件。
操作系统权限:在 Windows 安装时,安装和执行 DMHS 的用户必须是管理员身份;在 Linux 平台下安装,安装用户必须有权限读写 DMHS 安装目录,将涉及的数据库接口动态库添加到系统共享库环境变量中。
网络需求:配置系统支持 TCP/IP 服务(DMHS 安装的所有机器必须配置主机名或者 IP地址)。DMHS 需要使用以下 TCP/IP 端口:管理进程间通信的默认端口 5345;发送和执行子系统之间通信的默认端口 5346;用户可以自行定义这些端口。
1.2 安装DM8
DMHS软件部署前,在源端和目的端分别安装好DM8数据库软件并进行数据库初始化,具体安装可以参考大佬的教程:Linux Centos7 下的达梦数据库单机部署实践
1.2.1 源端数据库初始化
#初始化实例
[dmdba@dmhs01 bin]$ ./dminit PATH=/home/dmdba/dmdata EXTENT_SIZE=32 PAGE_SIZE=16 LOG_SIZE=256 UNICODE_FLAG=1 SYSDBA_PWD=LBHA88888 DB_NAME=hms INSTANCE_NAME=shms BUFFER=300#数据库服务要为运行状态
[dmdba@dmhs02 bin]$ systemctl status DmServiceshms.service
图1.1 源端数据库初始化
图1.2 源端数据库服务状态
1.2.2 目的端数据库初始化
#初始化实例
[dmdba@dmhs02 bin]$ ./dminit PATH=/home/dmdba/dmdata EXTENT_SIZE=32 PAGE_SIZE=16 LOG_SIZE=256 UNICODE_FLAG=1 SYSDBA_PWD=LBHA88888 DB_NAME=hmt INSTANCE_NAME=shmt BUFFER=300#数据库服务要为运行状态
[dmdba@dmhs02 bin]$ systemctl status DmServiceshmt.service
图1.3 目的端数据库初始化
图1.4 目的端数据库服务状态
1.3 安装DMHS
服务器 | IP | 操作系统 | DB | HS版本 |
源端 | 192.168.50.138 | CentOS 7 | DM 8 | dmhs_V4.1.81_dm8_rev103591_rh6_64_veri_20211117.bin |
目的端 | 192.168.50.139 |
1.3.1 上传安装包至服务器
将DMHS安装包上传到服务器目录 /home/dmdba/dmhs 上并赋权
chown -R dmdba:dinstall /home/dmdba/dmhs/dmhs_V4.1.81_dm8_rev103591_rh6_64_veri_20211117.bin
chmod -R 777 /home/dmdba/dmhs/dmhs_V4.1.81_dm8_rev103591_rh6_64_veri_20211117.bin
图1.5 源端DMHS安装包授权
图1.6 目的端DMHS安装包授权
1.3.2 命令行方式安装
图形界面安装(不做赘述,可以自行实操了解:)
./dmhs_V4.1.81_dm8_rev103591_rh6_64_veri_20211117.bin
#命令行安装(根据提示安装即可
./dmhs_V4.1.81_dm8_rev103591_rh6_64_veri_20211117.bin -i
图1.7 DMHS安装结果
2 数据库系统参数修改
2.1 数据库归档和逻辑日志相关参数修改
源端与目的端都修改。
2.1.1 dm.ini配置文件
打开dm.ini配置文件,修改以下参数值:
ARCH_INI = 1 #开启归档
RLOG_APPEND_LOGIC = 1 #开启逻辑附加日志
注意:dm.ini 配置参数中“FAST_COMMIT”必须为 0,否则会导致逻辑日志不全而影响同步。
2.1.2 添加归档配置文件dmarch.ini。
在“dm.ini”同目录下创建文件“dmarch.ini”并添加以下内容:
[ARCHIVE_LOCAL1]ARCH_TYPE = LOCALARCH_DEST = /home/dmdba/dmarch #归档目录ARCH_FILE_SIZE = 128 #归档文件大小,单位 MBARCH_SPACE_LIMIT = 0 #空间大小限制,0 表示不限
2.1.3 启动数据库,验证配置的正确性
#检查归档配置的正确性
SQL>SELECT ARCH_DEST, ARCH_FILE_SIZE FROM SYS.V$DM_ARCH_INI WHERE ARCH_TYPE='LOCAL' AND ARCH_IS_VALID='Y';
#检查逻辑日志配置的正确性
SQL>SELECT PARA_VALUE FROM SYS.V$DM_INI WHERE PARA_NAME = 'RLOG_APPEND_LOGIC';
#检查在线日志
SQL>SELECT PATH FROM SYS.V$RLOGFILE;
#检查 FAST_COMMIT 参数是否为 0
SQL>select para_value from v$dm_ini where para_name = 'FAST_COMMIT';
图2.1 源端验证结果
图2.2 目的端验证结果
2.2 DDL同步触发器配置
在此次实践中使用辅助表方式配置:使用SYSDBA 用户来执行DMHS 安装目录下scripts 子目录中“ddl_sql_dm8.sql”。由于本次是DM-DM单项同步,因此只需要在源端节点执行即可。(如果是双向同步,则目标端与源端都需要执行该脚本)
#在源端服务器上,通过disql连接数据库后执行以下命令
SQL>start /home/dmdba/dmhs/scripts/ddl_sql_dm8.sql
该脚本会在源端库新建9个表和4个触发器,可通过以下sql 检查是否成功
#检查创建的触发器和辅助表是否有效
SQL>select owner, table_name from dba_tables where owner = 'SYSDBA' and table_name like 'DMHS%' and status = 'VALID';#检查触发器
SQL>select owner, trigger_name from dba_triggers where owner = 'SYSDBA' and trigger_name like 'DMHS%' and status = 'Y';
图2.3 源端DDL检查结果
3 DMHS同步参数文件配置
在DMHS安装目录下的bin子目录,创建dmhs.hs配置文件
vi /home/dmdba/dmhs/bin/dmhs.hs
3.1 源端
图3.1 源端dmhs.hs配置(目的端一样)
<?xml version="1.0" encoding="utf-8"?><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>192.168.50.138</db_server><db_user>SYSDBA</db_user><db_pwd>LBHA88888</db_pwd><db_port>5235</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.50.139</ip><mgr_port>5345</mgr_port><data_port>5346</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>SYSDBA.*</item></enable></filter><map><!--映射配置项--><item>SYSDBA.*==SYSDBA.*</item></map></send></cpt>
</dmhs>
3.2 目的端
<?xml version="1.0" encoding="utf-8"?><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>192.168.50.139</db_server><db_user>SYSDBA</db_user><db_pwd>LBHA88888</db_pwd><driver>DM8 ODBC DRIVER</driver><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>
4 启动服务和同步模块
4.1 DMHS服务启动脚本
使用root用户进入到DMHS安装目录 /home/dmdba/dmhs/scripts/root下,通过dmhs_service_installer.sh注册服务脚本。
4.1.1 源端注册服务启动
[root@dmhs01 ~]# cd /home/dmdba/dmhs/scripts/root
[root@dmhs01 root]# ./dmhs_service_installer.sh -t dmhs_server -a true -p HMS -x /home/dmdba/dmhs/bin/dmhs.hs -d /home/dmdba/dmhs/bin
图4.1 源端注册服务
4.1.2 目的端注册服务启动
[root@dmhs02 ~]# cd /home/dmdba/dmhs/scripts/root
[root@dmhs02 root]# ./dmhs_service_installer.sh -t dmhs_server -a true -p HMT -x /home/dmdba/dmhs/bin/dmhs.hs -d /home/dmdba/dmhs/bin
图4.2 目的端注册服务
4.2 启动 DMHS 进行数据同步
进入DMHS软件安装目录bin子目录。
4.2.1 目的端---启动本地的exec模块
#执行端运行 DMHS 软件工具,启动服务
[dmdba@dmhs02 bin]$ ./DmhsServiceHMT start
#执行端运行 DMHS 软件工具 dmhs_console
[dmdba@dmhs02 bin]$ ./dmhs_console
#连接执行端 DMHS 服务
DMHS> connect
#启动日志执行模块
DMHS> start exec
4.2.2 源端---启动本地的cpt模块
#源端运行 DMHS 软件工具 dmhs_server,启动服务
[dmdba@dmhs01 bin]$ ./DmhsServiceHMS start
#使用dmhs_cosole工具连接DMHS管理服务
[dmdba@dmhs02 bin]$ ./dmhs_console
#连接源端 DMHS 服务
DMHS> connect
#设置日志捕获模块起始 LSN
DMHS> clear exec lsn
#装载源端字典信息及历史数据
DMHS> copy 0 "sch.name='SYSDBA'" DICT|LSN|CREATE|INSERT|INDEX
#执行start cpt
DMHS> start cpt
5 同步数据的验证工作
最后使用disql连接数据库后,源端输入数据,到目的端查看是否同步。
【源端】
create table hstest(v1 int);
insert into hstest values(1);
commit;
【目的端】
select * from SYSDBA.hstest;
以上是本次分享内容,欢迎留言沟通一起学习!更多内容也可以前往达梦社区了解~
达梦社区:eco.dameng.com