DM8守护集群(主备)安装部署

概述:

本文介绍DM8守护集群(主备)部署架构、实现原理和安装部署规划和步骤。

一、安装前准备

1.1 DM8守护集群架构介绍

搭建的主备集群架构如下图:

在这里插入图片描述

1.2 守护集群原理

DM 数据守护 (Data Watch) 的实现原理简单:将主库(生产库)产生的 REDO 日志传输到备库,备库接收并重新应用 REDO 日志,从而实现备库与主库的数据同步。DM 数据守护的核心思想是监控数据库状态,获取主、备库数据同步情况,为 REDO 日志传输与重演过程中出现的各种异常情况提供一系列的解决方案。

DM 数据守护系统主要由主库、备库、REDO 日志、REDO 日志传输、REDO 日志重演、守护进程 (dmwatcher)、监视器 (dmmonitor) 组成,如下图所示:
在这里插入图片描述

1.3 集群规划

集群规划见如下表格:
在这里插入图片描述

1.4 切换模式说明

本次部署为手工切换,监视器为非确认监视器,见下面表格红色框标注。
在这里插入图片描述

1.5 环境准备

注意:A,B,C机器需要参考单机部署进行数据库软件安装,安装目录和实例目录参考上面集群目录规划,每个服务器都是按照典型安装选项安装。
A机器和B机器分别是主、备库,C机器是监视器。

在Linux环境以命令行方式部署DM8(达梦8)单机版

初始化实例:
A机器:

[dmdba@~]$ /opt/dmdbms/bin/dminit PATH=/opt/dmdbms/data/ INSTANCE_NAME=GRP1_RT_01 PAGE_SIZE=32 EXTENT_SIZE=32 LOG_SIZE=2048

B机器:

[dmdba@~]$ /opt/dmdbms/bin/dminit PATH=/opt/dmdbms/data/ INSTANCE_NAME=GRP1_RT_02 PAGE_SIZE=32 EXTENT_SIZE=32 LOG_SIZE=2048

C机器仅是部署完数据库软件即可。

二、守护集群安装部署

2.1 配置 A 机器

2.1.1 备份数据

[dmdba@~]$  BACKUP DATABASE BACKUPSET '/opt/dmdbms/data/DAMENG/bak/BACKUP_FILE';

2.1.2 修改 dmarch.ini

[dmdba@~]$ vi /opt/dmdbms/data/DAMENG/dmarch.ini
ARCH_WAIT_APPLY            = 0   #0:高性能 1:事务一致
[ARCHIVE_LOCAL]
ARCH_TYPE                = LOCAL  #本地归档类型
ARCH_DEST                = /opt/dmdbms/data/DAMENG/arch/  #本地归档存放路径
ARCH_FILE_SIZE           = 1024  #单个归档大小,单位 MB
ARCH_SPACE_LIMIT         = 51200  #归档上限,单位 MB
[ARCHIVE_REALTIME1]
ARCH_TYPE                = REALTIME  #实时归档类型
ARCH_DEST                = GRP1_RT_02  #实时归档目标实例名

2.1.3 创建 dmmal.ini

[dmdba@~]$ vi /opt/dmdbms/data/DAMENG/dmmal.ini

MAL_CHECK_INTERVAL         = 10  #MAL 链路检测时间间隔
MAL_CONN_FAIL_INTERVAL     = 10  #判定 MAL 链路断开的时间
MAL_TEMP_PATH              = /opt/dmdbms/data/malpath/  #临时文件目录
MAL_BUF_SIZE               = 512  #单个 MAL 缓存大小,单位 MB
MAL_SYS_BUF_SIZE           = 2048  #MAL 总大小限制,单位 MB
MAL_COMPRESS_LEVEL         = 0  #MAL 消息压缩等级,0 表示不压缩

[MAL_INST1]
MAL_INST_NAME            = GRP1_RT_01  #实例名,和 dm.ini 的 INSTANCE_NAME 一致
MAL_HOST                 = 10.0.0.5  #MAL 系统监听 TCP 连接的 IP 地址
MAL_PORT                 = 5336  #MAL 系统监听 TCP 连接的端口
MAL_INST_HOST            = aaa.229.103.202  #实例的对外服务 IP 地址
MAL_INST_PORT            = 5236  #实例对外服务端口,和 dm.ini 的 PORT_NUM 一致
MAL_DW_PORT              = 5436  #实例对应的守护进程监听 TCP 连接的端口
MAL_INST_DW_PORT         = 5536  #实例监听守护进程 TCP 连接的端口

[MAL_INST2]
MAL_INST_NAME            = GRP1_RT_02
MAL_HOST                 = 10.0.0.7
MAL_PORT                 = 5336
MAL_INST_HOST            = bbb.229.107.225
MAL_INST_PORT            = 5236
MAL_DW_PORT              = 5436
MAL_INST_DW_PORT         = 5536

