达梦数据库 MPP集群搭建(带主备)

1.背景

达梦大规模并行处理 MPP(DM Massively Parallel Processing,缩写 DM MPP)是基于达梦数据库管理系统研发的完全对等无共享式集群组件,支持将多个 DM 数据库实例组织为一个并行计算网络,对外提供统一的数据库服务。
本实验将练习带主备的MPP集群搭建过程。

2.操作内容和要求

完成MPP集群的搭建,要求如下:
1)完成MPP集群(带主备)的部署,并测试建表和插入数据是否会根据分布列进行自动分发。
2)测试通过服务名连接MPP,连接可自动负载到不同节点。
3)测试故障一个节点后,集群和持续提供服务。

3. 具体步骤

3.1 搭建过程

3.1.1 集群搭建

一共准备4台机器,EP01和EP02为两台MPP主机,EP01_1和EP02_1为对应的两台备机。监视器放在EP01_1所在的机器上。
在这里插入图片描述
在这里插入图片描述

3.1.2 准备工作

3.1.2.1 初始化

在EP01、EP02两台设备上分别初始化数据库
在这里插入图片描述
在这里插入图片描述

3.1.2.2 备份数据库

启动主库
开启归档
在这里插入图片描述
备份数据
在这里插入图片描述
拷贝文件至备机
在这里插入图片描述
在备机上恢复数据
在这里插入图片描述
两台主库均执行以上操作。

3.1.3 配置主库EP01

3.1.3.1 配置dm.ini

在 A 机器上配置主库的实例名为 EP01,dm.ini 参数修改如下

INSTANCE_NAME = EP01

PORT_NUM = 5236 ##数据库实例监听端口

DW_INACTIVE_INTERVAL = 60 ##接收守护进程消息超时时间

ALTER_MODE_STATUS = 0 ##不允许手工方式修改实例模式/状态/OGUID

ENABLE_OFFLINE_TS = 2 ##不允许备库OFFLINE表空间

MAL_INI = 1 ##打开MAL系统

ARCH_INI = 1 ##打开归档配置

MPP_INI = 1 ##启用MPP配置

RLOG_SEND_APPLY_MON = 64 ##统计最近64次的日志发送信息
3.1.3.2 配置dmmal.ini
MAL_CHECK_INTERVAL = 5 ##MAL链路检测时间间隔

MAL_CONN_FAIL_INTERVAL = 5 ##判定MAL链路断开的时间

[MAL_INST1]

    MAL_INST_NAME = EP01 ##实例名,和dm.ini中的INSTANCE_NAME一致

    MAL_HOST = 192.168.78.129 ##MAL系统监听TCP连接的IP地址

    MAL_PORT = 5337 ##MAL系统监听TCP连接的端口

    MAL_INST_HOST = 192.168.78.129 ##实例的对外服务IP地址

    MAL_INST_PORT = 5236 ##实例的对外服务端口,和dm.ini中的PORT_NUM一致

    MAL_DW_PORT = 5253 ##实例对应的守护进程监听TCP连接的端口

    MAL_INST_DW_PORT = 5243 ##实例监听守护进程TCP连接的端口

[MAL_INST2]

    MAL_INST_NAME = EP02

    MAL_HOST = 192.168.78.130

    MAL_PORT = 5337

    MAL_INST_HOST = 192.168.78.130

    MAL_INST_PORT = 5236

    MAL_DW_PORT = 5253

    MAL_INST_DW_PORT = 5243

[MAL_INST3]

    MAL_INST_NAME = EP01_1

    MAL_HOST = 192.168.78.131

    MAL_PORT = 5338

    MAL_INST_HOST = 192.168.78.131

    MAL_INST_PORT = 5237

    MAL_DW_PORT = 5254

    MAL_INST_DW_PORT = 5244

[MAL_INST4]

    MAL_INST_NAME = EP02_1

    MAL_HOST = 192.168.78.132

    MAL_PORT = 5338

    MAL_INST_HOST = 192.168.78.132

    MAL_INST_PORT = 5237

    MAL_DW_PORT = 5254

    MAL_INST_DW_PORT = 5244
3.1.3.3 配置dmarch.ini
[ARCHIVE_LOCAL1]
ARCH_TYPE            = LOCAL        
ARCH_DEST            = /opt/dmdbms/arch        
ARCH_FILE_SIZE       = 1024        
ARCH_SPACE_LIMIT     = 51200        

