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

使用 DRBD 與 MySQL 構建高可用資料庫環境

     編輯:MySQL 資料庫相關知識

實驗環境與架構規劃

本文示範在 Ubuntu 8.04 上部署 DRBD 8.0.11 搭配 MySQL 5.1.36,採用雙節點主備模式實現資料庫高可用。兩台伺服器資訊如下:

  • DBTest1 (Primary):192.168.0.101
  • DBTest2 (Secondary):192.168.0.102

核心思路:利用 DRBD 在區塊層面將磁碟分區即時鏡像到備機,MySQL 資料目錄掛載於 DRBD 設備之上,故障時透過切換 DRBD 角色並掛載檔案系統實現秒級切換。

步驟一:編譯安裝 MySQL

在兩台節點上分別執行:

tar -zxvf mysql-5.1.36.tar.gz
cd mysql-5.1.36
./configure --prefix=/usr/local/mysql --with-charset=utf8 --with-plugins=max-no-ndb
make && make install
useradd mysql

安裝完成後暫不啟動 MySQL,先部署 DRBD。

步驟二:安裝 DRBD

apt-get update && apt-get install drbd8-utils

驗證模組載入:

lsmod | grep drbd
# 輸出包含 drbd 模組即表示成功

步驟三:準備磁碟分區

假設新磁碟為 /dev/sdb,於兩節點建立相同大小的分區 /dev/sdb1 供 DRBD 使用:

fdisk /dev/sdb
# 新建主分區,類型 Linux (83),寫入分區表

步驟四:配置 DRBD

編輯 /etc/drbd.conf,兩節點內容完全一致:

global { usage-count no; }
common { syncer { rate 10M; } }

resource mysql {
    protocol C;
    on DBTest1 {
        device    /dev/drbd0;
        disk      /dev/sdb1;
        address   192.168.0.101:7788;
        meta-disk internal;
    }
    on DBTest2 {
        device    /dev/drbd0;
        disk      /dev/sdb1;
        address   192.168.0.102:7788;
        meta-disk internal;
    }
}

步驟五:啟動 DRBD 並初始化

Primary 節點 (DBTest1)

drbdadm create-md all
/etc/init.d/drbd start
drbdadm primary all
mkfs.ext3 /dev/drbd0
mkdir /dbfile
mount /dev/drbd0 /dbfile

Secondary 節點 (DBTest2)

drbdadm create-md all
/etc/init.d/drbd start
# 從節點無需建立檔案系統,資料會自動同步

步驟六:驗證 DRBD 狀態

執行 cat /proc/drbd,關鍵欄位解讀:

  • cs (連接狀態):Connected 表示雙向通訊正常
  • st (角色狀態):Primary/Secondary 符合預期
  • ds (磁碟狀態):UpToDate/UpToDate 代表資料一致

同步完成後,ds 會顯示 UpToDate/UpToDate。

步驟七:配置 MySQL 使用 DRBD 掛載點

cd /usr/local/mysql
bin/mysql_install_db --datadir=/dbfile --user=mysql

建立 /dbfile/my.cnf,重點設定:

[mysqld]
datadir=/dbfile
basedir=/usr/local/mysql
port=3306
socket=/tmp/mysql.sock
server-id=2
log-bin=DBTest_bin
# 其他效能參數依實際硬體調整

步驟八:故障切換測試

  1. Primary 寫入測試資料:create database crn; create table t(i int); insert into t values(1),(2),(3);
  2. 關閉 Primary MySQL、卸載檔案系統、降級 DRBD:
    mysqladmin shutdown && umount /dbfile && drbdadm secondary all
  3. Secondary 升級為 Primary、掛載、啟動 MySQL:
    drbdadm primary all && mount /dev/drbd0 /dbfile && bin/mysqld_safe --defaults-file=/dbfile/my.cnf --user=mysql &
  4. 查詢資料驗證一致性:use crn; select * from t; 應回傳 1,2,3。

測試通過即證明 DRBD 同步與故障切換機制運作正常。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved