注册
DMHS主备同步部署及验证(DM8DW-DM8单机)
培训园地/ 文章详情 /

DMHS主备同步部署及验证(DM8DW-DM8单机)

山水清音 2023/06/01 1562 0 0

本次模拟DM8DW集群及DMHS主备到单机节点的DMHS部署及验证,实现主备集群可以实时同步到单机库。

1. 安装包版本

数据库: dm8_20230418_x86_rh6_64.iso
DMHS: dmhs_V4.3.08_dm8_rev127399_rh6_64_veri_20230407_sp8.bin
操作系统:DMHS源端:CentOS Linux release 7.4.1708 (Core)
DMHS目的端:Linux version 4.19.90-24.4.v2101.ky10.x86_6

2. 环境

1.1 DM8主备集群+DM8单机

IP 数据库 端口
主机:172.26.8.111 5236
备机:172.26.8.112 5237
单机:172.26.8.89 5236
监视器:172.26.8.89

1.2防火墙检查:主备及单机关闭防火墙,加入开机不自启

[root@dm8-dxfl-8.111 /]$systemctl stop firewalld

[root@dm8-dxfl-8.111 /]$systemctl disable firewalld

[root@dm8-dxfl-8.111 /]$systemctl status firewalld

1.3DMHS部署前提

确保提前准备主备集群状态正常,确认监视器资源正常;确保单机节点数据库状态正常;具体进程和端口状态如下:
主机:172.26.8.111

[root@dm8-dxfl-8.111 /]$ip add|grep ens33|grep inet
inet 172.26.8.111/24 brd 172.26.8.255 scope global ens33
[root@dm8-dxfl-8.111 /]$ps -ef|grep dms
dmdba 4167 1 0 21:51 pts/1 00:00:06 /home/dmdba/dm/dmdbms/bin/dmserver path=/dbdata/dmdata/DAMENG/dm.ini –noconsole mount
 [root@dm8-dxfl-8.111 /]$ps -ef|grep dmw
dmdba 4285  1  0 21:52 pts/1  00:00:04 /home/dmdba/dm/dmdbms/bin/dmwatcher path=/dbdata/dmdata/DAMENG/dmwatcher.ini –noconsole

备机:172.26.8.112

[root@dm8-dxfl-8.112 /]$ip add|grep ens33|grep inet
inet 172.26.8.112/24 brd 172.26.8.255 scope global ens33
[root@dm8-dxfl-8.112 /]$ps -ef|grep dms
dmdba 3933 1 0 21:50 pts/1 00:00:10 /home/dmdba/dm/dmdbms/bin/dmserver path=/dbdata/dmdata/DAMENG/dm.ini - noconsole mount
 [root@dm8-dxfl-8.112 /]$ps -ef|grep dmw
dmdba 4083 1 0 21:54 pts/1 00:00:05 /home/dmdba/dm/dmdbms/bin/dmwatcher path=/dbdata/dmdata/DAMENG/dmwatcher.ini -noconsole

单机:172.26.8.89

[root@klv10test /]# ip add|grep ens33|grep inet
inet 172.26.8.89/24 brd 172.26.8.255 scope global ens33
[root@klv10test /]# ps -ef|grep dms
dmdba 1296 1  0 20:09 ? 00:00:15  /dm8/bin/dmserver path=/dm8/data/PRCD/dm.ini –noconsole

监视器:

[root@klv10test ~]# ip add|grep ens33|grep inet
inet 172.26.8.89/24 brd 172.26.8.255 scope global ens33
[root@klv10test ~]# ps -ef|grep dmmo
dmdba 2646 2565 0 23:02 pts/1 00:00:00 ./dmmonitor /home/dmdba/dm/RWW_dmmonitor_manual.ini

如下为DM8主备集群状态:
1.jpg

3. 参数调整

3.1开启主备集群的逻辑日志参数

修改开启在主、备RLOG_APPEND_LOGIC逻辑追加日志参数,0为关闭,1为开启,注意参数PARA_TYPE为SYS类型可动态修改;其它参数类型详见管理员手册。如下为参数查询及修改:

