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

MPP集群搭建(带主备)

  • 1.背景
  • 2.操作内容和要求
  • [3. 具体步骤](#3. 具体步骤)
    • [3.1 搭建过程](#3.1 搭建过程)
      • [3.1.1 集群搭建](#3.1.1 集群搭建)
      • [3.1.2 准备工作](#3.1.2 准备工作)
        • [3.1.2.1 初始化](#3.1.2.1 初始化)
        • [3.1.2.2 备份数据库](#3.1.2.2 备份数据库)
      • [3.1.3 配置主库EP01](#3.1.3 配置主库EP01)
        • [3.1.3.1 配置dm.ini](#3.1.3.1 配置dm.ini)
        • [3.1.3.2 配置dmmal.ini](#3.1.3.2 配置dmmal.ini)
        • [3.1.3.3 配置dmarch.ini](#3.1.3.3 配置dmarch.ini)
        • [3.1.3.4 配置dmmpp.ctl](#3.1.3.4 配置dmmpp.ctl)
        • [3.1.3.5 启动主库](#3.1.3.5 启动主库)
        • [3.1.3.6 设置OGUID](#3.1.3.6 设置OGUID)
        • [3.1.3.7 修改数据库模式](#3.1.3.7 修改数据库模式)
      • [3.1.4 配置主库EP02](#3.1.4 配置主库EP02)
        • [3.1.4.1 配置dm.ini](#3.1.4.1 配置dm.ini)
        • [3.1.4.2 配置dmmal.ini](#3.1.4.2 配置dmmal.ini)
        • [3.1.4.3 配置dmarch.ini](#3.1.4.3 配置dmarch.ini)
        • [3.1.4.4 配置dmmpp.ctl](#3.1.4.4 配置dmmpp.ctl)
        • [3.1.4.5 启动主库](#3.1.4.5 启动主库)
        • [3.1.4.6 设置OGUID](#3.1.4.6 设置OGUID)
        • [3.1.4.7 修改数据库模式](#3.1.4.7 修改数据库模式)
      • [3.1.5 配置备库EP01_1](#3.1.5 配置备库EP01_1)
        • [3.1.5.1 配置dm.ini](#3.1.5.1 配置dm.ini)
        • [3.1.5.2 配置dmmal.ini](#3.1.5.2 配置dmmal.ini)
        • [3.1.5.3 配置dmarch.ini](#3.1.5.3 配置dmarch.ini)
        • [3.1.5.4 配置dmmpp.ctl](#3.1.5.4 配置dmmpp.ctl)
        • [3.1.5.5 启动备库](#3.1.5.5 启动备库)
        • [3.1.5.6 设置OGUID](#3.1.5.6 设置OGUID)
        • [3.1.5.7 修改数据库模式](#3.1.5.7 修改数据库模式)
      • [3.1.6 配置备库EP02_1](#3.1.6 配置备库EP02_1)
        • [3.1.6.1 配置dm.ini](#3.1.6.1 配置dm.ini)
        • [3.1.6.2 配置dmmal.ini](#3.1.6.2 配置dmmal.ini)
        • [3.1.6.3 配置dmarch.ini](#3.1.6.3 配置dmarch.ini)
        • [3.1.6.4 配置dmmpp.ctl](#3.1.6.4 配置dmmpp.ctl)
        • [3.1.6.5 启动备库](#3.1.6.5 启动备库)
        • [3.1.6.6 设置OGUID](#3.1.6.6 设置OGUID)
        • [3.1.6.7 修改数据库模式](#3.1.6.7 修改数据库模式)
      • [3.1.7 配置dmwatcher.ini](#3.1.7 配置dmwatcher.ini)
      • [3.1.8 配置监视器](#3.1.8 配置监视器)
      • [3.1.9 启动守护进程](#3.1.9 启动守护进程)
      • [3.1.10 启动监视器](#3.1.10 启动监视器)
    • [3.2 功能测试](#3.2 功能测试)
      • [3.2.1 根据列自动分发测试](#3.2.1 根据列自动分发测试)
      • [3.2.2 服务名连接测试](#3.2.2 服务名连接测试)
      • [3.2.3 故障测试](#3.2.3 故障测试)
  • 4.结论

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

相关推荐
m0_6090004234 分钟前
向日葵好用吗?4款稳定的远程控制软件推荐。
运维·服务器·网络·人工智能·远程工作
kejijianwen2 小时前
JdbcTemplate常用方法一览AG网页参数绑定与数据寻址实操
服务器·数据库·oracle
编程零零七3 小时前
Python数据分析工具(三):pymssql的用法
开发语言·前端·数据库·python·oracle·数据分析·pymssql
suifen_3 小时前
RK3229_Android9.0_Box 4G模块EC200A调试
网络
铁松溜达py4 小时前
编译器/工具链环境:GCC vs LLVM/Clang,MSVCRT vs UCRT
开发语言·网络
高兴就好(石5 小时前
DB-GPT部署和试用
数据库·gpt
这孩子叫逆6 小时前
6. 什么是MySQL的事务?如何在Java中使用Connection接口管理事务?
数据库·mysql
Karoku0666 小时前
【网站架构部署与优化】web服务与http协议
linux·运维·服务器·数据库·http·架构
码农郁郁久居人下6 小时前
Redis的配置与优化
数据库·redis·缓存
MuseLss7 小时前
Mycat搭建分库分表
数据库·mycat