DM8DSC集群DMHS搭建
一、DMHS软件安装
1.1 软件安装
(1)系统的硬件环境如下(虚拟机)
硬件名称 | 配置 |
---|---|
Red Hat dsc01(dmasm) 、Red Hat dsc02(dmasm)、Red Hat dsc03 extent | 源端服务器操作系统:Red Hat Enterprise Linux Server release 6.4 、内存:4G 、磁盘:40G |
Red Hat dsc11(dmasm)、Red Hat dsc12(dmasm)、Red Hat dsc13 extent | 目的端服务器操作系统:Red Hat Enterprise Linux Server release 6.4、内存:4G、磁盘:40G |
(2)网络环境配置
数据库环境 | 列表 |
---|---|
源端IP设置 | 节点一:192.168.175.135 节点二:192.168.175.136 节点三:192.168.175.139 |
目的端IP设置 | 节点一:192.168.175.148 节点二:192.168.175.149 节点三:192.168.175.150 |
(3)数据库版本
版本号 | 开发商 |
---|---|
DM8 dm8_x86_rh6_64_ent_8.1.1.134 | 武汉达梦数据库有限公司 |
(4)安装DM8DSC集群
源端和目的端都安装DM8DSC集群,具体安装参考博客DM8DSC安装;
(5)安装DMHS
Linux安装命令:
./ dmhs_V3.1.3_dm8_rev95241_rh6_64_veri_202…bin(图形界面安装)
./ dmhs_V3.1.3_dm8_rev95241_rh6_64_veri_202…bin -i (非图形化安装)
安装过程:源端和目的端都只需在一个节点上安装DMHS即可,安装过程和单实例DM8数据库的DMHS安装方式一样,安装好之后需要拷贝debug文件夹到DMHS的安装目录,与bin目录同级!!!
1)安装方式:
[dmdba@localhosthome]$ ./dmhs_V3.1.3_dm8_rev95241_rh6_64_veri_202…bin -i
Extract install files…
1.英文(English)
2.简体中文(简体中文)
请选择安装语言[2.简体中文(简体中文)]:2
/tmp/DMHSInstall/install.log
1.免费试用达梦数据实时同步
2.使用已申请的Key文件
验证许可证文件[1.免费试用达梦数据实时同步]:1
1.精简版
2.完整版(web客户端)
3.自定义
安装类型[1.精简版]:2
1.实时同步软件服务器
2.远程部署工具
3.实时同步软件客户端
4.内置数据库
5.实时同步软件配置助手
6.手册
所需磁盘空间:828 MB
安装目录: [/home/dmdba/dmhs]/home/dmdba/dmhs
1.统一部署
2.现在初始化
是否初始化达梦数据实时同步系统[1.统一部署]: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.175.146:
远程部署工具管理端口5456:
内置数据库轮询间隔3:
内置数据库IP[192.168.175.146]:
内置数据库端口[15236]:
内置数据库用户名[SYSDBA]:
内置数据库密码[SYSDBA]:
内置数据库服务
1.自动
2.手动
启动方式:[2.手动]2
正在创建内置数据库服务
初始化内置数据库
远程控制服务
1.自动
2.手动
启动方式:[2.手动]2
正在创建远程控制服务
web服务
1.自动
2.手动
启动方式:[2.手动]2
正在创建web服务
达梦数据实时同步 V4.0 安装完成
更多安装信息,请查看安装日志文件:
/home/dmdba/dmhs/log/install.log
至此,DMHS安装完成,后续进行相关配置;
2)拷贝debug文件目录
debug文件:
注:使用时解压文件,将里面的debug目录拷贝DMHS安装目录,与bin文件同级即可!!!!
二、DM8 DSC集群DMHS相关配置
采用的是手动配置dmhs.hs,即在安装目录/home/dmdba/dmhs/debug下手动添加dmhs.hs文件,源端和目的端的配置文件内容不同,需要注意!!!
2.1 配置源端
(1)开启归档和逻辑设置
1)设置归档标记和逻辑日志标记
注意:源端和目的端都需要进行以下操作!!!!!!
打开DM8服务器/home/dmdba/dmdbms/data/DAMENG目录下的配置文件“dm.ini”,设置如下值:
ARCH_INI = 1
RLOG_APPEND_LOGIC = 1
如图:
注意:DMDSC每个节点都要开启归档日志和逻辑日志,dm.ini配置参数中“FAST_COMMIT”必须为0,否则会导致逻辑日志不全而影响同步。
2) 添加归档配置文件。在“dm.ini”同目录下创建文件“dmarch.ini”。
源端节点1:
目录:/home/data/dsc0_config
文内容:
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = +DMDATA/dsc0/arch #/dmdata/dameng/arch_dsc0
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0
[ARCH_REMOTE1]
ARCH_TYPE = REMOTE
ARCH_DEST = DSC1
ARCH_INCOMING_PATH = /dmdata/dameng/arch_dsc1
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0
[ARCH_REMOTE2]
ARCH_TYPE = REMOTE
ARCH_DEST = DSC2
ARCH_INCOMING_PATH = /dmdata/dameng/arch_dsc2
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0
如图:
注:需要使用DM数据库安装目录下的./dmasmtool工具在节点一创建+DMDATA/dsc0/arch本地归档日志目录,二三节点也是如此(目录名不同),dmasmtool工具使用可以进入后采用help来查看用法!!!!
源端节点2:
目录:/home/data/dsc1_config
文内容:
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = +DMDATA/dsc1/arch #/dmdata/dameng/arch_dsc1
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0
[ARCH_REMOTE1]
ARCH_TYPE = REMOTE
ARCH_DEST = DSC0
ARCH_INCOMING_PATH = /dmdata/dameng/arch_dsc0
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0
[ARCH_REMOTE2]
ARCH_TYPE = REMOTE
ARCH_DEST = DSC2
ARCH_INCOMING_PATH = /dmdata/dameng/arch_dsc2
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0
如图:
源端节点3:
目录:/home/data/dsc2_config
文内容:
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = +DMDATA/dsc2/arch #/dmdata/dameng/arch_dsc2
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0
[ARCH_REMOTE1]
ARCH_TYPE = REMOTE
ARCH_DEST = DSC0
ARCH_INCOMING_PATH = /dmdata/dameng/arch_dsc0
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0
[ARCH_REMOTE2]
ARCH_TYPE = REMOTE
ARCH_DEST = DSC1
ARCH_INCOMING_PATH = /dmdata/dameng/arch_dsc1
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0
如图:
-
重启DM8DSC集群数据库,使配置参数生效。
注:一定要注意关闭DMDSC集群中的启停顺序
开启顺序:DmCSSService -> DmASMSvrService -> DmService
停止顺序:DmService -> DmASMSvrService -> DmCSSService -
验证配置的正确性
a) 检查归档配置的正确性,请执行以下SQL命令:
SELECT ARCH_DEST, ARCH_FILE_SIZE FROM SYS.V$DM_ARCH_INI WHERE ARCH_TYPE=‘LOCAL’ AND ARCH_IS_VALID=‘Y’;
如图:
节点1:
节点2:
节点3:
b) 检查逻辑日志配置的正确性,通过下面的查询(每个节点都要检查!!):
SELECT PARA_VALUE FROM SYS.V$DM_INI WHERE PARA_NAME = ‘RLOG_APPEND_LOGIC’;
如图:
c) 检查在线日志,通过如下的查询:
SELECT PATH FROM SYS.V$RLOGFILE;
如图:
节点1:
节点2:
节点3:
d) 检查FAST_COMMIT参数是否为0,每个节点都要检查!!
SELECT PARA_VALUE FROM V$DM_INI WHERE PARA_NAME = ‘FAST_COMMIT’;
如图:
注:查询值为0则表示正常!!!
(2)配置DDL
如果要求DDL同步,那么需要创建DDL触发器和辅助表。创建的脚本参见DMHS安装目录下scripts子目录中“ddl_sql_dm8.sql”。注意创建时需要使用SYSDBA用户,本次搭建需要创建DDL触发器和辅助表,如图:
注意:创建时登陆./disql,直接用start方式调用脚本可能会存在创建辅助表和触发器时出现创建不成功,命令如下:
start /home/dmdba/dmhs/scripts/ddl_sql_dm8.sql
所以建议采用打开脚本,复制脚本中每个DDL语句逐步执行,一定要按脚本中的顺序逐步执行,不然会出现创建不成功!!!创建完成之后,检查创建的触发器和辅助表是否有效,检查辅助表的语句:
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触发器创建有效:
(3)配置源端dm_svc.conf
进入/etc目录,vi 编辑dm_svc.conf 文件,文件内容如下:
TIME_ZONE=(480)
LANGUAGE=(cn)
DMRAC=(192.168.175.135:5236,192.168.175.136:5236,192.168.175.139:5236)
SWITCH_TIME=(10000)
SWITCH_INTERVAL=(1000)
如图:
这里的服务名DMRAC在配置dmhs.hs捕获器(cpt)时被用到!!!
(4)配置源端dmhs.hs
在安装目录同级的/home/dmdba/dmhs/debug目录下配置DMHS默认的配置文件dmhs.hs,相对于单机版的DMHS,集群版的配置多了dm8_rac配置,更改了cpt的服务名;如果需要DDL同步,那么基本的配置示例如下:
<?xml version="1.0" encoding="GB2312"?>
<dmhs>
<base>
<lang>ch</lang>
<mgr_port>5345</mgr_port>
<ckpt_interval>60</ckpt_interval>
<siteid>1</siteid>
</base>
<cpt>
<db_type>dm8</db_type>
<db_server>DMRAC</db_server>
<db_user>SYSDBA</db_user>
<db_pwd>SYSDBA</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配置项-->
<dm8_rac>
<nodes>3</nodes><!--RAC节点数-->
<epoch>60</epoch>
<rac_type>1</rac_type>
<db_server>192.168.175.135</db_server><!--ASM服务的IP地址-->
<db_port>9349</db_port><!--ASM服务的端口号 ASM DCR_EP_PORT-->
<db_user>default</db_user>
<db_pwd>default</db_pwd>
<dir_replace><!--节点归档的路径,格式:编号(从0开始)# 归档路径-->
<item>0#+DMDATA/dsc0/arch</item><!--节点0的归档路径-->
<item>1#+DMDATA/dsc1/arch</item><!--节点1的归档路径-->
<item>2#+DMDATA/dsc2/arch</item><!--节点2的归档路径-->
</dir_replace>
</dm8_rac>
<arch><!--归档清理配置项-->
<clear_interval>600</clear_interval>
<clear_flag>1</clear_flag>
<bak_dir></bak_dir>
</arch>
<send><!-- 发送模块配置 -->
<ip>192.168.175.148</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>
现对以上的基本配置作如下几点说明:
- siteid全局唯一,即DMHS同步系统涉及的所有节点的siteid必须全局唯一,不允许有重复值。
- DDL配置项,如果不需要DDL同步,那么就配置为空,即<ddl_mask></ddl_mask>,相应地DMHS DDL触发器和辅助表也不需要创建。
- 归档清理配置项,clear_flag为1表示清除,即DMHS将同步完成的归档文件删除;为2,表示将同步完成的归档移到bak_dir目录下;为0,表示不作任何操作。
- 过滤配置项,本示例配置了白名单,即enable,也可以配置黑名单,详见DMHS用户手册。其过滤的规则是:先判断白名单,然后判断黑名单。如果存在重叠的情况,那么也是会被过滤的。
- 映射配置项,表示存在不同模式之间的表同步,例如本示例中源端的SYSDBA模式下的表映射成目的端的SYSDBA模式下同名的表。
2.2 配置目的端(操作端)
(1)配置目的端dmhs.hs
安装目录同级的/home/dmdba/dmhs/debug目录下添加dmhs.hs,文件内容如下:
<?xml version="1.0" encoding="GB2312"?>
<dmhs>
<base>
<lang>ch</lang>
<mgr_port>5345</mgr_port>
<ckpt_interval>60</ckpt_interval>
<siteid>2</siteid>
</base>
<recv>
<data_port>5346</data_port>
<exec>
<db_type>dm8</db_type>
<db_server>192.168.175.148</db_server>
<db_user>SYSDBA</db_user>
<db_pwd>SYSDBA</db_pwd>
<db_port>5236</db_port>
<exec_thr>16</exec_thr>
<exec_sql>512</exec_sql>
<exec_trx>5000</exec_trx>
<exec_rows>250</exec_rows>
<exec_policy>2</exec_policy>
<msg_col_size>8000</msg_col_size>
<level>0</level>
<enable_merge>0</enable_merge>
<enable_depended>0</enable_depended>
<enable_ckpt_range>0</enable_ckpt_range>
<ddl_continue>1</ddl_continue>
<affect_row>1</affect_row>
</exec>
</recv>
</dmhs>
2.3 初始装载
初始装载是将源端数据库中的初始数据装载到目的端数据库,使DMHS同步的时刻源和目的端的同步表数据一致,DMDSC集群操作方式与单实例数据库操作方式一致;装载前源端DMHS服务和目的端DMHS服务都需要开启,按以下顺序进行(一定要按顺序执行!!),具体的步骤如下:
注意:在我们拷贝的debug文件下是没有libdmdci.so这个依赖包的,需要使用
find …/ -name libdmdci.so在上一级目录找到这个文件并拷贝到debug目录下,源端和目的端都需要进行此操作,否则在开启目的端的执行器和源端的捕获器时都会存在报错!!!!
- 开启目的端DMHS服务:
进入/home/dmdba/dmhs/debug目录,命令:
./dmhs_server ./dmhs.hs
如图:
- 启动目的端捕获器:
进入/home/dmdba/dmhs/debug目录,命令:
./dmhs_console ./dmhs.hs
connect
start exec
如图:
- 开启源端DMHS服务:
进入/home/dmdba/dmhs/debug目录,命令:
./dmhs_server ./dmhs.hs
如图:
- 在源端进行初始装载:
进入/home/dmdba/dmhs/debug目录,命令:
./dmhs_console
connect
copy 0 “sch.name=‘SYSDBA’” DICT|LSN|CREATE|INSERT|INDEX
start cpt
如图:
至此DMDSC集群的DMHS搭建成功,可以开始进行数据同步。
2.4 简单数据同步测试
测试(1):
源端建立新表并插入数据,目的端查询
源端如图:
目的端如图:
测试(2):
源端创建视图,目的端查询视图后,在源端删除视图,目的端查询
源端创建:
目的端查询:
源端删除:
目的端查询:
测试结束,DM8DSC集群的单向DMHS数据同步运行正常。