使用者應保留 HADB 歷史檔案、管理代理程式配置檔案、記錄檔和儲存庫,以及所有安裝路徑之外的資料裝置。否則,應在升級之前執行此作業。若要移動管理儲存庫和配置檔案︰
請停止所有舊管理代理程式並保持 HADB 節點處於執行狀態。
在每個節點上,將儲存庫目錄移動至新位置。
在每個節點上,將 dbconfig 目錄複製到新位置。
在每個主機上,更新 mgt.cfg 檔案,並設定正確的 dbconfig 路徑和儲存庫目錄。
使用已更新的 mgt.cfg 檔案啟動管理代理程式。
若要從 HADB 版本 4.4.x 升級至版本 4.4.3,請執行以下步驟:
如有必要,執行上述升級前作業。
在所有 HADB 主機上安裝 HADB 版本 4.4.3 (位於與版本 4.4.x 不同的其他路徑上,例如位於 /opt/SUNWhadb/4.4.3)。
在 hadbm 用戶端主機上安裝 HADB 版本 4.4.3 (如果這些主機的路徑與 HADB 主機的路徑不同)。
停止在 HADB 主機上執行的所有管理代理程式。
使用新版本的軟體和舊配置檔案啟動管理代理程式程序。在剩餘的步驟中,請使用新版本的 bin 目錄中的 hadbm 指令。
在管理網域中註冊套裝軟體 (預設套裝軟體名稱變為 V4.4,因此其他套裝軟體的名稱可能需要避免與現有的具有相同名稱之套裝軟體發生衝突):
hadbm registerpackage --packagepath=/opt/SUNWhadb/4.4.3 V4.4.3 |
執行 hadbm listpackages 指令並檢查是否已在網域中註冊新的套裝軟體。
使用新的 hadbm 版本 4.4.3 重新啟動資料庫。如有必要移動裝置和歷史檔案,請執行線上升級,並在同一作業中為裝置和歷史檔案設定新路徑:
hadbm set packagename=V4.4.3,devicepath=new_devpath, historypath=new_histpath |
否則,如果裝置和歷史檔案已經存在於安裝目錄之外,請執行以下指令,這個指令僅會輪替地重新啟動節點︰
hadbm set packagename=V4.4.3 database name |
檢查資料庫是否處於「正在執行」的狀態 (使用 hadbm status 指令),以及是否運作正常並可為用戶端作業事件提供服務。
如果一切正常,則稍後可移除舊的安裝。在取消註冊舊的套裝軟體之前,請先從 ma 儲存庫移除所有對舊的套裝軟體之參照。否則,hadbm unregisterpackage 將會失敗並顯示「套裝軟體正在使用中」。虛擬重新配置作業 (例如 hadbm set connectiontrace=same as previous value) 將會移除所有對舊套裝軟體的參照。現在,取消註冊舊套裝軟體︰
hadbm unregisterpackage [--hosts=host-list] old pacakge name |
從系統中移除舊的安裝。
在 Solaris 上,若要測試升級是否成功,請檢查是否正確執行升級︰
確保正在執行的程序使用新的二進位檔。在所有 HADB 節點中,檢查以下各項︰
new path/bin/ma -v new path/bin/hadbm -v |
檢查資料庫是否正在執行。以下指令應該顯示所有 HADB 節點處於「正在執行」狀態。
new path/bin/hadbm status -n |
確保使用 HADB 的產品已將其指標變更為指向新的 HADB 路徑。
使用 HADB 的產品可以執行自己的升級測試以驗證 HADB 升級也可以工作。
線上升級之後,如果新的版本無法正常工作,請重新使用舊的 HADB 版本。但是,如果變更管理代理程式儲存庫,則 HADB 本身可能被降級,但新的管理代理程式必須保持執行狀態。
本節列出有關 HADB 部署和升級的其他資訊。
僅在本機磁碟上儲存裝置、記錄和歷史檔案,請勿使用遠端掛載的檔案系統。
如果一個主機上具有多個節點,則建議您保持裝置屬於不同磁碟上的每個節點。否則,磁碟競爭狀態會降低效能。此問題可從歷史檔案中顯示的訊息 (如 BEWARE - last flush/fputs took too long) 得知。當單一節點具有多個資料裝置檔案時,建議您對這些裝置檔案使用獨立的磁碟。
使用本機磁碟 (最好對資料檔案使用獨立的磁碟,而非一個磁碟) 以在 HADB 主機上安裝 HADB 二進位檔。NFS 延遲或磁碟競爭狀態可能導致節點重新啟動,並在歷史檔案中顯示警告「Process blocked for nnn, max block time is nnn」。
請勿將 HADB 裝置、歷史檔案、管理代理程式目錄和代理程式配置檔案置於 HADB 套裝軟體路徑。這會導致在升級至更新版本並刪除舊套裝軟體路徑時出現問題。
此 HADB 版本正式支援最多 28 個節點;24 個使用中資料節點,4 個備用節點。
建議您使用相同版本的 JDBC 驅動程式和 HADB 伺服器。
不支援 IPv6,僅支援 IPv4。
在 Windows 上的指令行長度限制在 2048 位元組之內。
必須為 UDP 多重播送配置網路。
由於在 RedHat Enterprise Linux 3.0 update 1 至 3 中曾出現過度交換,因此不建議將其作為部署平台。此問題已在 RedHat Enterprise Linux 3.0 update 4 中修正。
執行具有即時優先權之 NSUP 的可能性。
節點監督員 (NSUP) 程序 (clu_nsup_srv ) 在及時交換「活動訊號」訊息的協助下,可確保 HADB 的高可用性。當 NSUP 與其他導致資源匱乏的程序佈建在相同位置時,計時會受到影響。結果是虛假的網路分割和節點重新啟動 (會先在歷史檔案中顯示警告「Process blocked for n seconds」) 造成作業事件中斷和其他異常。
若要解決此問題,clu_nsup_srv (位於 installpath/lib/server) 必須包含 suid 位元集,且檔案必須由 root 所有。這可透過以下指令手動歸檔︰
# chown root clu_nsup_srv # chmod u+s clu_nsup_srv |
如此會導致在啟動時將 clu_nsup_srv 程序作為使用者 root 執行,並且依次允許程序在啟動後自動授予自己即時優先權。為了避免因使用 setuid 而造成任何安全性影響,會在每次開始時設定即時優先權,而且優先權一旦變更,程序即恢復有效的 uid。其他 HADB 程序會將其優先權降低為分時共用優先權。
若 NSUP 無法設定即時優先權,則會發出警告「Could not set realtime priority」(unix: errno will be set to EPERM),其會寫入 ma.log 檔案,並在沒有即時優先權的情況下繼續。
在某些情況下不可能設定即時優先權,例如︰
安裝在 Solaris 10 非全域區域中時
在 Solaris 10 中呼叫 PRIV_PROC_LOCK_MEMORY (允許程序在實體記憶體中鎖定頁面) 和/或 PRIV_PROC_PRIOCNTL 優先權時
使用者關閉 setuid 權限
使用者將軟體安裝為 tar 檔案 (App.server 的非根安裝選項)
clu_nsup_srv 程序不會大量消耗 CPU,其佔用空間很小且使用即時優先權來執行它不會影響效能。
對於 Solaris,為 HADB 配置 IP 網路多重路徑 (僅在 Solaris 9 經過測試)。
Sun 建議將執行 HADB 的 Solaris 主機進行網路多重路徑設定,以確保最高的可能網路可用性。在「IP Network Multipathing Administration Guide」中,詳細介紹了網路多重路徑設定。如果您決定配合使用多重路徑和 HADB,請參閱「IP Network Multipathing Administration Guide」中的「Administering Network Multipathing」小節 ,以便在您根據以下說明調整多重路徑設定以配合使用 HADB 之前,設定多重路徑。「IP Network Multipathing Administration Guide」是「Solaris 9 System Administrator Collection」中的一部份,並可以從 http://docs.sun.com 下載。
設定網路介面故障偵測時間
為了讓 HADB 能夠正確支援多重路徑容錯移轉,網路介面故障偵測時間不得超過 1000 毫秒,如 /etc/default/mpathd 中之 FAILURE_DETECTION_TIME 參數所指定。若原始值高於此值,請編輯檔案並將此參數的值變更為 1000︰
FAILURE_DETECTION_TIME=1000 |
為了使變更生效,發出以下指令︰
pkill -HUP in.mpathd |
與 HADB 配合使用的 IP 位址
如在「Solaris IP Network Multipathing Administration Guide」中所說明的,多重路徑涉及將實體網路介面分組為多重路徑介面群組。在此群組中的每個實體介面均具有兩個相關的 IP 位址︰實體介面位址和測試位址。只有實體介面位址可以用於傳輸資料,而測試位址僅供 Solaris 內部使用。如果執行 hadbm create --hosts,每個主機均應該僅使用多重路徑群組中的一個實體介面位址來指定。
範例
假設主機 1 和主機 2 分別具有兩個實體網路介面。在每個主機上,這兩個介面均設定為多重路徑群組,且執行 ifconfig -a 會產生以下結果︰
主機 1
bge0: flags=1000843<mtu 1500 index 5 inet 129.159.115.10 netmask ffffff00 broadcast 129.159.115.255 groupname mp0 bge0:1: flags=9040843<mtu 1500 index 5 inet 129.159.115.11 netmask ffffff00 broadcast 129.159.115.255 bge1: flags=1000843<mtu 1500 index 6 inet 129.159.115.12 netmask ffffff00 broadcast 129.159.115.255 groupname mp0 bge1:1: flags=9040843<mtu 1500 index 6 inet 129.159.115.13 netmask ff000000 broadcast 129.159.115.255 |
主機 2
bge0: flags=1000843<mtu 1500 index 3 inet 129.159.115.20 netmask ffffff00 broadcast 129.159.115.255 groupname mp0 bge0:1: flags=9040843<mtu 1500 index 3 inet 129.159.115.21 netmask ff000000 broadcast 129.159.115.255 bge1: flags=1000843<mtu 1500 index 4 inet 129.159.115.22 netmask ffffff00 broadcast 129.159.115.255 groupname mp0 bge1:1: flags=9040843<mtu 1500 index 4 inet 129.159.115.23 netmask ff000000 broadcast 129.159.115.255 |
其中,這兩個主機上的實體網路介面即會列為 bge0 和 bge1 介面。如「IP Network Multipathing Administration Guide」中所述,列為 bge0:1 與 bge1:1 的介面是多重路徑測試介面 (因而在 ifconfig 輸出中標為 DEPRECATED)。
若要在此環境中設定 HADB,請從每個主機中選取一個實體介面。在此範例中,從主機 1 中選擇 129.159.115.10,從主機 2 中選擇 129.159.115.20。每個主機若要使用一個資料庫節點建立資料庫,請將以下引數用於 hadbm create︰
--host 129.159.115.10,129.159.115.20 |
每個主機若要使用兩個資料庫節點建立資料庫,請使用以下引數︰
--host 129.159.115.10,129.159.115.20,129.159.115.10,129.159.115.20 |
在這兩種情況下,在每個主機上均應將 ma.server.mainternal.interfaces 變數設定為 129.159.115.0/24。
不可能從 4.2 或 4.3 線上升級至 4.4。但是,4.4 支援線上升級至將來的版本。若要從 4.4.1 升級至 4.4.2,請執行以下步驟︰
在所有 HADB 主機上安裝 4.4.2 (在與 4.4.1 路徑不同的路徑上—例如 /opt/SUNWhadb/4.4.2-6)。
在 hadbm client 主機上安裝新版本。
在 HADB 主機上,停止正在執行的所有管理代理程式。
使用新版本的軟體和舊配置檔案啟動管理代理程式程序。在其餘的步驟中,請使用新版本 bin 目錄中的 hadbm 指令。
在管理網域中註冊套裝軟體 (此處預設套裝軟體名稱變為 V4.4,所以可能會要求其他套裝軟體名稱,以避免與具有相同名稱的現有套裝軟體發生衝突):
hadbm registerpackage --packagepath=/opt/SUNWhadb/4.4.2-6 V4.4.2 |
重新啟動新版本的資料庫 (以下指令會輪替地重新啟動節點):
hadbm set packagename=V4.4.2 database_name |
檢查資料庫狀態是否為「正在執行」(使用 hadbm status 指令),以及是否正常工作並為用戶端作業事件提供服務。
若均能正常運作,則稍後即可移除舊的安裝。
在取消註冊舊的套裝軟體之前,請先從 ma 儲存庫移除所有對舊的套裝軟體的參照。否則,hadbm unregisterpackage 將會失敗,並顯示「套裝軟體正在使用中」。虛擬重新配置作業 (例如 hadbm set connectiontrace=<same_as_previous_value>) 將會移除所有對舊套裝軟體的參照。現在,取消註冊舊套裝軟體︰
hadbm unregisterpackage [--hosts=<host_list>] <old_package_name> |
依照 HADB 安裝說明中的說明,從檔案系統中移除舊的安裝。