动态

详情 返回 返回

達夢數據庫高可用集羣部署方案 - 动态 详情

🔧 達夢數據庫高可用集羣部署方案 (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、網絡)使用情況。
  • 備份:定期對數據庫進行物理備份和邏輯備份,並驗證備份集的有效性。
  • 巡檢:定期檢查集羣狀態、數據同步延遲、歸檔日誌是否完整。

希望這份詳盡的技術方案能幫助大家成功部署達夢數據庫高可用集羣。如果在具體操作步驟中遇到問題,建議查閲達夢官方文檔或尋求專業支持。

user avatar cloudimagine 头像
点赞 1 用户, 点赞了这篇动态!
点赞

Add a new 评论

Some HTML is okay.