达梦数据库高可用集群部署方案

🔧 达梦数据库高可用集群部署方案 (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、网络)使用情况。
  • 备份:定期对数据库进行物理备份和逻辑备份,并验证备份集的有效性。
  • 巡检:定期检查集群状态、数据同步延迟、归档日志是否完整。

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

混合动力汽车(HEV)模型的Simscape模型(Matlab代码、Simulink仿真实现)内容概要:本文档介绍了一个混合动力汽车(HEV)的Simscape模型,该模型通过Matlab代码和Simulink仿真工具实现,旨在对混合动力汽车的动力系统进行建模与仿真分析。模型涵盖了发动机、电机、电池、传动系统等关键部件,能够模拟车辆在不同工况下的能量流动与控制策略,适用于动力系统设计、能耗优化及控制算法验证等研究方向。文档还提及该资源属于一个涵盖多个科研领域的MATLAB仿真资源包,涉及电力系统、机器学习、路径规划、信号处理等多个技术方向,配套提供网盘下载链接,便于用户获取完整资源。; 适合人群:具备Matlab/Simulink使用基础的高校研究生、科研人员及从事新能源汽车系统仿真的工程技术人员。; 使用场景及目标:①开展混合动力汽车能量管理策略的研究与仿真验证;②学习基于Simscape的物理系统建模方法;③作为教学案例用于车辆工程或自动化相关课程的实践环节;④与其他优化算法(如智能优化、强化学习)结合,实现控制策略的优化设计。; 阅读建议:建议使用者先熟悉Matlab/Simulink及Simscape基础操作,结合文档中的模型结构逐步理解各模块功能,可在此基础上修改参数或替换控制算法以满足具体研究需求,同时推荐访问提供的网盘链接获取完整代码与示例文件以便深入学习与调试。
<think>好的,用户想了解达梦数据库高可用部署配置方式,特别是主备切换的部署指南。首先,我需要回忆一下达梦数据库高可用方案有哪些。根据之前的知识,达梦主要支持数据守护(Data Watch)和DMDSC集群这两种高可用方案。数据守护是基于日志同步的主备架构,而DMDSC是共享存储的集群方案。用户提到主备切换,可能更关注数据守护方案。 接下来,我需要确认用户的需求是否涉及这两种方案的选择。用户的问题明确提到了主备切换,所以重点应该放在数据守护的部署上。需要详细说明主库和备库的配置步骤,包括安装前的准备、参数修改、守护进程配置等。 然后,我需要参考提供的引用内容。引用[1]提到了DM数据库在Kylin Server上的安装指南,这可能对安装前的准备有帮助,比如操作系统配置、依赖包安装等。引用[3]提到了SqlSugar配置上下文,但用户的问题是关于高可用部署,这部分可能关联不大,但需要注意是否需要与其他工具集成。 用户可能希望了解具体的步骤,比如如何配置dm.ini和dmarch.ini,如何设置守护进程的参数,以及如何进行手动或自动切换。需要分步骤说明,确保清晰易懂。同时,要提到自动故障转移的条件和机制,比如守护进程如何检测故障并触发切换。 还需要考虑用户的实际应用场景,比如是否需要读写分离,或者对故障恢复时间的要求。在注意事项部分,要提醒用户网络稳定性、日志同步模式的选择(同步还是异步),以及定期演练的重要性。 最后,生成相关问题,帮助用户进一步了解高可用方案的优化、监控维护以及与其他方案的对比。这些问题需要围绕用户可能遇到的后续问题展开,比如性能优化、监控工具的使用等。 确保整个回答结构清晰,步骤详细,并且符合用户的中文要求,使用正确的LaTeX格式,比如独立公式用$$...$$,行内公式用$...$。同时,引用相关文献时要正确标注,比如引用[1]关于安装准备的部分。</think>达梦数据库(DM)的高可用部署主要通过**数据守护(Data Watch)**和**DMDSC(DM Data Shared Cluster)**两大核心方案实现。以下是针对主备切换场景的部署指南: --- ### 一、高可用方案选择 1. **数据守护(主备架构)** - 基于日志同步,支持自动/手动主备切换,适用于读写分离或灾备场景[^1]。 - 典型架构:1主库(Primary) + N备库(Standby) + 1监视器(Monitor)。 2. **DMDSC集群(共享存储)** - 多节点共享存储,通过RAC架构实现高并发访问,无主备切换但支持节点故障自动剔除[^2]。 --- ### 二、数据守护主备切换部署步骤(以同步模式为例) #### 1. 安装前准备 - **环境要求** - 主备节点需安装相同版本的DM数据库(如DM8)[^1]。 - 确保主备服务器时钟同步(NTP服务)。 - 开放TCP端口:`5236`(数据库实例)、`61141`(守护进程通信)。 #### 2. 主库配置 - **修改`dm.ini`** ```ini INSTANCE_NAME = PRIMARY PORT_NUM = 5236 MAL_INI = 1 # 启用MAL系统 ARCH_INI = 1 # 启用归档 ``` - **配置归档文件`dmarch.ini`** ```ini [ARCHIVE_LOCAL] ARCH_TYPE = LOCAL DEST = /dmdata/arch FILE_SIZE = 1024 ``` - **配置MAL系统`dmmal.ini`** ```ini [MAL_INST1] MAL_INST_NAME = PRIMARY MAL_HOST = 192.168.1.10 MAL_PORT = 61141 [MAL_INST2] MAL_INST_NAME = STANDBY MAL_HOST = 192.168.1.11 MAL_PORT = 61141 ``` #### 3. 备库配置 - 使用`dmrman`工具还原主库备份: ```bash RMAN> RESTORE DATABASE '/dmdata/dmdbms/data/DAMENG/dm.ini' FROM BACKUPSET '/dmdata/backup'; RMAN> RECOVER DATABASE '/dmdata/dmdbms/data/DAMENG/dm.ini' FROM BACKUPSET '/dmdata/backup'; RMAN> RECOVER DATABASE '/dmdata/dmdbms/data/DAMENG/dm.ini' UPDATE DB_MAGIC; ``` - 修改备库`dm.ini`: ```ini INSTANCE_NAME = STANDBY PORT_NUM = 5236 MAL_INI = 1 ARCH_INI = 1 ``` #### 4. 配置守护进程`dmwatcher.ini` - **主库守护进程配置**: ```ini [GRP1] DW_TYPE = LOCAL DW_MODE = AUTO # 自动切换模式 DW_ERROR_TIME = 60 # 故障判定时间(秒) INST_RECOVER_TIME = 60 INST_OGUID = 453331 INST_INI = /dmdata/dmdbms/data/DAMENG/dm.ini ``` - **备库守护进程配置**: ```ini [GRP1] DW_TYPE = LOCAL DW_MODE = AUTO DW_ERROR_TIME = 60 INST_RECOVER_TIME = 60 INST_OGUID = 453331 INST_INI = /dmdata/dmdbms/data/DAMENG/dm.ini ``` #### 5. 启动与监控 - **启动顺序**: 1. 启动主库:`DmServiceDMSERVER start` 2. 启动备库:`DmServiceSTANDBY start` 3. 启动守护进程:`DmWatcherService start` 4. 启动监视器:`dmmonitor /dmdata/dmdbms/config/dmmonitor.ini` - **手动切换命令**(监视器中执行): ```sql MONITOR> SWITCHOVER GROUP GRP1; ``` --- ### 三、关键机制与注意事项 1. **故障自动转移** - 当主库故障持续超过`DW_ERROR_TIME`,备库自动升主[^2]。 - 通过监视器实时同步状态,确保数据一致性。 2. **日志同步模式** - 同步模式(SYNC):事务提交需备库确认,数据零丢失。 - 异步模式(ASYNC):高性能但可能丢数据,按需选择。 3. **网络要求** - 主备节点延迟需小于100ms,带宽满足日志传输峰值。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值