2.1.4 创建 dmwatcher.ini

[dmdba@~]$ vi /opt/dmdbms/data/DAMENG/dmwatcher.ini

[GRP1]
DW_TYPE                  = GLOBAL  #全局守护类型
DW_MODE                  = AUTO  #MANUAL:故障手切 AUTO:故障自切
DW_ERROR_TIME            = 20  #远程守护进程故障认定时间
INST_ERROR_TIME          = 20  #本地实例故障认定时间
INST_RECOVER_TIME        = 60  #主库守护进程启动恢复的间隔时间
INST_OGUID               = 45331  #守护系统唯一 OGUID 值
INST_INI                 = /opt/dmdbms/data/DAMENG/dm.ini  #dm.ini 文件路径
INST_AUTO_RESTART        = 1  #打开实例的自动启动功能
INST_STARTUP_CMD         = /opt/dmdbms/bin/dmserver  #命令行方式启动
RLOG_SEND_THRESHOLD      = 0  #指定主库发送日志到备库的时间阈值,默认关闭
RLOG_APPLY_THRESHOLD     = 0  #指定备库重演日志的时间阈值,默认关闭

2.1.5 拷贝备份文件

##拷贝备份文件到 B 机器
[dmdba@~]$ scp -r /opt/dmdbms/data/DAMENG/bak/BACKUP_FILE dmdba@10.0.0.7:/opt/dmdbms/data/DAMENG/bak

2.1.6 注册服务

[root@~]# /opt/dmdbms/script/root/dm_service_installer.sh -t dmserver -p GRP1_RT_01 -dm_ini /opt/dmdbms/data/DAMENG/dm.ini -m mount
[root@~]# /opt/dmdbms/script/root/dm_service_installer.sh -t dmwatcher -p Watcher -watcher_ini /opt/dmdbms/data/DAMENG/dmwatcher.ini

2.2 配置 B 机器

2.2.1 恢复数据

[dmdba@~]$ /opt/dmdbms/bin/dmrman CTLSTMT="RESTORE DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' FROM BACKUPSET '/opt/dmdbms/data/DAMENG/bak/BACKUP_FILE'"
[dmdba@~]$ /opt/dmdbms/bin/dmrman CTLSTMT="RECOVER DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' FROM BACKUPSET '/opt/dmdbms/data/DAMENG/bak/BACKUP_FILE'"
[dmdba@~]$ /opt/dmdbms/bin/dmrman CTLSTMT="RECOVER DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' UPDATE DB_MAGIC"

2.2.2 替换 dmarch.ini

[dmdba@~]$ vi /opt/dmdbms/data/DAMENG/dmarch.ini
ARCH_WAIT_APPLY            = 0  #0:高性能  1:事务一致
[ARCHIVE_LOCAL]
ARCH_TYPE                = LOCAL  #本地归档类型
ARCH_DEST                = /opt/dmdbms/data/DAMENG/arch/  #本地归档存放路径
ARCH_FILE_SIZE           = 1024  #单个归档大小,单位 MB
ARCH_SPACE_LIMIT         = 51200  #归档上限,单位 MB
[ARCHIVE_REALTIME1]
ARCH_TYPE                = REALTIME  #实时归档类型
ARCH_DEST                = GRP1_RT_01  #实时归档目标实例名

2.2.3 配置 dm.ini、dmmal.ini 和 dmwatcher.ini

在 B 机器上配置备库的实例名为 GRP1_RT_02,dm.ini 参数修改如下:

INSTANCE_NAME  = GRP1_RT_02
PORT_NUM = 5236                               #数据库实例监听端口
DW_INACTIVE_INTERVAL = 60              #接收守护进程消息超时时间
ALTER_MODE_STATUS = 0                     #不允许手工方式修改实例模式/状态/OGUID
ENABLE_OFFLINE_TS  = 2                      #不允许备库 OFFLINE 表空间
MAL_INI = 1                                           #打开 MAL 系统
ARCH_INI = 1                                         #打开归档配置
RLOG_SEND_APPLY_MON = 64             #统计最近 64 次的日志重演信息

配置 dmmal.ini 和 dmwatcher.ini
B 机器里 dmmal.ini、dmwatcher.ini 与 A 机器 GRP1_RT_01 的 dmmal.ini、dmwatcher.ini 相同,参照 A 机器 dmmal.ini、dmwatcher.ini 文件进行配置。
或者在A机器直接将两个配置文件scp到B机器。

