正在检查是否收录...

🔧 达梦数据库高可用集群部署方案 (CentOS 8, 6节点)

📝 方案概述

本方案旨在在6台同网段CentOS 8服务器上部署达梦DM8数据库集群,结合MPP架构提升并行处理性能,并通过DataWatch机制确保数据高可用性。集群规划为两个MPP分组,每组包含一个主库和一个备库,同时配置两个全局守护进程和一台独立监视器,确保故障自动切换与实时监控。


📊 集群规划与角色分配

为了更清晰地理解集群架构,以下是6台服务器的具体角色分配:

服务器IP

实例名

角色

MPP分组

端口规划 (实例/MAL/守护)

备注

192.168.1.101

EP01

MPP主库 + 主守护

GROUP_01

5236/61141/52141

同时运行守护进程

192.168.1.102

EP02

MPP备库 + 备守护

GROUP_01

5236/61142/52142

同时运行守护进程

192.168.1.103

EP03

MPP主库

GROUP_02

5237/61143/52143

 

192.168.1.104

EP04

MPP备库

GROUP_02

5237/61144/52144

 

192.168.1.105

EP05

MPP主库

GROUP_03

5238/61145/52145

 

192.168.1.106

EP06

MPP备库 + 监视器

GROUP_03

5238/61146/52146

运行监视器进程

此设计将MPP的并行处理能力与DataWatch的高可用性机制相结合。MPP架构通过将数据分散到多个节点并行处理来提升性能,而DataWatch则通过主备同步和自动故障切换确保数据可靠性。


🛠️ 前期准备与基础环境配置 (所有节点均需执行)

1. 创建安装用户和组

禁止使用root用户安装数据库,需创建专用的dmdba用户。

bash

# 创建用户组

groupadd dinstall -g 2001

# 创建用户并指定组、家目录和shell

useradd -G dinstall -m -d /home/dmdba -s /bin/bash -u 2001 dmdba

# 设置dmdba用户密码

passwd dmdba

# (根据提示输入两次密码,例如Dameng@123)

2. 配置资源限制与内核参数

编辑 

/etc/security/limits.conf

 文件,在末尾添加以下内容:

bash

dmdba soft nice 0

dmdba hard nice 0

dmdba soft as unlimited

dmdba hard as unlimited

dmdba soft fsize unlimited

dmdba hard fsize unlimited

dmdba soft nproc 65536

dmdba hard nproc 65536

dmdba soft nofile 65536

dmdba hard nofile 65536

dmdba soft core unlimited

dmdba hard core unlimited

dmdba soft data unlimited

dmdba hard data unlimited

执行后需重新登录SSH会话生效

。可通过 

ulimit -a

 命令验证。

3. 创建安装目录并授权

规划好安装目录、数据目录、归档目录和备份目录,并将所有权授予dmdba用户。

bash

# 创建目录

mkdir -p /home/dmdba/dmdbms  # 软件安装目录

mkdir -p /dmdata/data        # 数据文件目录

mkdir -p /dmdata/arch        # 归档日志目录

mkdir -p /dmdata/dmbak       # 备份文件目录

 

# 授权给dmdba用户和dinstall组

chown -R dmdba:dinstall /home/dmdba

chown -R dmdba:dinstall /dmdata

 

# 设置目录权限

chmod -R 755 /home/dmdba

chmod -R 755 /dmdata

4. 配置防火墙开放端口

根据规划,开放实例端口、MAL端口和守护进程端口。

bash

# 开放端口,以192.168.1.101节点为例,需开放5236, 61141, 52141

firewall-cmd --permanent --add-port=5236/tcp

firewall-cmd --permanent --add-port=61141/tcp

firewall-cmd --permanent --add-port=52141/tcp

# 重载防火墙规则

firewall-cmd --reload

注意

:其他节点需根据上表的端口规划开放对应的端口。

5. 配置主机名解析

在所有节点的 

/etc/hosts

 文件中添加主机名解析(可选,但推荐),方便后续配置:

text

192.168.1.101 dm-node01

192.168.1.102 dm-node02

192.168.1.103 dm-node03

192.168.1.104 dm-node04

192.168.1.105 dm-node05

