DM MPP集群(两节点主备)

1. 前言

DM 大规模并行处理 MPP 是基于达梦数据库管理系统研发的完全无对等共享式集群,在 DM MPP 集群中支持对各 DM 数据库实例同时运行并构建一个 大规模的并行计算网络,向外界为不同应用提供访问服务,DM MPP 集群基于完 全对等不共享系统架构,使得集群中的每一个实例节点无论是物理上还是逻辑上 都是对等的,尽管在叫法上 DM MPP 会将应用连接到的节点称为主节点,其余节 点为从节点,但是在实际的应用过程中,每个节点能够提供的服务是对等的,对 比于存在主控节点的完全共享体系结构,其优势在于当应用连接到的主节点出现 故障时,集群依旧能够为应用提供服务,极大程度规避了主控节点故障导致集群 服务不可用的情况。

2.DM MPP 执行流程

在 DM MPP 中,数据根据用户指定的分布规则分布在不同的 EP 上。MPP 的 核心在于对用户请求的并行执行,其执行流程可简单描述如下:

  • 用户选择一个 EP 登录,此时该 EP 就是此用户的主 EP,集群中的其余 EP 都是此用户的从 EP,从 EP 可以有多个,而主 EP 只有一个;
  • 主 EP 接受用户的 SQL 请求,并生成并行执行计划;
  • 主 EP 将计划打包后通过 MAL 链路分发到其他从 EP;
  • 各 EP 并行执行,返回相应的执行结果集;
  • 主 EP 收集各 EP(包括自己)的执行结果;
    如图所示为DM MPP执行流程图:
    在这里插入图片描述

3. 引入主备数据守护的DM MPP集群

两节点带主备守护的 DM MPP 集群搭建实践操作的主机实例规 划,实例间通过两张独立的内网网卡连接到 MAL 链路进行通信,进行交叉主备配置,每台主机上配置另一台主机的备库实例,引入监视器主机 DM_MONITOR节点监测如图为带主备数据守护的两节点DM MPP 系统图:
在这里插入图片描述

4.主机端口规划

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

5. 部署流程记录

5.1初始化实例

进入每台主机的 DM 安装目录 bin 文件夹下,使用 dminit 工具初始化四个数 据库实例,执行如下指令:

./dminit path=/dm8/data instance_name=GRP1_MPP_EP01 db_name=EP01 port_num=5236 #初始化 EP0 主库实例 

./dminit path=/dm8/data instance_name=GRP2_MPP_EP11 db_name=EP11 port_num=5237 #初始化 EP1 备库实例 

./dminit path=/dm8/data instance_name=GRP2_MPP_EP02 db_name=EP02 port_num=5236 #初始化 EP1 主库实例 
 
./dminit path=/dm8/data instance_name=GRP2_MPP_EP11 db_name=EP22 port_num=5237 #初始化 EP0 备库实例

初始化节点完成后,使用在DM安装目录/tool/script/文件夹下使用./dm_service_installer.sh 命令进行实例注册操作,并分别启停一次实例,可以进入 bin 目录下使用 dmserver 进行启动,也可以使用 systemctl start DmService[服务名]进行启动实例。

5.2脱机备份与还原

分别在主机 DMMPP_EP0 和主机 DM_MPP_EP1 上对各主库进行脱机备份,具体步骤如下:

  1. 进入主机 DMMPP_EP0 新建备份文件路径/dm8/dmbackup,关闭主库实例服 务,只启动 DmAPService 服务,进入 DM 安装 bin 目录下打开 DMRMAN 工具执行如 下指令:
backup database `/dm8/data/EP01/dm.ini` backupset `/dm8/dmbackup/ FULLBACK_20220825
  1. 将的到的备份集拷贝到到主机 DMMPP_EP1 中 EP01 备库实例 EP22 实例文件中, 进入备份集存放路径 dm8/dmbackup 执行以下指令:
scp -r ./FULLBACK_20220825 dmdba@192.168.150.138:/dm8 /dmbackup
  1. 进入主机 DMMPP_EP1 中,使用 dmrman 工具进行备库 EP22 的还原操作,输入 以下指令:
restore database "/dm8/data/EP22/dm.ini" from backupset "/dm8/dmbakup/FULLBACK_20220825";  

recover database "/dm8/data/EP22/dm.ini" from backupset "/dm8/ dmbakup/FULLBACK_20220825";  

recover database "/dm8/data/EP22/dm.ini"  update db_magic;
  1. 使用上述同样的步骤,在主机 DMMPP_EP1 上进行主库实例 EP02 的备份操作, 将得到的备份集拷贝到主机 DMMPP_EP0 上进行备库实例 EP11 的还原操作,涉 及到的指令如下:
  • 生成主库EP02的备份集
 backup database `/dm8/data/EP02/dm.ini` backupset `/dm8/dmbackup/   FULLBACK_20220825` 
  • 远程拷贝到EP11
  scp -r ./FULLBACK_20220825 dmdba@192.168.150.137:/dm8 /dmbackup 
  • 执行脱机还原操作
restore database ”/dm8/data/EP11/dm.ini” from backupset “/dm8/ 
dmbakup/FULLBACK_20220825”; 
recover database “/dm8/data/EP11/dm.ini” from backupset “/dm8/ 
dmbakup/FULLBACK_20220825”;

recover database “/dm8/data/EP11/dm.ini” update db_magic; 

5.3 集群配置文件

5.3.1 dm.ini

配置各实例的dm.ini 配置:

ALTER_MODE_STATUS = 0      #不允许手工方式修改实例模式/状态/OGUID 
ENABLE_OFFLINE_TS = 2      #不允许备库 OFFLINE 表空间 
MAL_INI = 1                #打开 MAL 系统 
ARCH_INI = 1               #打开归档配置 
MPP_INI = 1                #启用 MPP 配置

使用主机 DMMPP_EP0实例 EP01 目录下进行 dmarch.ini、dmmal.ini、 dmwatcher.ini、dmmpp.ctl 文件的配置:

5.3.2 dmarch.ini

实例 EP01 目录中新建文件 dmarch.ini 文件,进行以下配置:

[ARCHIVE_REALTIME1] 
ARCH_TYPE = REALTIME #实时归档类型 
ARCH_DEST = EP22 #实时归档目标实例名

[ARCHIVE_LOCAL1] 
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /dm8/data/EP01/arch #本地归档文件存放路径 
ARCH_FILE_SIZE = 128 #单位 Mb,本地单个归档文件最大值 
ARCH_SPACE_LIMIT = 1024 #单位 Mb0 表示无限制,范围 1024~4294967294M

5.3.3 dmmpp.ctl

实例 EP01 目录中新建文件 dmmpp.ini 文件,进行以下配置:

[service_name1] 
mpp_seq_no = 0 
mpp_inst_name =GRP1_MPP_EP01 
[service_name2]
 mpp_seq_no = 1
 mpp_inst_name =GRP2_MPP_EP02

使用 DM 提供的 dmctlcvt 工具将 dmmpp.ini 转换成 dmmpp.ctl 命令 “TYPE=2”参数表示将 dmmpp.ini 文本文件转换成控制文件,也可以使用“TYPE=1” 参数进行逆向转换。 进入数据库安装目录 bin 文件夹下,执行以下指令:

 ./dmctlcvt TYPE=2 SRC=/dm8/data/EP01/dmmpp.ini DEST=/dm8/data/ EP01/dmmpp.ctl

5.3.4 dmmal.ini

实例 EP01 目录中新建文件dmmal.ini 文件,进行以下配置:

MAL_CHECK_INTERVAL = 5 #MAL 链路检测时间间隔
MAL_CONN_FAIL_INTERVAL = 5 #判定 MAL 链路断开的时间
[MAL_INST1]
MAL_INST_NAME = GRP1_MPP_EP01      #实例名,和 dm.ini 中的 INSTANCE_NAME 一致
MAL_HOST = 192.168.10.60         #MAL 系统监听 TCP 连接的 IP 地址
MAL_PORT = 61141                   #MAL 系统监听 TCP 连接的端口
MAL_INST_HOST = 192.168.150.137    #实例的对外服务 IP 地址
MAL_INST_PORT = 5236               #实例的对外服务端口,和 dm.ini 中的 PORT_NUM 一致
MAL_DW_PORT = 52141                #实例对应的守护进程监听 TCP 连接的端口
MAL_INST_DW_PORT = 33141           #实例监听守护进程 TCP 连接的端口
[MAL_INST2]
MAL_INST_NAME = GRP1_MPP_EP22
MAL_HOST = 192.168.10.70
MAL_PORT = 61142
MAL_INST_HOST = 192.168.150.138
MAL_INST_PORT = 5237
MAL_DW_PORT = 52142
MAL_INST_DW_PORT = 33142
[MAL_INST3]
MAL_INST_NAME =GRP2_MPP_EP02
MAL_HOST = 192.168.10.70
MAL_PORT = 61141
MAL_INST_HOST = 192.168.150.138
MAL_INST_PORT = 5236
MAL_DW_PORT = 52141
MAL_INST_DW_PORT = 33141
[MAL_INST4]
MAL_INST_NAME = GRP2_MPP_EP11
MAL_HOST = 192.168.10.60
MAL_PORT = 61142
MAL_INST_HOST = 192.168.150.137
MAL_INST_PORT = 5237
MAL_DW_PORT = 52142
MAL_INST_DW_PORT = 33142

5.3.5 dmwatcher.ini

实例 EP01 目录中新建文件 dmwatcher.ini 文件,与主备集群不同的是, 主备集群在每个主机上会配置一个守护进程监测单个实例,而在本次实践中的两 节点主备 MPP 集群则是通过配置一个守护进程去监测两个实例。

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

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

5.3.6拷贝配置文件并修改

按以上配置信息,对其他实例进行修改,对于每一个实例中,所配置的dmmal.inidmmpp.ctl 文件是一致的,而对于主备守护而言,主备库之间的 dmarch.ini 需要彼此对应,对应每台主机而言,配置的 dmwatcher.ini 需要监 测到本机上运行的实例,因此可以通过拷贝以及配置好的配置文件到每台主机中, 配置文件的内容中独有参数进行修改:

1.将主机 DMMPP_EP0 EP01 上的 dmmal.ini,dmarch.ini,dmmpp.ctl
文件拷贝到主机DMMPP_EP1EP22 实例文件夹中,实例 EP01文件下执行如下指令:

 scp -r ./dmmal.ini ./dmarch.ini ./dmmpp/ctl dmdba@192.168.150.138:/ dm8/data/EP22/

修改 dmarch.ini 中的 ARCH_DEST 参数为 GRP1_MPP_EP01,设定其归档目标为 EP01,本地归档文件存放路径为: "/dm8/data/EP22/arch"

2.接上一步骤,将 EP01 中 dmmal.ini、dmwatcher.ini、dmarch.ini、dmmpp.ctl 配置文件拷贝到主机 DMMPP_EP1 的实例EP02文件目录下,执行以下指令:

scp -r ./dmmal.ini ./dmarch.ini ./dmmpp/ctl ./dmwatcher dmdba@ 192.168.150.138:/dm8/data/EP02/

修改 dmarch.ini 中的归档目标和本地归档路径,归档目标为实例EP11,本地归档路径为: "/dm8/data/EP02/arch",修改dmwatcher.ini中的监测对象为主机DMMPP_EP1上的两个实例。如图:
在这里插入图片描述
注意:此处需要特别注意实例的所属守护进程组
3.接上述步骤,将 EP01 中的 dmmal.ini、dmarch.ini、dmapp.ctl 配置文件拷贝到本机实例上的实例 EP11 文件目录中,修改 dmarch.ini 中的归档对象和本地归档文件存放地址,归档对象修改为EP02,本地归档路径为 "/dm8/data/EP11/arch"

4.以上述步骤配置完成各实例中的 dm.ini、dmarch.ini、dmmal.ini、dmmpp.ini 配置文件以及 EP01 和 EP02 中的守护进程文件后,将各实例重新启停一次,使 dm.ini 配置文件生效。

5.3.7设置OGUID

以 mount 的方式启动各实例,分别使用 disql 工具登录到各实例,参照表 3.1 中的实例-OGUID 对照表进行 OGUID 的修改,在 disql 中执行以下指令:

SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1); 
SQL>sp_set_oguid [OGUID 参数值];
SQL>alter database [数据库模式];
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);

5.3.7配置监视器 dmmonitor

在主机 DM_MONITOR 中新建 dmmoniotr_mpp.ini 文件,文件配置如下:

MON_DW_CONFIRM = 1 #确认监视器模式
MON_LOG_PATH = /home/dmdba/dmdbms/log #监视器日志文件存放路径 
MON_LOG_INTERVAL = 60 #每隔 60s 定时记录系统信息到日志文件 
MON_LOG_FILE_SIZE = 32 #每个日志文件最大 32M 
MON_LOG_SPACE_LIMIT = 0 #不限定日志文件总占用空间 
 
[GRP1] 
MON_INST_OGUID = 45330  #组 GRP1 的唯一 OGUID 值 
MON_DW_IP = 192.168.10.60:52141
MON_DW_IP = 192.168.10.70:52142 
  
[GRP2]
MON_INST_OGUID = 45331 #组 GRP2 的唯一 OGUID 值 
MON_DW_IP = 192.168.150.70:52141
MON_DW_IP = 192.168.150.60:52142

6启动集群并验证

执行以下指令,前台开启守护进程和监视器,观察输出内容:

./dmwatcher /home/dmdba/dmdbms/data/EP01/dmwatcher.ini 
./dmwatcher /home/dmdba/dmdbms/data/EP02/dmwatcher.ini 
./dmmonitor /home/dmdba/dmdbms/data/dmmonitor.ini

在这里插入图片描述
更多技术支持与交流请访问达梦在线服务平台 https://eco.dameng.com/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值