SQL> SELECT PARA_NAME,PARA_VALUE,DEFAULT_VALUE,SESS_VALUE,FILE_VALUE,PARA_TYPE FROM V$DM_INI WHERE PARA_NAME LIKE 'RLOG_APPEND_LOGIC';
行号       PARA_NAME         PARA_VALUE DEFAULT_VALUE SESS_VALUE FILE_VALUE PARA_TYPE
---------- ----------------- ---------- ------------- ---------- ---------- ---------
1          RLOG_APPEND_LOGIC 0          0             0          0          SYS

已用时间: 2.485(毫秒). 执行号:105.
SQL> call sp_set_para_value(1,'RLOG_APPEND_LOGIC',1);
DMSQL 过程已成功完成
已用时间: 5.146(毫秒). 执行号:106.
SQL> SELECT PARA_NAME,PARA_VALUE,DEFAULT_VALUE,SESS_VALUE,FILE_VALUE,PARA_TYPE FROM V$DM_INI WHERE PARA_NAME LIKE 'RLOG_APPEND_LOGIC';

行号       PARA_NAME         PARA_VALUE DEFAULT_VALUE SESS_VALUE FILE_VALUE PARA_TYPE
---------- ----------------- ---------- ------------- ---------- ---------- ---------
1          RLOG_APPEND_LOGIC 1          0             1          1          SYS
已用时间: 2.523(毫秒). 执行号:107.

3.1配置 DDL

如果要求 DDL 同步,那么需要创建 DDL 触发器和辅助表。创建的脚本参见 DMHS 安装目录下 scripts 子目录中“ddl_sql_dm8.sql”。注意创建时需要使用 SYSDBA 用户在主库创建。检查创建的触发器和辅助表是否有效,如下检查辅助表的语句:

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 mode$ from v$instance;

行号       MODE$  
---------- -------
1          PRIMARY
已用时间: 1.278(毫秒). 执行号:1402.

确认备库自动同步:

SQL> select mode$ from v$instance;
行号       MODE$  
---------- -------
1          STANDBY
已用时间: 1.369(毫秒). 执行号:501.
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

4. DMHS安装

DMHS部署注意事项:主备环境建议进行安装部署,避免后续DMHS调试期间各种异常问题;使用dmdba用户部署;部署主机/tmp空间过小时需做如下操作:

[root@dm8-dxfl-8.111 opt]mkdir tmp
[root@dm8-dxfl-8.111 opt]chown dmdba:dinstall /opt/tmp
[root@dm8-dxfl-8.111 opt]chmod 777 /opt/tmp
[root@dm8-dxfl-8.111 opt]su - dmdba
[dmdba@dm8-dxfl-8.111 opt]export DMHS_INSTALL_TMPDIR=/opt/tmp

主备、单机DMHS部署参照如下:
1安装.jpg
安装2.jpg

5. DMHS主备配置

5.1DMHS主备环境源端配置

DMHS主备环境源端配置注意事项:
主备配置文件保持一致(db_server建议使用连接串,密码和端口根据实际情况具体配);主备置需配置group为1,启用DMHS主备功能;注意配置各模块书写格式正确性;确认是否开启网闸模式;其它参数根据业务需要进行配置,参数说明详见DMHS手册;
参考配置如下:
主库DMHS配置:

<?xml version="1.0" encoding="GB2312"?>
<dmhs>
    <base>
            <lang>ch</lang>
                <mgr_port>5345</mgr_port>
                <chk_interval>3</chk_interval>
                <ckpt_interval>60</ckpt_interval>
                <siteid>3</siteid>          
                <group>1</group>            --要启用DMHS主备功能
        </base>