192.168.1.106 dm-node06


📥 达梦数据库软件安装 (所有节点)

1. 挂载安装镜像并安装

将达梦DM8安装镜像上传至服务器(如 

/opt

 目录),然后进行挂载和安装。

bash

# 挂载镜像

mount -o loop /opt/dm8_2025xxxx_x86_rh8_64.iso /mnt

 

# 切换到dmdba用户,开始安装

su - dmdba

cd /mnt

./DMInstall.bin -i

安装过程中,根据提示进行选择:

  • 安装语言

    :选择 

    C/c

     (中文)
  • Key文件

    :没有则选 

    n

  • 时区

    :选择 

    21

     (中国标准时间)
  • 安装类型

    :选择 

    1

     (典型安装)
  • 安装目录

    :输入 

    /home/dmdba/dmdbms

  • 确认安装

2. 以root权限运行配置脚本

安装完成后,脚本会提示需要以root权限执行一个脚本。

bash

# 退出dmdba用户(Ctrl+D)

exit

# 切换到root用户,执行脚本

su - root

cd /home/dmdba/dmdbms/script/root

./root_installer.sh

3. 配置环境变量

为dmdba用户配置达梦数据库的环境变量。

bash

# 编辑dmdba用户的.bash_profile文件

su - dmdba

vim ~/.bash_profile

在文件末尾添加以下内容:

bash

export DM_HOME=/home/dmdba/dmdbms

export PATH=$PATH:$DM_HOME/bin:$DM_HOME/tool

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$DM_HOME/bin

保存退出后,使环境变量生效:

bash

source ~/.bash_profile


⚙️ 初始化数据库实例 (按角色执行)

初始化前,请务必根据规划表确认当前节点的角色和实例名。

在所有节点初始化实例

使用 

dminit

 命令初始化实例,

注意不同角色的实例名和端口号不同

bash

# 进入达梦工具目录

cd /home/dmdba/dmdbms/bin

 

# 在192.168.1.101 (EP01, GROUP_01主库) 上执行:

./dminit path=/dmdata/data db_name=EP01 instance_name=EP01 port_num=5236 mal_flag=1 mpp_flag=1

 

# 在192.168.1.102 (EP02, GROUP_01备库) 上执行:

./dminit path=/dmdata/data db_name=EP02 instance_name=EP02 port_num=5236 mal_flag=1 mpp_flag=1

 

# 在192.168.1.103 (EP03, GROUP_02主库) 上执行:

./dminit path=/dmdata/data db_name=EP03 instance_name=EP03 port_num=5237 mal_flag=1 mpp_flag=1

 

# 在192.168.1.104 (EP04, GROUP_02备库) 上执行:

./dminit path=/dmdata/data db_name=EP04 instance_name=EP04 port_num=5237 mal_flag=1 mpp_flag=1

 

# 在192.168.1.105 (EP05, GROUP_03主库) 上执行:

./dminit path=/dmdata/data db_name=EP05 instance_name=EP05 port_num=5238 mal_flag=1 mpp_flag=1

 

# 在192.168.1.106 (EP06, GROUP_03备库) 上执行:

./dminit path=/dmdata/data db_name=EP06 instance_name=EP06 port_num=5238 mal_flag=1 mpp_flag=1

关键参数解释

  • path

    : 数据文件存放路径。
  • db_name

    : 数据库名。
  • instance_name

    : 实例名,必须唯一。
  • port_num

    : 实例监听端口,同组主备库端口需一致,不同组需不同。
  • mal_flag

    : 启用MAL系统,为1是启用。
  • mpp_flag

    : 启用MPP配置,为1是启用。

🔗 配置集群文件 (所有节点)

配置是集群部署的核心,需确保所有节点的配置文件协调一致。

1. 配置MAL系统 (dmmal.ini)

MAL(Mail Archiving Library)是达梦用于节点间通信的子系统。在每个节点的实例目录(如 

/dmdata/data/EP01

)下创建 

dmmal.ini

 文件,

所有节点的内容必须完全相同

ini

[mal_inst1]

mal_inst_name = EP01

mal_host = 192.168.1.101

mal_port = 61141