[dmdba@~]$scp  /opt/dmdbms/data/DAMENG/dmmal.ini  dmdba@10.0.0.7:/opt/dmdbms/data/DAMENG/
[dmdba@~]$scp  /opt/dmdbms/data/DAMENG/dmwatcher.ini dmdba@10.0.0.7:/opt/dmdbms/data/DAMENG/xxx

2.2.4 注册服务

[root@~]# /opt/dmdbms/script/root/dm_service_installer.sh -t dmserver -p GRP1_RT_02 -dm_ini /opt/dmdbms/data/DAMENG/dm.ini -m mount
[root@~]# /opt/dmdbms/script/root/dm_service_installer.sh -t dmwatcher -p Watcher -watcher_ini /opt/dmdbms/data/DAMENG/dmwatcher.ini

2.3 配置C机器–监视器

2.3.1 创建 dmmonitor.ini

先创建日志目录/opt/dmdbms/log2,否则后面前台启动监视服务会报错。

[dmdba@~]$ mkdir /opt/dmdbms/log2
[dmdba@~]$ vi /opt/dmdbms/bin/dmmonitor.ini
MON_DW_CONFIRM             = 0  #0:非确认(故障手切) 1:确认(故障自切)
MON_LOG_PATH               = /opt/dmdbms/log2  #监视器日志文件存放路径
MON_LOG_INTERVAL           = 60  #每隔 60s 定时记录系统信息到日志文件
MON_LOG_FILE_SIZE          = 512  #单个日志大小,单位 MB
MON_LOG_SPACE_LIMIT        = 2048  #日志上限,单位 MB
[GRP1]
MON_INST_OGUID           = 45331  #组 GRP1 的唯一 OGUID 值
MON_DW_IP                = 10.0.0.5:5436  #IP 对应 MAL_HOST,PORT 对应 MAL_DW_PORT
MON_DW_IP                = 10.0.0.7:5436

2.3.2 注册服务

[root@~]# /opt/dmdbms/script/root/dm_service_installer.sh -t dmmonitor -p Monitor -monitor_ini /opt/dmdbms/bin/dmmonitor.ini

2.3.3 监视器使用

在这里插入图片描述

2.4 启动服务及查看信息

2.4.1 启动数据库并修改参数

注意:disql连接地址是127.0.0.1

##A 机器
[dmdba@~]$ /opt/dmdbms/bin/DmServiceGRP1_RT_01 start
[dmdba@~]$ /opt/dmdbms/bin/disql SYSDBA/SYSDBA@127.0.0.1:5236
SQL> SP_SET_OGUID(45331);
SQL> ALTER DATABASE PRIMARY;

##B 机器
[dmdba@~]$ /opt/dmdbms/bin/DmServiceGRP1_RT_02 start
[dmdba@~]$ /opt/dmdbms/bin/disql SYSDBA/SYSDBA@127.0.0.1:5236
SQL> SP_SET_OGUID(45331);
SQL> ALTER DATABASE STANDBY;

2.4.2 启动守护进程

##A/B机器
[dmdba@~]$ /opt/dmdbms/bin/DmWatcherServiceWatcher start

2.4.3 启动监视器

##C机器
##后台启动
[dmdba@~]$ /opt/dmdbms/bin/DmMonitorServiceMonitor start
##前台启动
[dmdba@~]$ /opt/dmdbms/bin/dmmonitor /opt/dmdbms/bin/dmmonitor.ini

2.5 启停集群

##启动
##A/B 机器
[dmdba@~]$ /opt/dmdbms/bin/DmWatcherServiceWatcher start
##停止
##A/B机器
[dmdba@~]$ /opt/dmdbms/bin/DmWatcherServiceWatcher stop
##A 机器
[dmdba@~]$ /opt/dmdbms/bin/DmServiceGRP1_RT_01 stop
##B机器
[dmdba@~]$ /opt/dmdbms/bin/DmServiceGRP1_RT_02 stop

三、查看集群状态和验证数据同步

3.1 查看集群状态是否正常

启动监视器前台服务查看

[dmdba@~]$ /opt/dmdbms/bin/dmmonitor /opt/dmdbms/bin/dmmonitor.ini

登陆监视器,执行show命令,查看集群状态如下:

show
2023-07-02 12:50:53 
#================================================================================#
GROUP            OGUID       MON_CONFIRM     MODE            MPP_FLAG  
GRP1             45331       FALSE           AUTO            FALSE     


<<DATABASE GLOBAL INFO:>>
DW_IP               MAL_DW_PORT  WTIME                WTYPE     WCTLSTAT  WSTATUS        INAME            INST_OK   N_EP  N_OK  ISTATUS     IMODE     DSC_STATUS     RTYPE     RSTAT    
10.0.0.5            5436         2023-07-02 12:50:52  GLOBAL    VALID     OPEN           GRP1_RT_01       OK        1     1     OPEN        PRIMARY   DSC_OPEN       REALTIME  VALID    