<cpt>
                <db_type>DM8</db_type>
                <db_server>DMDW</db_server>   --输入本地IP可以是127.0.0.1
                <db_user>SYSDBA</db_user>
                <db_pwd>SYSDBA</db_pwd>
                <db_port>5236</db_port>
                <idle_time>10</idle_time>
                <ddl_mask>OP:OBJ</ddl_mask>
                 <dict_dir>/dbbak/DICT</dict_dir>
        <arch>
                <clear_interval>60</clear_interval>
                <clear_flag>0</clear_flag>
        </arch>
        <send>
                        <ip>172.26.8.89</ip>		--输入对端IP
                        <mgr_port>5345</mgr_port>
                        <data_port>5346</data_port>
                        <net_pack_size>256</net_pack_size>
                        <net_turns>0</net_turns>     --是否启用网闸
                        <crc_check>0</crc_check>
                        <trigger>1</trigger>
                        <constraint>1</constraint>
                        <identity>1</identity>
                        <filter>
                                <enable>
                                        <item>DMDBA.*</item>
                                </enable>
                                <disable>
                                </disable>
                        </filter>
                        <map>
                        </map>
        </send>
</cpt>
</dmhs>

备库DMHS配置:

<?xml version="1.0" encoding="GB2312"?>
<dmhs>
    <base>
            <lang>ch</lang>
                <mgr_port>5345</mgr_port>
                <chk_interval>3</chk_interval>
                <ckpt_interval>60</ckpt_interval>
                <siteid>3</siteid>         
                <group>1</group>            --要启用DMHS主备功能
        </base>
<cpt>
                <db_type>DM8</db_type>
                <db_server>DMDW</db_server>   --输入本地IP可以是127.0.0.1
                <db_user>SYSDBA</db_user>
                <db_pwd>SYSDBA</db_pwd>
                <db_port>5237</db_port>
                <idle_time>10</idle_time>
                <ddl_mask>OP:OBJ</ddl_mask>
                 <dict_dir>/dbbak/DICT</dict_dir>
        <arch>
                <clear_interval>60</clear_interval>
                <clear_flag>0</clear_flag>
        </arch>
        <send>
                        <ip>172.26.8.89</ip>		--输入对端IP
                        <mgr_port>5345</mgr_port>
                        <data_port>5346</data_port>
                        <net_pack_size>256</net_pack_size>
                        <net_turns>0</net_turns>     --是否启用网闸
                        <crc_check>0</crc_check>
                        <trigger>1</trigger>
                        <constraint>1</constraint>
                        <identity>1</identity>
                        <filter>
                                <enable>
                                        <item>DMDBA.*</item>
                                </enable>
                                <disable>
                                </disable>
                        </filter>
                        <map>
                        </map>
        </send>
</cpt>
</dmhs>

5.2单机目的端dmhs.hs配置

DM8单机库目的端配置如下:

<?xml version="1.0" encoding="GB2312"?>
<dmhs>
    <base>
        <lang>ch</lang>
        <mgr_port>5345</mgr_port>
        <chk_interval>3</chk_interval>
        <ckpt_interval>60</ckpt_interval>
        <siteid>3</siteid>                 
        <version>2.0</version>
    </base>
      <exec>
      <recv>
            <data_port>5346</data_port>
      </recv> 
       <db_type>DM8</db_type>
        <db_server>172.26.8.89</db_server>
        <db_user>SYSDBA</db_user>
        <db_pwd>Dameng123</db_pwd>
        <db_port>5237</db_port>
        <level>0</level>
        <exec_thr>4</exec_thr>
        <exec_sql>1024</exec_sql>
        <exec_trx>5000</exec_trx>
        <exec_rows>250</exec_rows>
        <case_sensitive>1</case_sensitive>
        <toggle_case>0</toggle_case>
        <exec_policy>2</exec_policy>
        <commit_policy>1</commit_policy>
        <enable_merge>1</enable_merge>
        <affect_row>0</affect_row>
    </exec>
</dmhs>

5.3DMDW集群dm_svc.conf配置

DMDW集群配置dm_svc.conf,配置一致如下:

[dmdba@dm8-dxfl-8 ~]$cat /etc/dm_svc.conf 
# 全局配置区
DMDW=(172.26.8.111:5236,172.26.8.112:5237)
TIME_ZONE=(480) 

5.4启动目的端HS

启动目的端DMHS服务,启动EXEC模块:

