DB2 pureScale 提供 Active-Active 共享磁碟架構,支援近乎無限擴展、應用透明、持續可用。本文記錄在 CentOS 7 虛擬化環境下,從作業系統調校、共享儲存模擬、DB2 安裝到實例建立與資料庫建立的完整步驟。
cat >> /etc/sysctl.conf <<'EOF'
kernel.sem = 250 32000 32 1024
kernel.msgmnb = 16384
kernel.msgmni = 1024
kernel.msgmax = 8192
kernel.shmmni = 4096
kernel.shmall = 2097152
kernel.shmmax = 1073741824
vm.max_map_count = 262144
fs.aio-max-nr = 1048576
fs.file-max = 6815744
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
EOF
sysctl -p
cat >> /etc/security/limits.conf <<'EOF'
db2sdin1 soft nofile 65536
db2sdin1 hard nofile 65536
db2sdin1 soft nproc 16384
db2sdin1 hard nproc 16384
db2sdin1 soft stack 10240
db2sdin1 hard stack 32768
EOF
setenforce 0
sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
systemctl disable --now firewalld
# 或 iptables 停用
yum install -y chrony
systemctl enable --now chronyd
chronyc sources
# 所有節點時間差 < 1 秒
# /etc/hosts 所有節點互解
192.168.1.10 node1
192.168.1.11 node2
192.168.1.12 node3
# SSH 免密 (root & 實例用戶)
ssh-keygen -t rsa
ssh-copy-id node1
ssh-copy-id node2
ssh-copy-id node3
yum install -y nfs-utils
mkdir -p /db2fs/data /db2fs/log
cat > /etc/exports <<'EOF'
/db2fs/data *(rw,sync,no_root_squash)
/db2fs/log *(rw,sync,no_root_squash)
EOF
systemctl enable --now nfs-server rpcbind
exportfs -rv
firewall-cmd --permanent --add-service=nfs
firewall-cmd --reload
mkdir -p /db2fs/data /db2fs/log
mount node1:/db2fs/data /db2fs/data
mount node1:/db2fs/log /db2fs/log
# 加入 /etc/fstab 永久掛載
echo "node1:/db2fs/data /db2fs/data nfs rw,hard,intr 0 0" >> /etc/fstab
echo "node1:/db2fs/log /db2fs/log nfs rw,hard,intr 0 0" >> /etc/fstab
DB2_Svr_11.5.0_Linux_x86-64.tar.gz 並解壓。./db2_install,選擇 Server 版本並勾選 pureScale Feature。/opt/ibm/db2/V11.5。
# 以 NFS 掛載點為例,建立 GPFS 同等用途的檔案系統
/opt/ibm/db2/V11.5/bin/db2cluster -cfs -create -filesystem data -disk /db2fs/data
/opt/ibm/db2/V11.5/bin/db2cluster -cfs -create -filesystem log -disk /db2fs/log
# 實際 GPFS 會使用 NSD (Network Shared Disk),此處為簡化測試
/opt/ibm/db2/V11.5/instance/db2icrt -d \
-cf node1 -cfnet node1-ib0 \
-m node1 -mnet node1-ib0 \
-m node2 -mnet node2-ib0 \
-instance_shared_dev /db2fs/data \
-tbdev /db2fs/log \
-u db2sdfenc db2sdin1
-cf:指定 CF 主機名。-m:指定 Member 主機名。-instance_shared_dev:共享儲存裝置 (含配置、診斷資料)。-tbdev:表空間/日誌儲存裝置。-u:fenced user / instance user。
# 新增 CF (Standby)
/opt/ibm/db2/V11.5/instance/db2iupdt -d -add -cf node3 -cfnet node3-ib0 db2sdin1
# 新增 Member
/opt/ibm/db2/V11.5/instance/db2iupdt -d -add -m node3 -mnet node3-ib0 db2sdin1
chown db2sdin1:db2iadm1 /db2fs/data /db2fs/log
su - db2sdin1 -c "db2start"
# 輸出 SQL1063N DB2START processing was successful. 代表成功
db2instance -list
# 顯示所有 Member/CF 狀態、Hostname、State、Alert
# 必須在 Member 主機執行 (非 CF)
db2 "create database testdb on /db2fs/data"
db2 connect to testdb
db2 "create table t1 (c1 int)"
db2 "insert into t1 values (1)"
db2 "select * from t1"
db2instance -list 所有節點 ACTIVE。db2_all 指令正常。kill -9 db2sysc),驗證工作負載自動轉移至其他 Member。
Linux whiptail 互動式對話框完整開發指南:從選單、輸入框到進度條
Arch Linux/Manjaro 掛載 iPhone 完整教學:安裝 libimobiledevice 與 ifuse 步驟
Linux Docker 鏡像瘦身實戰:從 1GB 縮減至 10MB 的極簡 Dockerfile 寫法
Linux 虛擬機安裝 Windows 10 完整教學:VirtualBox 部署、BIOS 虛擬化啟用、CMPXCHG16B 修正
Linux 多文件合併實戰:cat、輸入重定向與大數據場景優化
Ubuntu 12.04 搭建 Ruby on Rails 開發環境完整教學(RVM + Ruby 2.0 + Rails 3.2 + MySQL)