2021-01-25

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

如图:
在这里插入图片描述

  1. 重启DM8DSC集群数据库,使配置参数生效。
    注:一定要注意关闭DMDSC集群中的启停顺序
    开启顺序:DmCSSService -> DmASMSvrService -> DmService
    停止顺序:DmService -> DmASMSvrService -> DmCSSService

  2. 验证配置的正确性
    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>

现对以上的基本配置作如下几点说明:

  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模式下的表映射成目的端的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目录下,源端和目的端都需要进行此操作,否则在开启目的端的执行器和源端的捕获器时都会存在报错!!!!

  1. 开启目的端DMHS服务:
    进入/home/dmdba/dmhs/debug目录,命令:
    ./dmhs_server ./dmhs.hs

如图:
在这里插入图片描述

  1. 启动目的端捕获器:
    进入/home/dmdba/dmhs/debug目录,命令:
    ./dmhs_console ./dmhs.hs
    connect
    start exec

如图:
在这里插入图片描述
在这里插入图片描述

  1. 开启源端DMHS服务:
    进入/home/dmdba/dmhs/debug目录,命令:
    ./dmhs_server ./dmhs.hs

如图:
在这里插入图片描述

  1. 在源端进行初始装载:
    进入/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数据同步运行正常。

使用python中的pymsql完成如下:表结构与据创建 1. 建立 `users` 表和 `orders` 表。 `users` 表有用户ID、用户名、年龄字段,(id,name,age) `orders` 表有订单ID、订单日期、订单金额,用户id字段。(id,order_date,amount,user_id) 2 两表的id作为主键,`orders` 表用户id为users的外键 3 插入据 `users` (1, '张三', 18), (2, '李四', 20), (3, '王五', 22), (4, '赵六', 25), (5, '钱七', 28); `orders` (1, '2021-09-01', 500, 1), (2, '2021-09-02', 1000, 2), (3, '2021-09-03', 600, 3), (4, '2021-09-04', 800, 4), (5, '2021-09-05', 1500, 5), (6, '2021-09-06', 1200, 3), (7, '2021-09-07', 2000, 1), (8, '2021-09-08', 300, 2), (9, '2021-09-09', 700, 5), (10, '2021-09-10', 900, 4); 查询语句 1. 查询订单总金额 2. 查询所有用户的平均年龄,并将结果四舍五入保留两位小。 3. 查询订单总最多的用户的姓名和订单总。 4. 查询所有不重复的年龄。 5. 查询订单日期在2021年9月1日至9月4日之间的订单总金额。 6. 查询年龄不大于25岁的用户的订单量,并按照降序排序。 7. 查询订单总金额排名前3的用户的姓名和订单总金额。 8. 查询订单总金额最大的用户的姓名和订单总金额。 9. 查询订单总金额最小的用户的姓名和订单总金额。 10. 查询所有名字中含有“李”的用户,按照名字升序排序。 11. 查询所有年龄大于20岁的用户,按照年龄降序排序,并只显示前5条记录。 12. 查询每个用户的订单量和订单总金额,并按照总金额降序排序。
06-03
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值