Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> 關於 Linux

Linux 虛擬機部署 DB2 DPF (Database Partitioning Feature) 完整步驟:多節點分區資料庫建置

編輯:關於 Linux

DB2 DPF (Database Partitioning Feature) 採用 Shared-Nothing 架構,將資料庫水平切分至多個邏輯分區,各分區擁有獨立 CPU、記憶體、磁碟,適合大規模分析查詢 (OLAP) 與海量資料載入。本文記錄在 Linux 虛擬化環境 (雙節點、每節點雙分區) 部署 DB2 10.5 DPF 的完整流程。

架構規劃

角色主機名IP分區號實例用戶
Node 1cbusdb01192.168.1.1220, 1db2inst1
Node 2cbusdb02192.168.1.1232, 3

分區對應檔 db2nodes.cfg:


0 cbusdb01 0
1 cbusdb01 1
2 cbusdb02 0
3 cbusdb02 1

前置作業系統準備 (所有節點)

1. 建立用戶與群組


groupadd -g 1997 db2igrp
groupadd -g 1998 db2fgrp
useradd -u 1997 -g db2igrp -d /cbusdb/db2inst1 db2inst1
useradd -u 1998 -g db2fgrp -d /cbusdb/db2fenc1 db2fenc1
groupadd db2fadmin
useradd -g db2fadmin db2admin

2. 建立 DB2 實例 (僅 Node 1 執行,共享家目錄)


/opt/ibm/db2/V10.5/instance/db2icrt -s ese -u db2fenc1 db2inst1
/opt/ibm/db2/V10.5/instance/dascrt -u db2admin
su - db2admin -c "db2admin start"

3. 設定實例環境變數與參數


su - db2inst1
db2iauto -on db2inst1
db2set DB2_SKIPINSERTED=on
db2set DB2_USE_ALTERNATE_PAGE_CLEANING=on
db2set DB2_EVALUNCOMMITTED=on
db2set DB2_SKIPDELETED=on
db2set DB2COMM=TCPIP
db2set DB2FCMCOMM=TCPIP4
db2set DB2RSHCMD=/usr/bin/ssh   # 建議改用 SSH
db2set DB2CODEPAGE=1386
db2set DB2TERRITORY=86
db2set DB2_PARALLEL_IO=*

4. 服務埠號規劃 (/etc/services)


DB2c_db2inst1   61000/tcp
DB2_db2inst1    61001/tcp
DB2_db2inst1_1  61002/tcp
DB2_db2inst1_2  61003/tcp
DB2_db2inst1_3  61004/tcp
DB2_db2inst1_4  61005/tcp
DB2_db2inst1_END 61008/tcp

5. 核心參數調校 (sysctl.conf)


kernel.sem = "250 32000 32 1024"
kernel.msgmnb = 16384
kernel.msgmni = 1024
kernel.msgmax = 8192
kernel.shmmni = 4096
kernel.shmall = 2097152
kernel.shmmax = 1073741824

網路互通與遠端執行環境

1. 主機名解析 (/etc/hosts)


127.0.0.1   localhost
192.168.1.122  cbusdb01
192.168.1.123  cbusdb02

2. SSH 免密登入 (取代傳統 rsh)


# 所有節點生成金鑰並互傳
ssh-keygen -t rsa
ssh-copy-id cbusdb01
ssh-copy-id cbusdb02
# 驗證
ssh cbusdb01 date
ssh cbusdb02 date

設定 DB2RSHCMD=/usr/bin/ssh 即可。

3. 時鐘同步 (chrony/ntp)


yum install -y chrony
# /etc/chrony.conf 指向內部 NTP 或外部源
systemctl enable --now chronyd
chronyc sources

共享檔案系統 (NFS) - 供實例家目錄與日誌共享

Server (Node 1)


yum install -y nfs-utils
mkdir -p /cbusdb /cbusdblog
cat > /etc/exports <<'EOF'
/cbusdb   *(rw,sync,no_root_squash)
/cbusdblog *(rw,sync)
EOF
systemctl enable --now nfs-server rpcbind
exportfs -rv

Client (Node 2)


mkdir -p /cbusdb /cbusdblog
mount cbusdb01:/cbusdb /cbusdb
mount cbusdb01:/cbusdblog /cbusdblog
echo "cbusdb01:/cbusdb /cbusdb nfs rw,hard,intr 0 0" >> /etc/fstab
echo "cbusdb01:/cbusdblog /cbusdblog nfs rw,hard,intr 0 0" >> /etc/fstab

關閉 SELinux


sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
setenforce 0

啟動實例與建立資料庫


su - db2inst1
db2start
# 輸出 SQL1063N 成功

db2 "create database cbusdb on /cbusdblog using codeset gbk territory cn"
# 驗證
db2 "select * from sysibmadm.dbpartitionnum"
# 應顯示 4 個分區

驗證分區資料分佈


db2 "create table test (id int) distribute by hash (id)"
db2 "insert into test values (1),(2),(3),(4),(5),(6),(7),(8)"
db2 "select dbpartitionnum(id), count(*) from test group by dbpartitionnum(id)"
# 各分區應有資料分佈

常見問題排查

DB2 DPF 架構部署圖

Copyright © Windows教程網 All Rights Reserved
現象原因解決
db2start 失敗 SQL1220NFCM 通訊失敗檢查 /etc/hosts、防火牆、DB2FCMCOMM、SSH 免密
分區無法連線.rhosts 或 SSH 設定錯誤確認 authorized_keys、DB2RSHCMD、/etc/ssh/sshd_config AllowUsers
建立資料庫慢/卡住共享儲存掛載問題檢查 NFS 掛載、權限、磁碟空間、fsid 衝突