級別: 中級 |
高級軟件工程師, IBM Watson Research Center
25 日 7 月 2005 年
數據是所有業務的心臟,對數據的訪問的宕機時間應該維持在最少。在本文中,我們將來了解一下如何使用 IBM DB2® Universal Database® 設置并實現一個 Linux ™ 的高可用解決方案,DB2 是一個數據庫管理系統,可以為構建健壯的、隨需應變的業務應用程序提供一個靈活而又節約成本的數據庫平臺。使用這個詳細的指南,您可以設置并運行一個高可用的 DB2 UDB 數據庫。
數據是現代隨需應變業務的血液;存儲和移動數據的系統(服務器、網絡、數據庫)是這個系統的心臟。但是如果沒有 heartbeat —— 對這些數據具有可靠而快速的訪問,且宕機時間最少 —— 那么這兩者都是惰性組件。
簡介
本系列的第一篇文章 Linux 上的高可用中間件,第 1 部分:Heartbeat 和 Apache Web 服務器 簡要介紹了高可用(HA)的概念,以及如何安裝并配置 heartbeat。本篇文章是本系列的最后一篇文章,它將介紹如何在一個 冷備份(cold standby) 配置中使用 heartbeat 為 DB2 UDB 8.1 實現一個 HA 方案。
關于 heartbeat |
在這種實現中,heartbeat 會檢測主節點的失效情況,并發起故障遷移的過程:
為了最好地理解本文的內容,您需要對 DB2 UDB 和高可用集群有一個基本的理解。本系列的第一篇文章 介紹了對于軟件的高可用性來說這意味著什么,以及如何在一個兩節點的系統上使用 High-Availability Linux 項目安裝并設置 heartbeat 軟件。
DB2 UDB 和 HA 基礎
在 heartbeat 集群中使用的任何 DB2 UDB 都必須將數據全部存放在共享磁盤上,這樣在發生節點失效的情況時,就可以在依然存活的機器上訪問這些數據。運行數據庫實例的節點還必須在內部磁盤上維護很多文件。這些文件包括與節點上的所有數據庫有關的文件。
與數據庫實例有關的文件會被分別存放在內部磁盤和外部磁盤上。圖 1 詳細介紹了 DB2 文件系統的組織,它介紹了在我們的測試中針對實例 db2inst1 和數據庫 hadb 的設置。
圖 1. DB2 對實例 db2inst1 和數據庫 hadb 的高可用設置
在該設置中:
安裝數據庫
按照本節中介紹的步驟在主節點和備用節點上安裝 DB2 UDB 8.1。更多信息,請參考 DB2 Information Center(參閱 參考資料):
|
export LD_ASSUME_KERNEL=2.4.19
。
|
./db2setup
。 在這個向導中,使用下面的信息:
表 1. 安裝 DB2 使用的組名/ ID、用戶名/ ID
組名 | GID | 用戶名 | UID |
dasadm1 | 2001 | dasusr1 | 2001 |
db2grp1 | 2002 | db2inst1 | 2002 |
db2fgrp1 | 2003 | db2fenc1 | 2003 |
創建一個高可用的數據庫
按照下面的步驟創建高可用的數據庫 hadb:
su - db2inst1
。 db2iauto
工具啟動:
|
#fmc:2345:respawn:/opt/IBM/db2/V8.1/bin/db2fmcd #DB2 Fault Monitor Coordinator
。 db2start
。 mount /ha
。 db2 create database hadb on /ha
。 db2 connect to hadb
。如果成功,就使用這個命令斷開連接:db2 connect reset
。 db2stop
命令停止 DB2。 mount /ha
。 db2start
。 db2 catalog database hadb on /ha
。 db2 connect to hadb
命令,確??梢赃B接到數據庫 hadb 上。如果成功,就使用 db2 connect reset
命令斷開連接。 db2stop
命令停止 DB2。 配置 heartbeat 來管理 DB2
現在配置 /etc/ha.d/haresources 文件(在主節點和備用節點上都要進行),使其包括管理 DB2 進程的腳本。這個腳本是由 heartbeat 提供的。
修改文件的一部分如下所示:
|
這一行說明在啟動 heartbeat 時,hal 使用集群的 IP 地址,掛載共享文件系統,并啟動數據庫服務器。在停止服務器時,heartbeat 首先要停止數據庫服務器,然后卸載共享文件系統,最后放棄 IP 地址。
測試 DB2 UDB 的故障遷移
本節將介紹如何對高可用的 DB2 數據庫 hadb 進行測試。這可能是本文中所介紹的最為棘手的一項工作,因此要仔細閱讀以下的內容。
在主節點上啟動 heartbeat 服務,然后在備用節點上也啟動 hartbeat 服務。您可以以 root 用戶的身份執行 /etc/rc.d/init.d/heartbeat start
命令。
在成功啟動 heartbeat 之后,您應該會看到一個新的接口,它使用了您在 ha.cf 文件中配置的 IP 地址。在啟動 heartbeat 之后,可以看一下主節點上的日志文件(默認是 /var/log/ha-log),并確保它正在進行 IP 接管,然后又啟動了 DB2。使用 ps
命令確保 DB2 進程正在主節點上運行。heartbeat 將不能在備用節點上啟動任何上述進程,這只能在主節點失效之后才會發生。
db2 -tf /ha/hahbcode/db2/listdb.sql
。這個命令的輸出如下所示:
|
db2 -tf /ha/hahbcode/db2/createdb.sql
。 db2 -tf /ha/hahbcode/db2/insertdb.sql
。 db2 -tf /ha/hahbcode/db2/selectdb.sql
。您應該可以看到在上一個步驟中插入的數據行。運行的結果如下:
|
/etc/rc.d/init.d/heartbeat stop
。您應該會看到在備用節點上,所有的服務都在一分鐘之內啟動起來了。您可以通過檢查 /var/log/ha-log 文件的內容并在備用節點上使用 ps
命令來確認 DB2 正在備用節點上運行。 db2 -tf /ha/hahbcode/db2/listdb.sql
。這個命令的輸出如下所示:
|
db2 -tf /ha/hahbcode/db2/selectdb.sql
。您應該可以看到當 DB2 在節點 ha1 上運行時所插入的數據。我們運行的結果如下:
|
db2 -tf /ha/hahbcode/db2/insertdb.sql
。 /etc/rc.d/init.d/heartbeat start
。您應該會看到所有的服務器在一分鐘之內都在主節點上啟動起來了。您可以通過檢查 /var/log/ha-log 文件的內容并在主節點上使用 ps
命令來確認 DB2 正在主節點上運行。 db2 -tf /ha/hahbcode/db2/selectdb.sql
。您會看到這個表中包含兩行數據了。我們運行的結果如下:
|
這說明在從備用節點到主節點進行故障遷移時,數據得以維護下來了。
結束語
關鍵的數據庫應用程序都需要一種健壯的策略來防止數據丟失,并保證數據存儲的高可用性。DB2 UDB 簡化了具有高可用特性的大型數據庫的管理。
在這篇文章中,您已經看到了如何使用開源軟件和廉價的硬件來簡單而且低成本地為 DB2 UD 數據庫實現一個 HA 的方案。