[dmdba@klv10test ~/dmhs/bin]$./DmhsServiceHSSERVER start
Starting DmhsServiceHSSERVER:  
[dmdba@klv10test ~/dmhs/bin]$./dmhs_console 
DMHS console tool: V4.3.08-Build(2023.03.31-127399trunc)_64_2303_sp8
Copyright (c) 2020, DMHS. All rights reserved.
Type ? or "help" for help, type "quit" to quit console.
DMHS> state
MGR: do not run any module 
执行成功
DMHS> start exec
执行成功

5.5启动源端主备HS

启动源端主备DMHS服务:

[dmdba@dm8-dxfl-8 ~/dmhs/bin]$./DmhsServiceHSSERVER start
Starting DmhsServiceHSSERVER:                              [ OK ]

[dmdba@dm8-dxfl-8 ~/dmhs/bin]$./DmhsServiceHSSERVER start
Starting DmhsServiceHSSERVER:                              [ OK ]

5.6源端主库进行COPY操作

登录源端主库DMHS控制台,查看主备CPT模块状态,在主库进行COPY操作,DICT会经DMHS自动同步到备库指定相关目录下,具体操作如下:

[dmdba@dm8-dxfl-8 ~/dmhs/bin]$./dmhs_console
DMHS console tool: V4.3.08-Build(2023.03.31-127399trunc)_64_2303_sp8
Copyright (c) 2020, DMHS. All rights reserved.
Type ? or "help" for help, type "quit" to quit console.
连接到DMHS:127.0.0.1:5345
执行成功
Dameng HS Server V4.3.08-Build(2023.03.31-127399trunc)_64_2303_sp8
DMHS> state
MGR: do not run any module 
执行成功
DMHS> COPY 0 "SCH.NAME='DMDBA'" DROP|CREATE|INSERT|INDEX|DICT|LSN|THREAD|4 
CSL[WARN]: 检测到DROP掩码,该掩码会删掉目标库:TABLE! 请确认是否继续?(Y/N)
Y
CSL[WARN]: 检测到LSN掩码,该掩码会忽略日志中小于当前LSN的所有操作,请确认是否继续?(Y/N)
Y
copy mask is : |CREATE|DROP|INSERT|THREAD|INDEX|TABLE|DICT|LSN|PARTITION|OBJID|REP

执行完成,请查看执行模块日志,检查数据装载是否成功

5.7启动主库和备库的DMHS CPT模块

先启动主库DMHS CPT模块:

[dmdba@dm8-dxfl-8 ~/dmhs/bin]$./dmhs_console 
DMHS console tool: V4.3.08-Build(2023.03.31-127399trunc)_64_2303_sp8
Copyright (c) 2020, DMHS. All rights reserved.
Type ? or "help" for help, type "quit" to quit console.

连接到DMHS:127.0.0.1:5345
执行成功
Dameng HS Server V4.3.08-Build(2023.03.31-127399trunc)_64_2303_sp8

DMHS> state
MGR: do not run any module 
执行成功
DMHS> start cpt
执行成功
DMHS> state
MGR: Capture Master 
TYPE    VID SITEID EXEC/CPT IP PORT DBNAME 
------- --- ------ ----------- ---- ------ 
Capture 0   3      172.26.8.89 5345        
执行成功
DMHS>

再启用备库DMHS CPT模块:

[dmdba@dm8-dxfl-8 ~/dmhs/bin]$./dmhs_console 
DMHS console tool: V4.3.08-Build(2023.03.31-127399trunc)_64_2303_sp8
Copyright (c) 2020, DMHS. All rights reserved.
Type ? or "help" for help, type "quit" to quit console.
连接到DMHS:127.0.0.1:5345
执行成功
Dameng HS Server V4.3.08-Build(2023.03.31-127399trunc)_64_2303_sp8
DMHS> state
MGR: do not run any module 
执行成功
DMHS> start cpt
执行成功
DMHS> state
MGR: Capture Master 
TYPE    VID SITEID EXEC/CPT IP PORT DBNAME 
------- --- ------ ----------- ---- ------ 
Capture 0   3      172.26.8.89 5345        
执行成功
DMHS>

查看目的端单机库DMHS状态:

[dmdba@klv10test ~/dmhs/bin]$./dmhs_console 
DMHS console tool: V4.3.08-Build(2023.03.31-127399trunc)_64_2303_sp8
Copyright (c) 2020, DMHS. All rights reserved.
Type ? or "help" for help, type "quit" to quit console.
连接到DMHS:127.0.0.1:5345
执行成功
Dameng HS Server V4.3.08-Build(2023.03.31-127399trunc)_64_2303_sp8
DMHS> state
MGR: Execute 
TYPE    VID SITEID EXEC/CPT IP  PORT DBNAME 
------- --- ------ ------------ ---- ------ 
Execute 0   3      172.26.8.112 5345        
Execute 0   3      172.26.8.111 5345        
执行成功

5.8集群主备库和目的端库日志

DMDW到目的端DMHS搭建成功后,DMHS主备优先备库同步到目的端,主库DMHS日志如下图:
2.jpg
DMDW备库库DMHS日志如下图:
3.jpg
目的端DM8单机库DMHS日志:如下图:
4.jpg

6. DMDW_DMHS故障和集群切机测试验证

6.1DW集群同步到单机,优先备库同步,备库HS故障

经过验证当备库HS故障时,HS主备自动切换到主库往目的端库同步,备库HS正常后,HS主备会自动将同步切回到备库上,具体日志如下图:
1验证.jpg

6.2DW集群同步到单机,优先备库同步,主库HS故障

经过验证当主库HS故障时,HS备库保持往目的端库正常同步,主库HS正常后,主库保持停掉服务前检查最小LSN状态,具体日志如下图:
2验证故障.jpg

6.3DW集群主备切机同步到单机,优先备库同步

经过验证当DM8DW集群切机后,DMHS主备检测到DMDW集群主备变换会将HS自动切换到新备库上运行,新主库会将原来的同步自动切换到检查最小LSN状态,目的端同步正常,具体日志如下图:
3验证.jpg

7. DMDW到单机库同步测试

如下为主库建表插入、更新、删除等测试均可以正常同步到目的端单机库,包括6.1-6.5几种类型HS故障时增删改操作均可同步到目的端,部分截图如下:
9.jpg
10.jpg
11.jpg
12.jpg

8. 遇到问题及处理

问题1:
2023-05-25 16:15:23 MGR[ERROR]: lib libdmhs_exec.so can not found,error code0
2023-05-25 16:15:23 MGR[ERROR]: log exec start fail
处理:ldd libdmhs_exec.so查看,libdmoci.so => not found,搜索只有DMHS相关路径下有libdmoci.so文件拷贝/lib64或配置DMHS环境变量lib库路径
export DMHS_HOME=/home/dmdba/dm/dmhs
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/dmdba/dm/dmhs/bin

问题2:
2023-05-25 15:56:01 MGR[ERROR]: 库文件 libdmhs_exec.so 未找到, 出错: 0, libdmoci.so: cannot open shared object file: No such file or directory
2023-05-25 15:56:01 MGR[ERROR]: 日志执行启动失败
处理:DMHS目的端启动执行模块报错,建议使用数据库同版本的libdmoci.so,不建议使用DMHS自带文件。

问题3:
2023-05-26 17:53:52 MGR[INFO]: 成功获取站点172.26.8.89:5345上的最小LSN: 103258...
2023-05-26 17:54:04 CPT[WARN]: 无法连接数据库:SYSDBA@127.0.0.1:0
处理:源端DMHS日志里报错,建议配置文件db_port配置具体端口,db_server配置为字符串使用dm_svc.conf。

问题4:
2023-05-25 15:15:29 MGR[ERROR]: cannot open or find configuration file :/home/dmdba/dm/dmhs/bin/dmhs.hs
2023-05-25 15:15:29 MGR[ERROR]: unable to load configuration
处理:检测配置文件里书写是否正确,是否少东西。

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服