[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME                    ##实时归档类型
ARCH_DEST = EP01_1              ##实时归档目标实例名
3.1.3.4 配置dmmpp.ctl

dmmpp.ctl 是二进制文件,由 dmmpp.ini 文本通过 dmctlcvt 工具转换而来。
先创建dmmpp.ini
在这里插入图片描述
转换为ctl文件
在这里插入图片描述

3.1.3.5 启动主库

以mount方式启动主库
在这里插入图片描述

3.1.3.6 设置OGUID

启动命令行工具 disql,使用 MPP 类型为 LOCAL 方式,登录主库设置 OGUID 值
在这里插入图片描述

3.1.3.7 修改数据库模式

启动命令行工具 disql,使用 MPP 类型为 LOCAL 方式,登录主库修改数据库为 Primary 模式
在这里插入图片描述

3.1.4 配置主库EP02

3.1.4.1 配置dm.ini

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

INSTANCE_NAME = EP02

PORT_NUM = 5236                 ##数据库实例监听端口

DW_INACTIVE_INTERVAL = 60       ##接收守护进程消息超时时间

ALTER_MODE_STATUS = 0           ##不允许手工方式修改实例模式/状态/OGUID

ENABLE_OFFLINE_TS = 2           ##不允许备库OFFLINE表空间

MAL_INI = 1                     ##打开MAL系统

ARCH_INI = 1                    ##打开归档配置

MPP_INI = 1                     ##启用MPP配置

RLOG_SEND_APPLY_MON = 64        ##统计最近64次的日志发送信息
3.1.4.2 配置dmmal.ini

参照EP01的配置,拷贝过来即可

3.1.4.3 配置dmarch.ini
[ARCHIVE_LOCAL1]
ARCH_TYPE            = LOCAL        
ARCH_DEST            = /opt/dmdbms/arch        
ARCH_FILE_SIZE       = 1024        
ARCH_SPACE_LIMIT     = 51200        

[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME                    ##实时归档类型
ARCH_DEST = EP02_1              ##实时归档目标实例名
3.1.4.4 配置dmmpp.ctl

将EP01的dmmpp.ctl拷贝过来即可。

3.1.4.5 启动主库

以mount方式启动主库
在这里插入图片描述

3.1.4.6 设置OGUID

启动命令行工具 DIsql,使用 MPP 类型为 LOCAL 方式,登录主库设置 OGUID 值。
在这里插入图片描述

3.1.4.7 修改数据库模式

启动命令行工具 DIsql,使用 MPP 类型为 LOCAL 方式,登录主库修改数据库为 Primary 模式。
在这里插入图片描述

3.1.5 配置备库EP01_1

3.1.5.1 配置dm.ini

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

INSTANCE_NAME = EP01_1

PORT_NUM = 5237                 ##数据库实例监听端口

DW_INACTIVE_INTERVAL = 60       ##接收守护进程消息超时时间

ALTER_MODE_STATUS = 0           ##不允许手工方式修改实例模式/状态/OGUID

ENABLE_OFFLINE_TS = 2           ##不允许备库OFFLINE表空间

MAL_INI = 1                     ##打开MAL系统

ARCH_INI = 1                    ##打开归档配置

MPP_INI = 1                     ##打开MPP配置

RLOG_SEND_APPLY_MON = 64 ##统计最近64次的日志重演信息
3.1.5.2 配置dmmal.ini

参照EP01的配置,拷贝过来即可

3.1.5.3 配置dmarch.ini
[ARCHIVE_LOCAL1]
ARCH_TYPE            = LOCAL        
ARCH_DEST            = /opt/dmdbms/arch        
ARCH_FILE_SIZE       = 1024        
ARCH_SPACE_LIMIT     = 51200        

[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME                    ##实时归档类型
ARCH_DEST = EP01              ##实时归档目标实例名
3.1.5.4 配置dmmpp.ctl

将EP01的dmmpp.ctl拷贝过来即可。

3.1.5.5 启动备库

以 Mount 方式启动备库
在这里插入图片描述

3.1.5.6 设置OGUID

在这里插入图片描述

3.1.5.7 修改数据库模式

在这里插入图片描述

3.1.6 配置备库EP02_1

3.1.6.1 配置dm.ini

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

INSTANCE_NAME = EP02_1

PORT_NUM = 5237                 ##数据库实例监听端口

DW_INACTIVE_INTERVAL = 60       ##接收守护进程消息超时时间

ALTER_MODE_STATUS = 0           ##不允许手工方式修改实例模式/状态/OGUID

ENABLE_OFFLINE_TS = 2           ##不允许备库OFFLINE表空间

MAL_INI = 1                     ##打开MAL系统

ARCH_INI = 1                    ##打开归档配置

MPP_INI = 1                     ##打开MPP配置

RLOG_SEND_APPLY_MON = 64        ##统计最近64次的日志重演信息
3.1.6.2 配置dmmal.ini

参照EP01的配置,拷贝过来即可

3.1.6.3 配置dmarch.ini
[ARCHIVE_LOCAL1]
ARCH_TYPE            = LOCAL        
ARCH_DEST            = /opt/dmdbms/arch        
ARCH_FILE_SIZE       = 1024        
ARCH_SPACE_LIMIT     = 51200        

[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME                    ##实时归档类型
ARCH_DEST = EP02              ##实时归档目标实例名
3.1.6.4 配置dmmpp.ctl

将EP01的dmmpp.ctl拷贝过来即可。

3.1.6.5 启动备库

以 Mount 方式启动实例
在这里插入图片描述

3.1.6.6 设置OGUID

在这里插入图片描述

3.1.6.7 修改数据库模式

在这里插入图片描述

3.1.7 配置dmwatcher.ini

在4台机器上分别配置dmwatcher.ini文件
主库1
在这里插入图片描述
主库2
在这里插入图片描述
备库1
在这里插入图片描述
备库2
在这里插入图片描述

3.1.8 配置监视器

在这里插入图片描述

3.1.9 启动守护进程

在4台机器上都执行
在这里插入图片描述

3.1.10 启动监视器

在这里插入图片描述
在这里插入图片描述
集群正常

3.2 功能测试

3.2.1 根据列自动分发测试

创建哈希分布表 T_HASH,分布列为 C1

CREATE TABLE T_HASH(C1 INT, C2 CHAR(10))DISTRIBUTED BY HASH (C1);

在这里插入图片描述
编写测试脚本
在这里插入图片描述
测试脚本
在这里插入图片描述
查看数据分布,全局数据查看
在这里插入图片描述
在EP01上查看数据
在这里插入图片描述
在EP02上数据查看
在这里插入图片描述
可以观察到,数据根据C1列的hash值,把数据分布在了两个MPP数据库上。

3.2.2 服务名连接测试

配置dm_svc.conf
在这里插入图片描述
通过服务名的方式连接数据库
在这里插入图片描述
插入数据
在这里插入图片描述
以local的方式登录EP01查询
在这里插入图片描述
以local的方式登录EP02查询
在这里插入图片描述
由此可见写入数据的操作负载到了两个节点上。

3.2.3 故障测试

断开EP02的网络
在这里插入图片描述
备机2接管成功
在这里插入图片描述
备机2可正常查询数据

4.结论

为了提高 MPP 系统可靠性,克服由于单节点故障导致整个系统不能继续正常工作,DM 在普通的 MPP 系统基础上,引入主备守护机制,将 MPP 节点作为主库节点,增加备库作为备份节点,必要时可切换为主库代替故障节点工作,提高了系统的可靠性和可用性。

达梦社区地址 https://eco.dameng.com

相关推荐

  1. 数据库

    2024-07-22 06:34:03       44 阅读
  2. 数据库系列—26. DSC

    2024-07-22 06:34:03       17 阅读
  3. 2024-07-22 06:34:03       42 阅读
  4. hibernate连接

    2024-07-22 06:34:03       51 阅读
  5. 数据库系列—23. DSC

    2024-07-22 06:34:03       15 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-22 06:34:03       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-22 06:34:03       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-22 06:34:03       45 阅读
  4. Python语言-面向对象

    2024-07-22 06:34:03       55 阅读

热门阅读

  1. MySQL学习之事务,锁机制

    2024-07-22 06:34:03       15 阅读
  2. 神经架构搜索:目标检测的未来

    2024-07-22 06:34:03       17 阅读
  3. Spring 系列

    2024-07-22 06:34:03       17 阅读
  4. 什么是CRISPR/Cas9?

    2024-07-22 06:34:03       14 阅读