• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 第 5 部分: IBM DB2 Universal Database

    發表于:2007-05-25來源:作者:點擊數: 標簽:
    使用 DB2 UDB 設置并實現一個高可用的數據庫 級別: 中級 Hidayatullah Shaikh (hshaikh@us.ibm.com) 高級 軟件工程 師, IBM Watson Research Center 25 日 7 月 2005 年 數據是所有業務的心臟,對數據的訪問的宕機時間應該維持在最少。在本文中,我們將來了
    使用 DB2 UDB 設置并實現一個高可用的數據庫

    級別: 中級

    Hidayatullah Shaikh (hshaikh@us.ibm.com)
    高級軟件工程師, 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 是 Linux-HA 項目中提供的一個公用包(鏈接請參閱本文后面的 參考資料 部分)。Heartbeat 提供了 HA 系統所需要的基本功能,例如啟動/停止資源,監視集群中系統的可用性,在集群節點之間切換共享的 IP 地址信息。Heartbeat 還可以通過一個串口線或以太網接口來監視特定服務(或多個服務)的健康信息。當前的版本支持一個兩節點的配置,其中使用特殊的 heartbeat "pings" 來檢查服務的狀態和可用性。

    在這種實現中,heartbeat 會檢測主節點的失效情況,并發起故障遷移的過程:

    • 在主節點上停止 DB2 進程
    • 在主節點上釋放共享磁盤
    • 在主節點上釋放該服務的 IP 地址
    • 將這個服務的 IP 地址添加到備用節點上
    • 在備用節點上加載這個共享磁盤
    • 在備用機器上重新啟動 DB2 進程

    為了最好地理解本文的內容,您需要對 DB2 UDB 和高可用集群有一個基本的理解。本系列的第一篇文章 介紹了對于軟件的高可用性來說這意味著什么,以及如何在一個兩節點的系統上使用 High-Availability Linux 項目安裝并設置 heartbeat 軟件。

    DB2 UDB 和 HA 基礎
    在 heartbeat 集群中使用的任何 DB2 UDB 都必須將數據全部存放在共享磁盤上,這樣在發生節點失效的情況時,就可以在依然存活的機器上訪問這些數據。運行數據庫實例的節點還必須在內部磁盤上維護很多文件。這些文件包括與節點上的所有數據庫有關的文件。

    與數據庫實例有關的文件會被分別存放在內部磁盤和外部磁盤上。圖 1 詳細介紹了 DB2 文件系統的組織,它介紹了在我們的測試中針對實例 db2inst1 和數據庫 hadb 的設置。

    圖 1. DB2 對實例 db2inst1 和數據庫 hadb 的高可用設置
    DB2 對實例 db2inst1 和數據庫 hadb 的高可用設置

    在該設置中:

    • 機器 ha1 用作主 DB2 UDB 數據庫機器。
    • 機器 ha2 用作節點 ha1 的備用機器。
    • 每個節點都有所安裝的 DB2 UDB 8.1 的一個本地副本。
    • 數據庫 hadb 特定的目錄(db2inst1/NODE0000/SQL00001 和 db2inst1/NODE0000/sqldbdir)將保留在共享文件系統(/ha)上。

    安裝數據庫
    按照本節中介紹的步驟在主節點和備用節點上安裝 DB2 UDB 8.1。更多信息,請參考 DB2 Information Center(參閱 參考資料):

    1. 以 root 用戶身份登錄。

    2. 使用下面的命令解壓 DB2 UDB 8.1 的安裝映像文件:

      clearcase/" target="_blank" >cccccc" border="1">
      
                      rm -rf /tmp/db28.1-install
                      mkdir /tmp/db28.1-install
                      tar xf C48THML.tar -C /tmp/db28.1-install
                      


      這里的 C48THML.tar 是安裝的 tar 文件。

    3. 設置內核級別:export LD_ASSUME_KERNEL=2.4.19。

    4. 不要使用 IBM Developer Kit for Linux,即 DB2 安裝光盤中提供的 Java 2 Technology Edition。使用 IBM 1.4.2 JDK 來替換 DB2 中提供的 JDK。

      
                      cd /tmp/db28.1-install/009_ESE_LNX_32_NLV
                      mv ./db2/linux/java ./db2/linux/java.db2
                      ln -s /opt/IBMJava2-142 ./db2/linux/java
                      


    5. 使用下面的命令啟動 DB2 安裝向導:./db2setup。

    在這個向導中,使用下面的信息:

    • 對于 Product to install,請使用 DB2 UDB Enterprise Server Edition。
    • 對于 Group and User IDs,組 ID(gid)和用戶 ID(uid)域的值在兩臺機器上必須匹配。我們使用表 1 中給出的 ID 值。
    • 對于 Partition,請選擇 single-partition instance。
    • 對于 DB2 Instance Name,請選擇 db2inst1。

    表 1. 安裝 DB2 使用的組名/ ID、用戶名/ ID

    組名 GID 用戶名 UID
    dasadm1 2001 dasusr1 2001
    db2grp1 2002 db2inst1 2002
    db2fgrp1 2003 db2fenc1 2003

    創建一個高可用的數據庫
    按照下面的步驟創建高可用的數據庫 hadb:

    1. 以 db2inst1 用戶的身份在主節點(ha1)和備用節點(ha2)上登錄:su - db2inst1。

    2. 確保 DB2(R) 實例在 ha1 和 ha2 兩個節點上都不會在啟動時(以 db2inst1 的身份)使用 db2iauto 工具啟動:

      
                      cd sqllib/bin
                      ./db2iauto -off db2inst1
                      


    3. 修改 /etc/inittab 文件,以正確運行 DB2 HA。在節點 ha1 和 ha2 上注釋掉在系統啟動時啟動 DB2 的那一行,如下所示:#fmc:2345:respawn:/opt/IBM/db2/V8.1/bin/db2fmcd #DB2 Fault Monitor Coordinator。

    4. 在主節點 ha1 上啟動 DB2:db2start。

    5. 在備用節點(ha2)上以 root 用戶的身份使用下面的命令掛載文件系統 /ha:mount /ha。

    6. 在節點 ha1 上使用下面的命令創建數據庫 hadb:db2 create database hadb on /ha。

    7. 在節點 ha1 上使用下面的命令確??梢赃B接到數據庫 hadb 上:db2 connect to hadb。如果成功,就使用這個命令斷開連接:db2 connect reset。

    8. 在節點 ha1 上使用 db2stop 命令停止 DB2。

    9. 在備用節點(ha2)上以 root 用戶的身份使用下面的命令掛載文件系統 /ha: mount /ha。

    10. 在備用節點上使用下面的命令啟動 DB2:db2start。

    11. 以 db2instl 用戶的身份在節點 ha2 上執行下面的命令,對數據庫 hadb 進行 catalog 操作:db2 catalog database hadb on /ha。

    12. 在節點 ha2 上使用 db2 connect to hadb 命令,確??梢赃B接到數據庫 hadb 上。如果成功,就使用 db2 connect reset 命令斷開連接。

    13. 在節點 ha2 上使用 db2stop 命令停止 DB2。

    配置 heartbeat 來管理 DB2
    現在配置 /etc/ha.d/haresources 文件(在主節點和備用節點上都要進行),使其包括管理 DB2 進程的腳本。這個腳本是由 heartbeat 提供的。

    修改文件的一部分如下所示:

    
                ha1.haw2.ibm.com 9.22.7.46
                Filesystem::hanfs.haw2.ibm.com:/ha::/ha::nfs::rw,hard db2::db2inst1
                

    這一行說明在啟動 heartbeat 時,hal 使用集群的 IP 地址,掛載共享文件系統,并啟動數據庫服務器。在停止服務器時,heartbeat 首先要停止數據庫服務器,然后卸載共享文件系統,最后放棄 IP 地址。

    測試 DB2 UDB 的故障遷移
    本節將介紹如何對高可用的 DB2 數據庫 hadb 進行測試。這可能是本文中所介紹的最為棘手的一項工作,因此要仔細閱讀以下的內容。

    1. 在主節點上啟動 heartbeat 服務,然后在備用節點上也啟動 hartbeat 服務。您可以以 root 用戶的身份執行 /etc/rc.d/init.d/heartbeat start 命令。

      在成功啟動 heartbeat 之后,您應該會看到一個新的接口,它使用了您在 ha.cf 文件中配置的 IP 地址。在啟動 heartbeat 之后,可以看一下主節點上的日志文件(默認是 /var/log/ha-log),并確保它正在進行 IP 接管,然后又啟動了 DB2。使用 ps 命令確保 DB2 進程正在主節點上運行。heartbeat 將不能在備用節點上啟動任何上述進程,這只能在主節點失效之后才會發生。

    2. 在 ha1 節點上以 db2instl 的身份檢查數據庫的狀態:db2 -tf /ha/hahbcode/db2/listdb.sql。這個命令的輸出如下所示:

      
                      Active Databases
                      Database name                              = HADB
                      Applications connected currently           = 0
                      Database path                              = /ha/db2inst1/NODE0000/SQL00001/
                      


    3. 在節點 ha1 上以 db2instl 的身份創建一個測試表(hadb.TestHATable),方法如下:db2 -tf /ha/hahbcode/db2/createdb.sql。

    4. 現在,在節點 ha1 上以 db2instl 的身份向測試表中插入一行數據:db2 -tf /ha/hahbcode/db2/insertdb.sql。

    5. 在節點 ha1 上以 db2instl 的身份查看測試表的內容:db2 -tf /ha/hahbcode/db2/selectdb.sql。您應該可以看到在上一個步驟中插入的數據行。運行的結果如下:

      
                      [db2inst1@ha1 db2inst1]$ db2 -tf /ha/hahbcode/db2/selectdb.sql
                      Database Connection Information
                      Database server        = DB2/LINUX 8.1.0
                      SQL authorization ID   = DB2INST1
                      Local database alias   = HADB
                      COL1        COL2
                      ----------- ------------
                      10 Hello
                      1 record(s) selected.
                      DB20000I  The SQL command completed successfully.
                      


    6. 為了模擬故障遷移的情況,我們只需要在主節點上以 root 用戶的身份來停止 heartbeat 即可:/etc/rc.d/init.d/heartbeat stop。您應該會看到在備用節點上,所有的服務都在一分鐘之內啟動起來了。您可以通過檢查 /var/log/ha-log 文件的內容并在備用節點上使用 ps 命令來確認 DB2 正在備用節點上運行。

    7. 在節點 ha2 上以 db2instl 的身份檢查數據庫的狀態:db2 -tf /ha/hahbcode/db2/listdb.sql。這個命令的輸出如下所示:

      
                      Active Databases
                      Database name                              = HADB
                      Applications connected currently           = 0
                      Database path                              = /ha/db2inst1/NODE0000/SQL00001/
                      


    8. 在節點 ha2 上以 db2instl 的身份查看測試表(hadb.TestHATable)的內容:db2 -tf /ha/hahbcode/db2/selectdb.sql。您應該可以看到當 DB2 在節點 ha1 上運行時所插入的數據。我們運行的結果如下:

      
                      [db2inst1@ha2 db2inst1]$ db2 -tf /ha/hahbcode/db2/selectdb.sql
                      Database Connection Information
                      Database server        = DB2/LINUX 8.1.0
                      SQL authorization ID   = DB2INST1
                      Local database alias   = HADB
                      COL1        COL2
                      ----------- ------------
                      10 Hello
                      1 record(s) selected.
                      DB20000I  The SQL command completed successfully.
                      


      這說明在從主節點到備用節點進行故障遷移時,數據得以維護下來了。

    9. 在節點 ha2 上以 db2instl 的身份向測試表中插入一行數據:db2 -tf /ha/hahbcode/db2/insertdb.sql。

    10. 您可以在主節點上以 root 用戶的身份啟動 heartbeat 來啟動主節點:/etc/rc.d/init.d/heartbeat start。您應該會看到所有的服務器在一分鐘之內都在主節點上啟動起來了。您可以通過檢查 /var/log/ha-log 文件的內容并在主節點上使用 ps 命令來確認 DB2 正在主節點上運行。

    11. 在節點 ha1 上以 db2instl 的身份檢查測試表的內容:db2 -tf /ha/hahbcode/db2/selectdb.sql。您會看到這個表中包含兩行數據了。我們運行的結果如下:

      
                      [db2inst1@ha1 db2inst1]$ db2 -tf /ha/hahbcode/db2/selectdb.sql
                      Database Connection Information
                      Database server        = DB2/LINUX 8.1.0
                      SQL authorization ID   = DB2INST1
                      Local database alias   = HADB
                      COL1        COL2
                      ----------- ------------
                      10 Hello
                      10 Hello
                      2 record(s) selected.
                      DB20000I  The SQL command completed successfully.
                      

      這說明在從備用節點到主節點進行故障遷移時,數據得以維護下來了。

    結束語
    關鍵的數據庫應用程序都需要一種健壯的策略來防止數據丟失,并保證數據存儲的高可用性。DB2 UDB 簡化了具有高可用特性的大型數據庫的管理。

    在這篇文章中,您已經看到了如何使用開源軟件和廉價的硬件來簡單而且低成本地為 DB2 UD 數據庫實現一個 HA 的方案。

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>