本文詳細記錄基於 DRBD(分塊複製設備)+ Heartbeat(心跳監控)+ MySQL 的高可用集群搭建全過程,採用「共享存儲」模式實現雙機熱備,包含架構設計、DRBD 配置、MySQL 數據目錄遷移、權限設置、故障切換驗證等完整步驟,為生產環境部署提供可落地的操作手冊。
10.24.6.4:330610.24.6.6:3306(作為 DRBD 從節點,平時不提供服務)10.24.6.20/dev/sdb1(新建硬盤,**不掛載任何目錄**)/etc/hosts 與主機名:
drbd01drbd02sudo apt-get install drbd8-utils
/etc/drbd.conf 默認包含:
include "/etc/drbd.d/global_common.conf"; include "/etc/drbd.d/*.res";
/etc/drbd.d/global_common.confglobal {
usage-count no; // 不統計使用量
}
common {
protocol C; // C 協議:最安全且性能最好的寫確認模式
syncer {
rate 100M; // 同步速率限制
}
}
/etc/drbd.d/r0.res(雙節點同配)resource r0 {
on drbd01 {
device /dev/drbd0; // 邏輯設備路徑
disk /dev/sdb1; // 物理設備
address 10.24.6.4:7788; // 主節點地址端口
meta-disk internal; // 元數據存儲於設備末尾
}
on drbd02 {
device /dev/drbd0;
disk /dev/sdb1;
address 10.24.6.6:7788; // 從節點地址端口
meta-disk internal;
}
}
⚠️ **配置文件不可包含註釋**,否則解析報錯。
sudo drbdadm create-md r0
若報錯 Found some data on /dev/sdb1,執行清零:
dd if=/dev/zero bs=1M count=1 of=/dev/sdb1; sync
再次執行 drbdadm create-md r0 直至顯示 success。
/etc/init.d/drbd start
cat /proc/drbd
初始狀態:ro:Secondary/Secondary、ds:Inconsistent/Inconsistent(數據未同步)。
**主節點強制升級為 Primary 並覆蓋對端數據:**
drbdadm -- --overwrite-data-of-peer primary r0
觀察同步進度:cat /proc/drbd,直至雙方均為 UpToDate/UpToDate、ro:Primary/Secondary。
# 主節點 mkfs.ext4 /dev/drbd0 mount /dev/drbd0 /mnt/data cd /mnt/data mkdir testfile # 創建測試文件 umount /dev/drbd0 drbdadm secondary r0 # 降為 Secondary # 從節點 drbdadm primary r0 # 升為 Primary mount /dev/drbd0 /mnt/data ls -l /mnt/data # 應看到 testfile
驗證成功證明 DRBD 塊級複製正常,為 MySQL 數據同步奠基。
service mysql stop
cp -r /var/lib/mysql /share_mysql/
/etc/mysql/my.cnf(雙節點)[mysqld] datadir = /share_mysql/mysql
chown -R mysql:mysql /share_mysql/mysql # 系統級權限:AppArmor/SELinux 需允許 mysql 訪問新路徑 # Ubuntu AppArmor 示例: # vim /etc/apparmor.d/usr.sbin.mysqld # 添加: /share_mysql/mysql/ r, /share_mysql/mysql/** rwk, # service apparmor restart
service mysql start
從節點**不啟動** MySQL,由 Heartbeat 控制故障切換時啟動。
本文重點完成 DRBD 存儲層與 MySQL 數據層整合。後續需配置 Heartbeat 實現:
haresources 或 CRM 配置)drbdadm secondary r0 報錯 device is held open。原因:掛載點 /mnt/data 正在被使用(如 shell 當前目錄在該路徑)。**解決:cd /; umount /mnt/data 後再降級。**telnet ip 7788 驗證)。meta-disk internal 要求物理設備有空間存元數據,新硬盤需預留或使用外部元數據設備。DRBD + Heartbeat + MySQL 共享存儲架構通過**塊級同步**實現數據零丟失(同步模式下),VIP 漂移實現秒級故障切換。核心要點:
drbdadm 角色切換、同步監控、分離/掛載流程此架構適合對數據零丟失要求高、可接受秒級切換、硬件資源有限的中小型核心業務場景。