EP INFO:
INST_IP             INST_PORT  INST_OK   INAME            ISTATUS     IMODE     DSC_SEQNO  DSC_CTL_NODE RTYPE     RSTAT    FSEQ            FLSN            CSEQ            CLSN            DW_STAT_FLAG          
221.229.103.202     5236       OK        GRP1_RT_01       OPEN        PRIMARY   0          0            REALTIME  VALID    26799           59854           26799           59854           NONE                  

<<DATABASE GLOBAL INFO:>>
DW_IP               MAL_DW_PORT  WTIME                WTYPE     WCTLSTAT  WSTATUS        INAME            INST_OK   N_EP  N_OK  ISTATUS     IMODE     DSC_STATUS     RTYPE     RSTAT    
10.0.0.7            5436         2023-07-02 12:50:52  GLOBAL    VALID     OPEN           GRP1_RT_02       OK        1     1     OPEN        STANDBY   DSC_OPEN       REALTIME  VALID    

EP INFO:
INST_IP             INST_PORT  INST_OK   INAME            ISTATUS     IMODE     DSC_SEQNO  DSC_CTL_NODE RTYPE     RSTAT    FSEQ            FLSN            CSEQ            CLSN            DW_STAT_FLAG          
221.229.107.225     5236       OK        GRP1_RT_02       OPEN        STANDBY   0          0            REALTIME  VALID    4763            59853           4763            59853           NONE                  

DATABASE(GRP1_RT_02) APPLY INFO FROM (GRP1_RT_01), REDOS_PARALLEL_NUM (1), WAIT_APPLY[FALSE]:
DSC_SEQNO[0], (RSEQ, SSEQ, KSEQ)[26798, 26798, 26799], (RLSN, SLSN, KLSN)[59853, 59853, 59854], N_TSK[0], TSK_MEM_USE[512] 
REDO_LSN_ARR: (59853)

显示机器A为主库,机器B为备库,4个INST_OK,2个open,集群状态是正常状态。

3.2 验证数据是否能正常同步

A机器登陆disql执行下面创建表test和插入数据操作:

[dmdba@~]$ /opt/dmdbms/bin/disql SYSDBA/SYSDBA@127.0.0.1:5236
create table test (a int );
insert into test values (1);
insert into test values (0);
insert into test values (2);
insert into test values (3);
insert into test values (4);
commit;

B机器登陆disql执行下面查询表test:

[dmdba@ ~]$ /opt/dmdbms/bin/disql SYSDBA/SYSDBA@127.0.0.1:5236
服务器[127.0.0.1:5236]:处于备库打开状态
登录使用时间 : 2.300(ms)
disql V8
SQL> select * from test;

行号     A          
---------- -----------
1          1
2          0
3          2
4          3
5          4

在B机器登陆数据库查看表test,发现在A集群的创建的表和插入数据已经同步到了B机器,说明集群同步正常。

四、dm_svc.conf 配置

dm_svc.conf 是使用达梦数据库时非常重要的配置文件,它包含了达梦各接口和客户端工具所需要配置的一些参数。通过它可以实现达梦各种集群的读写分离和均衡负载,且必须和接口/客户端工具位于同一台机器上才能生效。
初始 dm_svc.conf 文件由达梦安装时自动生成。不同的平台生成目录有所不同,注意相应访问用户需要对该文件有读取权限。
32 位的 DM 安装在 Win32 操作平台下,此文件位于 %SystemRoot%\system32 目录;
64 位的 DM 安装在 Win64 操作平台下,此文件位于 %SystemRoot%\system32 目录;
32 位的 DM 安装在 Win64 操作平台下,此文件位于 %SystemRoot%\SysWOW64 目录;
在 Linux 平台下,此文件位于 /etc 目录。

下面以linux举例:

4.1 linux 配置

以当前集群配置dm_svc.conf文件,在机器A的配置如下:

[root@~etc]# cat dm_svc.conf
##以#开头的行表示是注释#
##全局配置区
TIME_ZONE=(480)
LANGUAGE=(cn)
DMHA=(221.229.103.202:5236,221.229.107.225:5236)
##服务配置
[DMHA]
SWITCH_TIMES=(3)
SWITCH_INTERVAL=(100)
LOGIN_MODE=(1)
[root@owumvyu4iuuzaxxp-0003 etc]# 

在机器A连接数据库:

[dmdba@~]$ disql SYSDBA/SYSDBA@DMHA
服务器[221.229.103.202:5236]:处于主库打开状态
登录使用时间 : 2.986(ms)
disql V8
SQL> 
SQL> quit

关于达梦数据库更多学习内容,欢迎访问达梦社区:
https://eco.dameng.com

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值