將與資料庫層次裝載資源相關聯的裝載點置於維護模式
您可以在與 TSA 資源模型中資料庫層次裝載資源相關聯的特定裝載點上執行維護。 可以在不影響成員資源可用性的情況下完成維護。 此指令必須以 Db2® 實例擁有者身分執行。
開始之前
在將裝載點置於維護模式之前,需要停止正在存取裝載點上資料的所有活動。 這涉及在相關聯主機上取消啟動資料庫。 對於主機層次維護模式,需要在現行主機上取消啟動資料庫。 對於整個叢集的裝載維護,需要在所有成員主機上取消啟動資料庫。
在應用程式層次,請確定應用程式無法存取位於正在進入維護模式之相關聯主機裝載點上的資料庫。
下面的「使用實務」小節提供需要執行的步驟範例。
關於此作業
有許多實務範例需要將裝載置於維護模式,例如維修基礎磁碟時。 如果使用者解除裝載 TSA 資源模型中與裝載資源相關聯的裝載點,以執行此維護活動, TSA 會關閉主機上的成員資源。 因此,若要避免此行為,使用者必須在執行任何維護活動之前,使用 db2cluster 指令將裝載置於維護模式。
資源模型中有兩種類型的裝載資源:
- 實例層次裝載資源: 對映至實例共用目錄 (sqllib_shared)。
- 資料庫層次裝載資源: 對映至資料庫儲存器的裝載點。
附註: 實例層次裝載資源無法進入維護模式,這些裝載資源定義在叢集中的所有主機上。 資料庫層次裝載資源可以置於維護模式,且這些裝載資源只定義在成員主機上。
限制
- 如果裝載點放置在主機層次維護中,則無法使用 -all 選項將它放置在叢集層面層次裝載維護中。
- 裝載點可以在單一主機裝載維護中的次數,與叢集中一次存在的主機數目相同。 (無仲裁問題)
- 如果多個主機在裝載維護中具有相同的裝載點,則從每個主機結束裝載維護的順序不相關。
- 如果裝載點在所有主機上都處於主機層次維護,則使用者可以使用 -all 選項來結束所有主機上的裝載維護。
- 只要裝載在現行主機上處於維護模式 (透過主機層次維護或叢集層面維護進入) ,使用者就可以在裝載點上結束主機層次裝載維護。
- 單一主機裝載維護指令 (enter 和 exit) 必須在相同主機上執行。
- 所有主機都可以在任何主機上執行裝載維護指令 (enter –all 和 exit –all)。
- 無法在僅限快取機能 CF主機上發出主機層次裝載維護作業。 可以在叢集中的任何成員或 CF 主機上發出叢集層面的裝載維護作業。
防止應用程式連接至特定成員上的資料庫
在高度活躍的環境中,在維護工作完成之前,可能會重新建立與裝載點的連線。 有兩種方法可防止特定成員上資料庫的送入連線:
- 在裝載點上進入維護之前靜止該成員。
- 使用 成員子集設定。
透過先靜止成員,使用者可以在此作業完成之後啟動成員。
若要在裝載點上進入維護之前靜止特定成員,請執行下列動作:
- 執行下列指令,以 靜止特定成員 :
db2stop MEMBER <member> QUIESCE <time_in_minutes>
- 在裝載點上進入維護模式。
- 執行下列指令來啟動成員:
當指令執行時,會關閉成員。 在此期間,使用者無法透過成員連接至任何資料庫。db2start member <member>
若要使用成員子集來防止送入連線至特定成員上的資料庫,請執行下列動作:
- 為資料庫 建立成員子集 ,由 Db2 資料伺服器環境中的所有成員組成。 這可讓應用程式使用建立成員子集中指定的上述資料庫別名來連接至資料庫。
- 從成員子集中捨棄成員,以防止應用程式透過特定成員連接至資料庫。 如需相關資訊,請參閱 在成員子集中新增或移除成員。
附註: 成員子集設定暫行解決方法需要使用者將其所有用戶端機器更新為使用新別名。 視已配置的用戶端機器數目而定,這可能是一項耗時的作業。
範例
- 範例 1: DBA 判定特定裝載點 (/db2data) 需要在特定主機上離線。 在成員 0 起始主機上輸入裝載維護 (/db2data)
- 環境設定:
- 兩個成員及一個 CF: M0、 M1 及 CF128。
- 三個共用檔案系統:
- /db2fs1 -實例層次裝載資源。 sqllib_shared 位於此檔案系統上。
- /db2data -保留資料庫儲存器檔案的檔案系統。
- /db2logs -保留日誌檔的檔案系統。
動作: DBA 計劃讓成員 M0 上的 '/db2data' 離線,以進行維護活動。
步驟:- 使用位於 /db2data上的任何資料庫,強制關閉成員 M0 上的所有應用程式。 透過此成員主動連接至資料庫的應用程式必須遞送至其他成員。
- 從成員 M0 起始主機取消啟動 /db2data 上的資料庫:
db2 deactivate db <dbname> -member 0 -force
- 以成員 M0’s 主機上的實例擁有者身分,在 /db2data: 上輸入裝載維護:
db2cluster -enter -maintenance -mount /db2data
- 驗證成員 M0 主機上的裝載點是否處於維護模式:
db2cluster -verify -maintenance -mount /db2data
- 執行必要的維護工作。
- 以成員 M0’s 主機上的實例擁有者身分,結束裝載維護:
db2cluster -exit -maintenance -mount /db2data
附註: 在高度活躍的環境中,連線可能會在強制作業完成之前重新建立。 如需如何防止送入連線至特定成員上的資料庫的相關資訊,請參閱上方的 防止應用程式連接至特定成員上的資料庫 。 - 範例 2: DBA 決定要在所有主機上離線的特定裝載點 (/data)。 在所有主機上輸入裝載維護 (/data)
- 環境設定:
- 兩個成員及一個 CF: M0、 M1 及 CF128。
- 三個共用檔案系統:
- /db2fs1 -實例層次裝載資源。 sqllib_shared 位於此檔案系統上。
- /data-保留資料庫儲存器檔案的檔案系統。
- /logfiles-保留日誌檔的檔案系統。
動作: DBA 計劃讓所有成員上的 '/data' 離線,以進行維護活動。
步驟:- 使用 /data 上的任何資料庫,強制所有成員上的所有應用程式。
- 靜止位於 /data 上的資料庫:
db2 connect to <dbname> db2 quiesce db immediate
- 在 /data 上取消啟動資料庫:
db2 deactivate db <dbname> -force
- 以任何主機上的實例擁有者身分,在 /data 上輸入所有主機的裝載維護:
db2cluster -enter -maintenance -mount /data -all
- 驗證所有主機上的裝載都處於維護模式:
db2cluster -verify -maintenance -mount /data -all
- 執行必要的維護工作。
- 以任何主機上的實例擁有者身分,從所有主機結束裝載維護:
db2cluster -exit -maintenance -mount /data -all
- 解除靜止 /data 上的資料庫:
db2 connect to <dbname> db2 unquiesce db