mal_inst_host = 192.168.1.101

mal_inst_port = 5236

 

[mal_inst2]

mal_inst_name = EP02

mal_host = 192.168.1.102

mal_port = 61142

mal_inst_host = 192.168.1.102

mal_inst_port = 5236

 

[mal_inst3]

mal_inst_name = EP03

mal_host = 192.168.1.103

mal_port = 61143

mal_inst_host = 192.168.1.103

mal_inst_port = 5237

 

[mal_inst4]

mal_inst_name = EP04

mal_host = 192.168.1.104

mal_port = 61144

mal_inst_host = 192.168.1.104

mal_inst_port = 5237

 

[mal_inst5]

mal_inst_name = EP05

mal_host = 192.168.1.105

mal_port = 61145

mal_inst_host = 192.168.1.105

mal_inst_port = 5238

 

[mal_inst6]

mal_inst_name = EP06

mal_host = 192.168.1.106

mal_port = 61146

mal_inst_host = 192.168.1.106

mal_inst_port = 5238

2. 配置MPP系统 (dmmpp.ini)

MPP配置文件定义了集群的全局控制信息。在一个节点上创建 

dmmpp.ini

,然后转换为控制文件并分发到所有节点。

ini

[mpp_ctrl]

mpp_sec_no = 0

mpp_inst_name = EP01

 

[mpp_ctrl]

mpp_sec_no = 1

mpp_inst_name = EP02

 

[mpp_ctrl]

mpp_sec_no = 2

mpp_inst_name = EP03

 

[mpp_ctrl]

mpp_sec_no = 3

mpp_inst_name = EP04

 

[mpp_ctrl]

mpp_sec_no = 4

mpp_inst_name = EP05

 

[mpp_ctrl]

mpp_sec_no = 5

mpp_inst_name = EP06

使用 

dmctlcvt

 工具将INI文件转换为CTL控制文件:

bash

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

然后将生成的 dmmpp.ctl 文件复制到所有其他节点的实例目录下

(如 

/dmdata/data/EP02/

/dmdata/data/EP03/

 等),并确保权限正确。

3. 配置归档与守护 (dmarch.ini 和 dmwatcher.ini)

在主备库节点上

(例如EP01和EP02),需要配置归档和守护进程以实现高可用。

在EP01 (192.168.1.101) 上配置 /dmdata/data/EP01/dmarch.ini

ini

[ARCHIVE_REALTIME]

ARCH_TYPE = REALTIME

ARCH_DEST = EP02  # 实时归档到备库EP02

 

[ARCHIVE_LOCAL1]

ARCH_TYPE = LOCAL

ARCH_DEST = /dmdata/arch  # 本地归档路径

ARCH_FILE_SIZE = 1024

ARCH_SPACE_LIMIT = 0

在EP02 (192.168.1.102) 上配置 /dmdata/data/EP02/dmarch.ini

ini

[ARCHIVE_REALTIME]

ARCH_TYPE = REALTIME

ARCH_DEST = EP01  # 实时归档到主库EP01

 

[ARCHIVE_LOCAL1]

ARCH_TYPE = LOCAL

ARCH_DEST = /dmdata/arch  # 本地归档路径

ARCH_FILE_SIZE = 1024

ARCH_SPACE_LIMIT = 0

注意

:EP03/EP04, EP05/EP06也需按此规则互相配置。

在主备库节点上配置 /dmdata/data/EP01/dmwatcher.ini (守护进程配置,内容基本相同)

ini

[GRP1]

DW_TYPE = GLOBAL

DW_MODE = AUTO  # 自动切换模式

DW_ERROR_TIME = 10

INST_RECOVER_TIME = 60

INST_ERROR_TIME = 10

INST_OGUID = 453331  # 守护系统唯一OGUID,所有节点需相同

INST_INI = /dmdata/data/EP01/dm.ini  # 注意此处要改为当前节点的dm.ini路径

INST_AUTO_RESTART = 1

INST_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmserver

注意

INST_INI

 参数需要根据当前节点修改为对应的dm.ini路径。

4. 修改dm.ini关键参数

编辑每个节点实例目录下的 

dm.ini

 文件,确保以下参数正确设置:

ini

INSTANCE_NAME = EP01  # 与当前实例名一致

PORT_NUM = 5236       # 与规划端口一致

MAL_INI = 1           # 开启MAL系统

ARCH_INI = 1          # 开启归档

MPP_INI = 1           # 开启MPP

RLOG_SEND_APPLY_MON = 64

ALTER_MODE_STATUS = 0 # 不允许手动修改模式

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

注意

:每个节点的 

INSTANCE_NAME

 和 

PORT_NUM

 需根据自身角色修改。


🚀 启动集群与验证

1. 启动数据库实例

按规划顺序启动所有节点的数据库实例

,建议先启动MPP主库节点。

bash

# 在各节点以dmdba用户执行,后台启动:

cd /home/dmdba/dmdbms/bin

./dmserver /dmdata/data/EP01/dm.ini &  # 在192.168.1.101上

./dmserver /dmdata/data/EP02/dm.ini &  # 在192.168.1.102上

# ... 其他节点同理

2. 启动守护进程

在主备库节点上启动守护进程

bash

# 在192.168.1.101 (EP01) 和 192.168.1.102 (EP02) 上执行:

./dmwatcher /dmdata/data/EP01/dmwatcher.ini &  # 注意配置文件路径

3. 配置并启动监视器 (192.168.1.106)

在192.168.1.106节点上创建监视器配置文件 

dmmonitor.ini

ini

[MONITOR]

MON_INST_OGUID = 453331  # 与守护进程配置中的OGUID一致

MON_DW_CONFIRM = 1

MON_LOG_PATH = /home/dmdba/dmdbms/log  # 监视器日志路径

MON_LOG_FILE_SIZE = 1024

MON_LOG_SPACE_LIMIT = 2048

 

# 配置所有守护进程节点

[MON_DW_001]

DW_TYPE = GLOBAL

DW_INST_OGUID = 453331

DW_INST_NAME = EP01

DW_IP = 192.168.1.101

DW_PORT = 52141  # EP01的守护进程端口

 

[MON_DW_002]

DW_TYPE = GLOBAL

DW_INST_OGUID = 453331

DW_INST_NAME = EP02

DW_IP = 192.168.1.102

DW_PORT = 52142  # EP02的守护进程端口

 

# ... (按规划添加其他守护进程节点信息)

启动监视器:

bash

./dmmonitor /home/dmdba/dmdbms/dmmonitor.ini

4. 验证集群状态

  1. 通过监视器查看状态

    :在监视器控制台,输入 

    show

     命令可以查看所有守护进程组和实例的状态,确认所有节点均为 

    Open

     状态,守护进程状态为 

    Start

  2. 通过SQL查询验证MPP

    :连接到任意一个主库节点(如EP01),执行SQL查询:

sql

SELECT SYSDATE;  -- 正常返回时间

SELECT * FROM V$MPP_CFG_ITEM; -- 查看MPP配置信息,应包含所有节点

SELECT * FROM V$DM_INI WHERE PARA_NAME LIKE '%MPP%'; -- 查看MPP相关参数

  1. 模拟故障测试高可用

    (谨慎操作):可以尝试手动停止一个主库节点(如EP01)的数据库服务,观察守护进程和监视器是否能自动将其备库(EP02)提升为新的主库,并在原主库恢复后自动同步数据。

💎 总结与建议

这个6节点达梦数据库集群方案,通过

MPP架构

横向扩展了处理能力,适合海量数据的分析型场景;又通过

DataWatch机制

为每个MPP分组提供了主备冗余,确保了关键业务的连续性和数据可靠性。

日常维护建议

  • 监控

    :密切关注监视器日志、数据库日志以及系统资源(CPU、内存、磁盘IO、网络)使用情况。
  • 备份

    :定期对数据库进行物理备份和逻辑备份,并验证备份集的有效性。
  • 巡检

    :定期检查集群状态、数据同步延迟、归档日志是否完整。

希望这份详尽的技术方案能帮助大家成功部署达梦数据库高可用集群。如果在具体操作步骤中遇到问题,建议查阅达梦官方文档或寻求专业支持。

评论

昵称
邮箱
主页