达梦数据库 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

相关推荐
向阳12183 分钟前
mybatis 动态 SQL
数据库·sql·mybatis
胡图蛋.4 分钟前
什么是事务
数据库
小黄人软件7 分钟前
20241220流水的日报 mysql的between可以用于字符串 sql 所有老日期的,保留最新日期
数据库·sql·mysql
张声录112 分钟前
【ETCD】【实操篇(三)】【ETCDCTL】如何向集群中写入数据
数据库·chrome·etcd
无为之士18 分钟前
Linux自动备份Mysql数据库
linux·数据库·mysql
小蜗牛慢慢爬行24 分钟前
有关异步场景的 10 大 Spring Boot 面试问题
java·开发语言·网络·spring boot·后端·spring·面试
MARIN_shen30 分钟前
Marin说PCB之POC电路layout设计仿真案例---06
网络·单片机·嵌入式硬件·硬件工程·pcb工艺
小汤猿人类31 分钟前
open Feign 连接池(性能提升)
数据库
阳冬园1 小时前
mysql数据库 主从同步
数据库·主从同步
m0_748240021 小时前
Chromium 中chrome.webRequest扩展接口定义c++
网络·c++·chrome