首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL + DRBD + Heartbeat 高可用架構實戰部署指南

     編輯:MySQL 資料庫相關知識

DRBD (Distributed Replicated Block Device) 提供塊級同步鏡像,配合 Heartbeat 故障切換,可在無共享存儲情況下構建低成本 MySQL 高可用集群 (HA)。本文記錄雙節點 (Master/Slave) 完整部署流程:MySQL 安裝、DRBD 配置、文件系統掛載、Heartbeat 資源管理、VIP 漂移與故障演練。

1. 架構拓撲

  • Master:192.168.100.20 (hostname: master)
  • Slave:192.168.100.21 (hostname: slave)
  • VIP:192.168.100.25 (對外服務 IP,隨主節點漂移)
  • DRBD 設備:/dev/drbd0 → 掛載 /var/data (MySQL datadir)

2. 兩節點同步安裝 MySQL

groupadd mysql
useradd -g mysql -s /sbin/nologin -M mysql
tar zxvf mysql-5.0.67.tar.gz
cd mysql-5.0.67
./configure --prefix=/usr/local/mysql --with-charset=gbk --localstatedir=/var/data --with-extra-charset=all --enable-thread-safe-client
make && make install
cp support-files/my-large.cnf /etc/my.cnf
chown -R mysql:mysql /usr/local/mysql/
/usr/local/mysql/bin/mysql_install_db --user=mysql
chown -R root:root /usr/local/mysql/
chown -R mysql:mysql /var/data
cp support-files/mysql.server /etc/init.d/mysqld
chkconfig --add mysqld
/usr/local/mysql/bin/mysqladmin -u root password '123456'

# 環境變數
echo "/usr/local/mysql/lib/mysql" >> /etc/ld.so.conf && ldconfig
echo "export PATH=\$PATH:/usr/local/mysql/bin" >> /etc/profile && source /etc/profile

3. DRBD 安裝與配置 (雙節點同步)

編譯安裝

tar zxvf drbd-8.3.0.tar.gz
cd drbd-8.3.0
make KDIR=/usr/src/kernels/$(uname -r)  # 需 kernel-devel
make install
modprobe drbd
lsmod | grep drbd  # 確認模組載入

/etc/drbd.conf 關鍵配置

resource r0 {
  protocol C;  # 同步寫入,最高數據一致性
  startup {
    degr-wfc-timeout 120;
  }
  disk {
    on-io-error detach;
  }
  net {
    # 可加啟用校驗、加密
  }
  syncer {
    rate 10M;  # 同步速率限制
  }
  on master {
    device    /dev/drbd0;
    disk      /dev/sdb1;      # 專用分區,建議空分區
    address   192.168.100.20:7788;
    meta-disk internal;
  }
  on slave {
    device    /dev/drbd0;
    disk      /dev/sdb1;
    address   192.168.100.21:7788;
    meta-disk internal;
  }
}

初始化與啟動

# 兩節點同步執行
drbdadm create-md all  # 輸入 yes 確認
/etc/init.d/drbd start

# 查看狀態
cat /proc/drbd
# 期望: cs:Connected, ro:Primary/Secondary (或 Secondary/Primary)

# Master 節點提升為 Primary
drbdadm primary all
drbdsetup /dev/drbd0 primary -o
mkfs.ext3 /dev/drbd0
mkdir -p /var/data
mount /dev/drbd0 /var/data

# 測試寫入數據,再降級/提升驗證同步
umount /var/data
drbdadm secondary all
# Slave 節點
drbdadm primary all
mount /dev/drbd0 /var/data
# 檢查數據是否同步

4. Heartbeat 安裝與配置 (雙節點同步)

依賴與安裝

# libnet
tar zxvf libnet.tar.gz && cd libnet && ./configure && make && make install

# Heartbeat
groupadd haclient
useradd -g haclient hacluster
tar jxvf heartbeat-STABLE-2.1.4.tar.bz2
cd heartbeat-STABLE-2.1.4
./ConfigureMe configure --disable-swig --disable-snmp-subagent
make && make install

cp doc/ha.cf doc/haresources doc/authkeys /etc/ha.d/

/etc/ha.d/authkeys (權限 600)

auth 3
3 md5 Hello!

/etc/ha.d/haresources

master drbddisk Filesystem::/dev/drbd0::/var/data::ext3 mysqld 192.168.100.25

資源順序:drbddisk (DRBD Primary) → Filesystem (掛載) → mysqld (啟動 MySQL) → VIP (綁定服務 IP)。

/etc/ha.d/ha.cf

debugfile /var/log/ha-debug
logfile /var/log/ha-log
keepalive 2
deadtime 15
warntime 5
initdead 120
udpport 694
bcast eth0
auto_failback off  # 建議關閉自動切回,避免震盪
node master
node slave
ping_group group1 192.168.100.20 192.168.100.21
respawn hacluster /usr/lib/heartbeat/ipfail
apiauth ipfail gid=haclient uid=hacluster
hopfudge 1

5. 啟動與驗證

/etc/init.d/heartbeat start
ps -ef | grep heartbeat  # 應見 heartbeat, ipfail, drbddisk 等進程

# 檢查 VIP 是否綁在 Master
ip addr show eth0 | grep 192.168.100.25
# MySQL 是否在 VIP:3306 監聽
netstat -nplt | grep 3306

6. 故障演練

  1. Master 拔網線 / reboot / killall mysqld。
  2. 觀察 Slave 日誌:Heartbeat 檢測失聯 → 提升 DRBD Primary → 掛載文件系統 → 啟動 MySQL → 綁定 VIP。
  3. 客戶端連接 VIP 驗證服務恢復 (切換時間 < 30s)。
  4. 恢復 Master 網絡,觀察是否自動切回 (視 auto_failback 設定)。

7. 避坑與優化建議

  • DRBD 分區:獨立分區、預留 10% 空間、掛載 noatime,nodiratime。
  • MySQL datadir:必須在 DRBD 設備上,my.cnf 設 datadir=/var/data。
  • Heartbeat 版本:生產建議用 Pacemaker + Corosync (Heartbeat 2.x 已停止維護),資源代理更豐富、支援資源粘性、多節點仲裁。
  • Split-Brain 防護:DRBD 配置 disk { on-io-error detach; }、Heartbeat 配置 stonith (如 IPMI、APC PDU) 物理隔離故障節點。
  • 監控告警:監控 /proc/drbd 連接狀態、Heartbeat 進程、VIP 歸屬、MySQL 存活、Replication 延遲 (若開啟 Binlog 同步)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved