本章說明 Sun Java System Application Server Enterprise Edition 環境中的高可用性資料庫 (HADB),並說明如何配置和管理 HADB。建立和管理 HADB 之前,必須首先確定系統拓樸,然後在不同的機器上安裝 HADB 軟體。
本章說明以下主題:
管理代理程式 ma 在 HADB 主機上執行管理指令。管理代理程式還可在 HADB 節點管理程序失敗時將其重新啟動,從而確保 HADB 節點管理程序的可用性。
您可以用以下方式啟動管理代理程式:
做為服務啟動,用於生產。請參閱將管理代理程式做為服務啟動。為確保管理代理程式的可用性,請確定其在系統重新開機時會自動重新啟動。請參閱確保自動重新啟動管理代理程式。
做為常規程序 (在主控台模式中) 啟動,用於試用、測試或開發。請參閱在主控台模式下啟動管理代理程式。
以 Solaris 10 中的服務管理功能 (SMF) 啟動管理代理程式。
對於每種啟動方式,程序會視您使用的是 Java Enterprise System 還是獨立的 Application Server 而有所不同。
將管理代理程式做為服務啟動,可確保其繼續執行,除非系統關閉或您明確停止它。指令視您的安裝與平台而定:
若要將管理代理程式做為服務啟動,請使用以下指令:
/etc/init.d/ma-initd start
若要停止服務,請使用以下指令:
/etc/init.d/ma-initd stop
若要將管理代理程式做為 Windows 服務啟動,請使用以下指令:HADB_install_dir\bin\ma -i [config-file ]
選擇性引數 config-file 用於指定管理代理程式配置檔案。僅在要變更預設管理代理程式配置時使用配置檔案。如需更多資訊,請參閱自訂管理代理程式配置。
若要停止管理代理程式並做為服務移除 (取消註冊),請使用以下指令:HADB_install_dir\bin\ma -r [config-file ]
若要執行管理,請選擇 [管理工具] | [服務] 來執行啟動和停止服務、停用自動啟動等作業。
若要將管理代理程式做為服務啟動,請使用以下指令:
HADB_install_dir/bin/ma-initd start
若要停止服務,請使用以下指令:
HADB_install_dir/bin/ma-initd stop
若要變更預設值,請編輯 shell 程序檔 HADB_install_dir/bin/ma-initd。將 ma-initd 複製至目錄 /etc/init.d。替代程序檔中 HADB_ROOT 和 HADB_MA_CFG 的預設值以反映安裝︰
HADB_ROOT 為 HADB 安裝目錄 HADB_install_dir。
HADB_MA_CFG 為管理代理程式配置檔案的位置。如需更多資訊,請參閱自訂管理代理程式配置。
若要將管理代理程式做為 Windows 服務啟動,請使用以下指令:HADB_install_dir\bin\ma -i [config-file ]
選擇性引數 config-file 用於指定管理代理程式配置檔案。僅在要變更預設管理代理程式配置時使用配置檔案。
若要停止管理代理程式並做為服務移除 (取消註冊),請使用以下指令:HADB_install_dir\bin\ma -r [config-file ]
若要執行管理,請選擇 [管理工具] | [服務] 來執行啟動和停止服務、停用自動啟動等作業。
在產品部署中,請將管理代理程式配置成自動重新啟動。如此一來可確保萬一 ma 程序失敗或作業系統重新開機,管理代理程式依然可用。
在 Windows 平台上,將管理代理程式做為服務啟動後,請即使用 Windows 管理工具將服務啟動類型設定為「自動」,並設定所需的回復選項。
在 Solaris 和 Linux 平台上,請使用本節說明的程序,將管理代理程式配置成自動重新啟動。以下程序可確保管理代理程式僅在系統進入以下執行層級時啟動:
執行層級 3 (Solaris) (預設)。
執行層級 5 (RedHat Linux) (圖形化模式中預設)。
進入其他執行層級會停止管理代理程式。
本小節假設您對作業系統初始化和執行層級已有基本的瞭解。如需有關這些主題的資訊,請參閱作業系統文件。
確定您的系統預設執行層級為 3 或 5。
若要檢查系統的預設執行層級,請檢視 /etc/inittab 檔案,並在頂部附近查找類似下行的內容:
id:5:initdefault:
本範例中為預設執行層級 5。
如建立符號連結所述,請建立符號連結至 /etc/init.d/ma-initd 檔案。
重新開機。
若要關閉自動啟動和停止代理程式,請移除這些連結或將連結名稱中的字母 K 和 S 變更為小寫。
在 shell 中,將目前目錄變更至 HADB_install_dir /bin。
編輯 shell 程序檔 ma-initd。
請確定程序檔中 HADB_ROOT 和 HADB_MA_CFG 的預設值表現您的安裝:
HADB_ROOT 為 HADB 安裝目錄 HADB_install_dir。
HADB_MA_CFG 為管理代理程式配置檔案的位置。如需更多資訊,請參閱自訂管理代理程式配置。
將 ma-initd 複製至目錄 /etc/init.d
如建立符號連結所述,請建立符號連結至 /etc/init.d/ma-initd 檔案。
若要關閉自動啟動和停止代理程式,請移除這些連結或將連結名稱中的字母 K 和 S 變更為小寫。
在 Solaris 中建立下列符號連結:
/etc/rc0.d/K20ma-initd /etc/rc1.d/K20ma-initd /etc/rc2.d/K20ma-initd /etc/rc3.d/S99ma-initd /etc/rc5.d/K20ma-initd (僅適用於 Sun 4m 和 4u 架構) /etc/rc6.d/K20ma-initd /etc/rcS.d/K20ma-initd
在 Linux 中建立下列符號連結:
/etc/rc0.d/K20ma-initd /etc/rc1.d/K20ma-initd /etc/rc3.d/S99ma-initd /etc/rc5.d/S99ma-initd /etc/rc6.d/K20ma-initd
您可能希望在主控台模式下啟動管理代理程式,以便進行試用或測試。請勿在生產環境中以此方式啟動管理代理程式,因為 ma 程序在系統或程序失敗後不會重新啟動,並在指令視窗關閉時終止。指令視您所使用的平台與安裝而定:
若要在主控台模式下啟動 HADB 管理代理程式,請使用以下指令:
opt/SUNWhadb/bin/ma [config-file]
預設管理代理程式配置檔案為 /etc/opt/SUNWhadb/mgt.cfg
若要停止管理代理程式,請結束程序或關閉 shell 視窗。
若要在主控台模式下啟動管理代理程式,請使用以下指令:
HADB_install_dir\bin\ma [config-file]
選擇性引數 config-file 為管理代理程式配置檔案的名稱。如需有關配置檔案的更多資訊,請參閱自訂管理代理程式配置。
若要停止代理程式,請結束此程序。
若要在主控台模式下啟動管理代理程式,請使用以下指令:
HADB_install_dir\bin\ma [config-file]
選擇性引數 config-file 為管理代理程式配置檔案的名稱。如需更多資訊,請參閱自訂管理代理程式配置。
若要停止管理代理程式,請結束此程序。
若要在主控台模式下啟動 HADB 管理代理程式,請使用以下指令:
HADB_install_dir/bin/ma [config-file]
預設管理代理程式配置檔案為 HADB_install_dir/bin/ma.cfg
若要停止管理代理程式,請結束程序或關閉 shell 視窗。
服務管理功能 (SMF) 會提供重新啟動、檢視及管理 Solaris 10 服務的機制。您可以使用 SMF 來啟動、重新啟動並管理 HADB 管理代理程式。
管理代理程式的預設管理資源識別碼 (FMRI) 為 svc:/application/hadb-ma。
管理代理程式 ma 指令的語法是:
ma [common-options] [ service-options] config-file
其中:
common-options 為管理代理程式指令語法中說明的一個或多個共用選項。
service-options 為管理代理程式指令語法中說明的 Windows 服務選項之一。
config-file 為管理代理程式配置檔案的完整路徑。如需更多資訊,請參閱自訂管理代理程式配置。
|
選項 |
說明 |
預設 |
|---|---|---|
|
--define name=value-D |
指定特性名稱的值,其中,特性為配置檔案中定義的特性之一。此選項可重複多次。 |
無 |
|
--help-? |
顯示說明資訊。 |
False |
|
--javahome path-j |
使用位於 path 的 Java Runtime Environment (1.4 或更高版本)。 |
無 |
|
--systemroot path-y |
作業系統根的路徑,通常在 %SystemRoot% 中設定。 |
無 |
|
--version-V |
顯示版本資訊。 |
False |
表 3–2 說明將管理代理程式當成 Windows 服務啟動的選項。-i、-r 和 -s 選項互斥,亦即一次只能使用其中一個。
在 Windows 中,在配置檔案或指令行指定特性值路徑時,使用雙引號 (") 來替換包含空格的檔案路徑。以雙引號和反斜線 "\: 和 \" 替換磁碟機和目錄分隔符號 : 和 \。
表 3–2 管理代理程式服務選項 (僅適用於 Windows)|
選項 |
說明 |
預設 |
|---|---|---|
|
--install-i |
將代理程式安裝做為 Windows 服務,並啟動該服務。僅使用 -i、-r 和 -s 選項其中之一。 |
False |
|
--name servicename-n |
在主機上執行多個代理程式時,使用指定的服務名稱。 |
HADBMgmt Agent |
|
--remove-r |
停止服務並從 Windows 服務管理員刪除代理程式。僅使用 -i、-r 和 -s 選項其中之一。 |
False |
|
--service-s |
將代理程式做為 Windows 服務執行。僅使用 -i、-r 和 -s 選項其中之一。 |
False |
HADB 包括可用於自訂管理代理程式設定的配置檔案。啟動管理代理程式而未指定配置檔案時,代理程式將使用預設值。如果指定了配置檔案,管理代理程式將使用該檔案中的設定。可以在網域中的所有主機上重複使用該配置檔案。
在 Java Enterprise System 上,配置檔案中的所有項目都有加入註釋。使用預設配置無需進行變更。若要自訂管理代理程式配置,請從檔案中移除註釋,按需變更值,然後啟動管理代理程式,並將配置檔案做為引數指定。
管理代理程式配置檔案安裝於:
Solaris 和 Linux:/etc/opt/SUNWhadb/mgt.cfg。
Windows:install_dir \lib\mgt.cfg。
如果使用獨立安裝程式,則管理代理程式配置檔案安裝於:
Solaris 和 Linux:HADB_install_dir /bin/ma.cfg 。
Windows:HADB_install_dir \bin\ma.cfg。
下表說明配置檔案中的設定。
表 3–3 配置檔案設定|
設定名稱 |
說明 |
預設 |
|---|---|---|
console.loglevel |
主控台記錄層級。有效值為 SEVERE、ERROR、WARNING、INFO、FINE、FINER 及 FINEST |
警告 |
logfile.loglevel |
記錄檔記錄層級。有效值為 SEVERE、ERROR、WARNING、INFO、FINE、FINER 及 FINEST |
資訊 |
logfile.name |
記錄檔名稱和位置。必須為具有讀取/寫入存取權限的有效路徑。 |
Solaris 和 Linux:/var/opt/SUNWhadb/ma/ma.log Windows:HADB_install_dir\ma.log |
ma.server.type |
用戶端協定。僅支援 JMXMP。 |
jmxp |
ma.server. jmxmp.port |
用於內部 (UDP) 和外部 (TCP) 通訊的連接埠號。必須為正整數。建議範圍為 1024-49151。 |
1862 |
ma.server. mainternal.interfaces |
用於多介面機器進行內部通訊的介面。必須為有效的 IPv4 位址遮罩。網域中的所有管理代理程式必須使用同一子網路 例如,如果主機具有兩個介面 10.10.116.61 和 10.10.124.61,則使用 10.10.116.0/24 來使用第一個介面。斜線後的數字表示子網路遮罩中的位元數。 |
無 |
ma.server. dbdevicepath |
儲存 HADB 裝置資訊的路徑。 |
Solaris 和 Linux: /var/opt/SUNWhadb/4 Windows:HADB_install_dir \device |
ma.server. dbhistorypath |
儲存 HADB 歷史檔案的路徑。 |
Solaris 和 Linux:/var/opt/SUNWhadb Windows:REPLACEDIR (在執行階段由實際 URL 替代。) |
ma.server. dbconfigpath |
儲存節點配置資料的路徑。 |
Solaris 和 Linux: /var/opt/SUNWhadb/dbdef Windows:C:\Sun\SUNWhadb\dbdef |
repository.dr.path |
網域儲存庫檔案的路徑。 |
Solaris 和 Linux:/var/opt/SUNWhadb/repository Windows:C:\Sun\SUNWhadb\repository |
使用 hadbm 指令行公用程式可管理 HADB 網域、其資料庫實例和節點。hadbm 公用程式 (也稱為管理用戶端) 將管理請求傳送至做為管理伺服器的指定管理代理程式,其具有存取儲存庫中的資料庫配置的權限。
本小節說明 hadbm 指令行公用程式,包括以下主題:
hadbm 公用程式位於 HADB_install_dir /bin 目錄中。hadbm 指令的一般語法為:
hadbm subcommand [-short-option [option-value]] [--long-option [option-value]] [operands]
子指令識別要執行的作業。子指令是區分大小寫的。大部分的子指令都有一個運算元 (通常是 dbname)。
這些選項修改 hadbm 如何執行子指令。這些選項是區分大小寫的。每個選項均具有長形式和短形式。短形式之前為一個破折號 (-),長形式之前為兩個破折號 (--)。除必須存在以打開某項功能的布林選項之外,大多數選項均需要引數值。選項不是成功執行指令所必需的。
如果子指令需要資料庫名稱,但未指定,hadbm 將使用預設資料庫 hadb。
以下說明 status 子指令:
hadbm status --nodes
出於安全原因,所有 hadbm 指令均需要管理員密碼。使用 --adminpassword 選項可在建立資料庫或網域時設定密碼。然後,在該資料庫或網域上執行作業時必須指定該密碼。
出於進階安全性考量,可使用 --adminpasswordfile 選項指定包含密碼的檔案,而不是在指令行輸入密碼。使用以下行在密碼檔案中定義密碼:
HADBM_ADMINPASSWORD=password
使用密碼替代 password。該檔案中的任何其他內容均被忽略。
如果同時指定了 --adminpassword 和 --adminpasswordfile 選項,則 --adminpassword 具有優先權。如果需要密碼,但未在指令中指定,hadbm 會提示您需要密碼。
僅可以在建立資料庫或網域時設定管理員密碼,而且以後無法變更。
除管理員密碼外,HADB 還需要資料庫密碼以執行修改資料庫模式的作業。使用以下指令時必須同時使用這兩個密碼:hadbm create、hadbm addnodes 和 hadbm refragment 。
可使用 --dbpassword 選項在指令行指定資料庫密碼。與管理員密碼類似,您還可以將密碼輸入檔案,並使用 --dbpasswordfile 選項指定檔案位置。使用以下行在密碼檔案中設定密碼:
HADBM_DBPASSWORD=password
為了測試或試用,可以使用 --no-adminauthentication 選項在建立資料庫或網域時關閉密碼認證。如需更多資訊,請參閱建立資料庫和建立管理網域
下表概括了 hadbm 安全性指令行選項。
表 3–4 hadbm 安全性選項
一般指令選項可與任何 hadbm 子指令配合使用。所有選項均為布林選項 (預設值為 false)。下表說明 hadbm 一般指令選項。
表 3–5 hadbm 一般選項|
選項 (短形式) |
說明 |
|---|---|
|
--quiet -q |
不出現訊息執行子指令,無任何說明訊息。 |
|
--help -? |
顯示此指令的簡要說明和所有受支援的子指令。無需子指令。 |
|
--version -V |
顯示 hadbm 指令的版本詳細資訊。無需子指令。 |
|
--yes -y |
在非互動模式下執行子指令。 |
|
--force -f |
非互動執行指令,且在符合指令的發佈條件時不丟出錯誤。 |
|
--echo -e |
顯示子指令、所有選項及其使用者定義的值或預設值,然後執行該子指令。 |
|
--agent=URL -m |
管理代理程式的 URL。URL 為:hostlist:port,其中 hostlist 為逗號分隔的主機名稱或 IP 位址清單,port 為管理代理程式作業時所在的連接埠號。 預設為 localhost:1862。 備註:此選項對於 hadbm addnodes 無效。 |
為方便起見,可以設定環境變數而非指定指令選項。下表說明對應 hadbm 指令選項的環境變數。
表 3–6 HADB 選項與環境變數|
長形式 |
短形式 |
預設 |
環境變數 |
|---|---|---|---|
|
--adminpassword |
-w |
無 |
$HADBM_ADMINPASSWORD |
|
--agent |
--m |
localhost:1862 |
$HADBM_AGENT |
|
--datadevices |
-a |
1 |
$HADBM_DATADEVICES |
|
dbname |
無 |
hadb |
$HADBM_DB |
|
--dbpassword |
-p |
無 |
$HADBM_DBPASSWORD |
|
--dbpasswordfile |
-P |
無 |
$HADBM_DBPASSWORDFILE |
|
--devicepath |
-d |
Solaris 和 Linux:/var/opt/SUNWhadb Windows:C:\Sun\AppServer \SUNWhadb\vers,其中 vers 為 HADB 版本編號。 |
$HADBM_DEVICEPATH |
|
--devicesize |
-z |
無 |
$HADBM_DEVICESIZE |
|
--echo |
-e |
False |
$HADBM_ECHO |
|
--fast |
-F |
False |
$HADBM_FAST |
|
--force |
-f |
False |
$HADBM_FORCE |
|
--help |
-? |
False |
$HADBM_HELP |
|
--historypath |
-t |
Solaris 和 Linux:/var/opt/SUNWhadb Windows:REPLACEDIR (在執行階段由實際 URL 替代)。 |
$HADBM_HISTORYPATH |
|
--hosts |
-H |
無 |
$HADBM_HOSTS |
|
--interactive |
-i |
True |
$HADBM_INTERACTIVE |
|
--no-refragment |
-r |
False |
$HADBM_NOREFRAGMENT |
|
--portbase |
-b |
15200 |
$HADBM_PORTBASE |
|
--quiet |
-q |
False |
$HADBM_QUIET |
|
--repair |
-R |
True |
$HADBM_REPAIR |
|
--rolling |
-g |
True |
$HADBM_ROLLING |
|
--saveto |
-o |
無 |
$HADBM_SAVETO |
|
--set |
-S |
無 |
$HADBM_SET |
|
--spares |
-s |
0 |
$HADBM_SPARES |
|
--startlevel |
-l |
normal |
$HADBM_STARTLEVEL |
|
--version |
-V |
False |
$HADBM_VERSION |
|
--yes |
-y |
False |
$HADBM_YES |
本小節說明以下基本 HADB 配置作業:
hadbm createdomain 指令可建立包含指定 HADB 主機的管理網域。此指令可初始化主機和持續性配置存放區之間的內部通訊通道。
該指令語法為:
hadbm createdomain [--adminpassword=password |--adminpasswordfile= file | --no-adminauthentication] [--agent=maurl] hostlist
hostlist 運算元是以逗號分隔的 HADB 主機清單,其中每一個均為有效的 IPv4 網路位址。希望位於新網域中的所有主機都包括在 hostlist 中。
請參閱一般選項,以取得指令選項說明。
使用此指令之前,請確定 HADB 管理代理程式可在 hostlist 中的每台主機上執行。此外,管理代理程式還必須:
不是現有網域的成員。
配置為使用同一連接埠。
能夠經由 UDP、TCP 和使用 IP 多重播送到達彼此。
hadbm 建立管理網域之後,會啟用網域中的所有主機。然後管理代理程式即可以用於管理資料庫了。建立 HADB 網域之後是建立 HADB 資料庫。如需有關建立 HADB 資料庫的更多資訊,請參閱建立資料庫。
以下範例在四個指定的主機上建立管理網域:
hadbm createdomain --adminpassword= password host1,host2,host3,host4
hadbm 成功執行指令後,會顯示以下訊息:
Domain host1,host2,host3, host4 created.
建立 HADB 網域後,將 HADB 套裝軟體的路徑和版本與管理代理程式一同註冊。
使用此指令建立資料庫之前,請首先建立管理網域並註冊 HADB 套裝軟體。如果在執行 hadbm create 時尚未執行這兩個步驟,則會隱式執行這兩個步驟。雖然這看似需要較少的工作,但任何指令中出現故障均會很難除錯。而且,hadbm create 是不可分割的,即如果其中一個隱式指令失敗,則已成功執行的指令將不會回復。因此,最好僅在建立網域並註冊 HADB 套裝軟體之後建立資料庫。
例如,如果 hadbm createdomain 和 hadbm registerpackage 執行成功,但 hadbm create database 失敗,則 hadbm createdomain 和 hadbm registerpackage 所做的變更仍會保留。
建立管理網域。
如需更多資訊,請參閱建立管理網域
註冊 HADB 套裝軟體。
如需更多資訊,請參閱註冊 HADB 套裝軟體。
使用 hadbm create 指令建立資料庫。
如需有關指令語法的資訊,請參閱以下小節。
dbname 運算元指定資料庫名稱,該名稱必須是唯一的。若要確保資料庫名稱的唯一性,請使用 hadbm list 指令列出現有資料庫名稱。請使用預設資料庫名稱,除非需要建立多個資料庫。例如,若要在同一組 HADB 機器上建立具有獨立資料庫的多個叢集,請為每個叢集使用獨立的資料庫名稱。
hadbm create 指令將錯誤訊息寫入主控台,而非記錄檔。
表 3–7 說明特殊 hadbm create 指令選項。請參閱一般選項,以取得其他指令選項說明。
表 3–7 hadbm create 選項|
選項 (短形式) |
說明 |
預設 |
|---|---|---|
|
-a |
每個節點上的資料裝置數 (1 到 8 [含])。資料裝置從 0 開始計數。 |
1 |
|
-d |
裝置路徑。有四個裝置:
|
Solaris 和 Linux:/var/opt/SUNWhadb Windows:C:\Sun\AppServer \SUNWhadb\vers,其中 vers 為 HADB 版本編號。 預設由管理代理程式配置檔案中的 ma.server.dbdevicepath 指定。如需更多詳細資訊,請參閱配置檔案 |
|
-z |
每個節點的裝置大小。如需更多資訊,請參閱指定裝置大小。 遵循增加現有節點的儲存空間中的說明增加裝置大小。 |
1024MB 最大大小小於最大作業系統檔案大小或 256 GB。最小大小為: (4 x LogbufferSize + 16MB) / n 其中,n 為選項 --datadevices 指定的資料裝置數。 |
|
-t |
歷史檔案的路徑。此路徑必須已經存在且可寫入。 如需有關歷史檔案的更多資訊,請參閱清除和歸檔歷史檔案 |
預設由管理代理程式配置檔案中的 ma.server.dbhistorypath 指定。如需詳細資訊,請參閱配置檔案 Solaris 和 Linux:/var/opt/SUNWhadb Windows:REPLACEDIR (在執行階段由實際 URL 替代。) |
|
-H |
以逗號分隔的資料庫中節點之主機名稱或 IP 位址 (僅 IPv4) 清單。使用 IP 位址可避免對 DNS 查詢的依賴性。主機名稱必須為絕對的。localhost 或 127.0.0.1 不能用做主機名稱。主機名稱 請參閱指定主機,以取得更多資訊。 |
無 |
|
--package=name -k |
HADB 套裝軟體名稱 (版本)。如果找不到套裝軟體,將註冊預設套裝軟體。 已停用此選項。使用 hadbm registerpackage 指令在網域中註冊套裝軟體。 |
無 |
|
--packagepath=path-L |
HADB 軟體套裝軟體的路徑。僅當套裝軟體未在網域中註冊時使用。 已停用此選項。使用 hadbm registerpackage 指令在網域中註冊套裝軟體。 |
無 |
|
-b |
用於節點 0 的連接埠基底號。在步驟 20 中自此數字開始為後繼節點指定連接埠基底號。每個節點使用其連接埠基底號及接下來連續的五個已編號連接埠。 若要在同一機器上執行數個資料庫,請明確配置連接埠號。 |
15200 |
|
-s |
備援節點數。此數字必須等於或小於在 --hosts 選項中指定的節點數。 |
0 |
|
-S |
以逗號分隔的資料庫配置屬性 (格式為 name =value) 清單。如需資料庫配置屬性說明,請參閱清除和歸檔歷史檔案 |
無 |
以下指令為建立資料庫的範例:
hadbm create --spares 2 --devicesize 1024 --hosts n0,n1,n2,n3,n4,n5
可使用 --hosts 選項指定以逗號分隔的資料庫節點之主機名稱或 IP 位址清單。hadbm create 指令可為清單中的每個主機名稱 (或 IP 位址) 建立一個節點。節點數必須相等。使用重複主機名稱在同一機器上建立具有不同連接埠號的多個節點。請確定相同機器上的節點並非鏡像節點,也不是來自不同的 DRU。
節點以此選項中列出的順序自零開始編號。第一個鏡像對為節點零 (0) 和一 (1),第二個為二 (2) 和三 (3),以此類推。奇數編號的節點在一個 DRU 中,偶數編號的節點在其他 DRU 中。使用 --spares 選項,備援節點為編號最大的節點。
如需有關配置雙網路介面的資訊,請參閱配置網路備援
使用 --devicesize 選項可指定裝置大小。建議的裝置大小:
(4x / nd + 4l/d) / 0.99
其中,
x 為使用者資料的總大小
n 為節點數 (由 --hosts 選項指定)
d 為每個節點上的裝置數 (由 --datadevices 選項指定)
l 為記錄緩衝區大小 (由屬性 LogBufferSize 指定)
如果可能會發生重新分段 (例如,使用 hadbm addnodes),則建議的裝置大小為:
(8x / nd + 4l/d) / 0.99
若要為每個節點或服務設定不同的裝置路徑,請使用 hadbm create 的 --set 選項。有四種類型的裝置:DataDevice、NiLogDevice (節點內部記錄裝置)、RelalgDevice (相關代數查詢裝置) 和 NoManDevice (節點管理員裝置)。每個 name =value 對的語法如下,其中,-devno 僅在 device 為 DataDevice 時需要:
node-nodeno.device-devno.Devicepath
例如︰
--set Node-0.DataDevice-0.DevicePath=/disk0, Node-1.DataDevice-0.DevicePath=/disk 1
還可以設定歷史檔案的異質多工式路徑,如下所示:
node-nodeno.historypath=path
如需有關歷史檔案的資訊,請參閱清除和歸檔歷史檔案
未設定的特定節點或裝置裝置路徑均預設為 --devicepath 值。
使用 hadbm set 和 hadbm addnodes 指令變更歷史檔案的裝置路徑和位置。
如果您在建立資料庫時遇到困難,請檢查以下內容:
確定在所有主機上啟動了管理代理程式並定義了 HADB 網域。如需詳細資訊,請參閱啟動管理代理程式
必須設定檔案和目錄權限,以允許以下使用者對安裝、歷史、裝置和配置路徑擁有讀取、寫入和執行存取權限:
Sun Java System Application Server 管理使用者 (安裝期間設定)
HADB 系統使用者
如需有關設定使用者權限的詳細資訊,請參閱準備 HADB 設定
Application Server 和 HADB 連接埠指定不可與同一機器上的其他連接埠指定衝突。建議的預設連接埠指定為:
Sun Java System 訊息佇列:7676
IIOP:3700
HTTP 伺服器:80
管理伺服器:4848
HADB 節點:每個節點使用六個連續的連接埠。例如,對於預設連接埠 15200,節點 0 使用 15200 至 15205 ,節點 1 使用 15220 至 15225,以此類推。
磁碟空間必須足夠,請參閱「Sun Java System Application Server Enterprise Edition 8.2 版本說明」。
可以分別使用hadbm get 和 hadbm set 指令檢視和修改資料庫配置。
若要取得配置屬性值,請使用 hadbm get 指令。如需有效屬性清單,請參閱配置屬性。指令語法為:
hadbm get attribute-list | --all [dbname] [--adminpassword=password | --adminpasswordfile=file] [--agent=maurl]
dbname 運算元指定資料庫名稱。預設為 hadb。
attribute-list 運算元是以逗號分隔或引號引起的、並以空格分隔的屬性清單。--all 選項顯示所有屬性值。如需 hadbm get 的所有屬性清單,請參閱配置屬性。
請參閱一般選項,以取得指令選項說明。
hadbm get JdbcUrl,NumberOfSessions
若要設定配置屬性值,請使用 hadbm get 指令。如需有效屬性清單,請參閱配置屬性
hadbm set [dbname] attribute =value[,attribute= value...] [--adminpassword=password | --adminpasswordfile=file] [--agent=maurl]
dbname 運算元指定資料庫名稱。預設為 hadb。
attribute=value 清單為以逗號分隔或引號引起的、並以空格分隔的屬性清單。
請參閱一般選項,以取得指令選項說明。
如果此指令成功執行,則會重新啟動資料庫,並使其處於資料庫之前所處狀態或更佳狀態。如需有關資料庫狀態的資訊,請參閱取得 HADB 的狀態。依照重新啟動資料庫所述方式重新啟動 HADB。
無法使用 hadbm set 設定以下屬性,而應在建立資料庫時設定 (請參閱建立資料庫)。
DatabaseName
DevicePath
HistoryPath
NumberOfDatadevices
Portbase
JdbcUrl (其值在資料庫建立期間根據 --hosts 和 --portbase 選項設定)。
使用 hadbm set 設定配置屬性 (除 ConnectionTrace 或 SQLTraceMode 之外) 會導致 HADB 的滾動重新啟動。在滾動重新啟動中,會停止每個節點,並使用新的配置啟動,每次一個節點;HADB 服務不會中斷。
如果設定 ConnectionTrace 或 SQLTraceMode,不會發生滾動重新啟動,但變更會僅對 Application Server 實例的 HADB 連線有效。
下表列出可使用 hadbm set 修改和使用 hadbm get 擷取的配置屬性。
表 3–8 配置屬性|
屬性 |
說明 |
預設 |
範圍 |
|---|---|---|---|
|
如果為 true,則初始化或終止用戶端連線 (JDBC、ODBC) 時在 HADB 歷史檔案中記錄訊息。 |
False |
True 或 False |
|
|
請勿變更預設值。 |
False |
True 或 False |
|
|
資料庫名稱。 |
hadb | ||
|
共用記憶體中配置的資料緩衝區池的大小。 |
200MB |
16 - 2047 MB |
|
|
指定節點的裝置大小。如需有關建議的 DataDeviceSize 之資訊,請參閱指定裝置大小 最大值為 256GB 或最大作業系統檔案大小中的較小值。最小值為: (4 x LogbufferSize + 16MB) / n 其中,n 為資料裝置數。 |
1024MB |
32 - 262144 MB |
|
|
PackageName |
資料庫使用之 HADB 軟體套裝軟體的名稱。 |
V4.x.x.x |
無 |
|
裝置位置:裝置為:
|
Solaris 和 Linux:/var/opt/SUNWhadb Windows:C:\Sun\AppServer \SUNWhadb\vers,其中 vers 為 HADB 版本編號。 | ||
|
確定使用的是一般還是急切閒置階段作業過期。 在一般閒置階段作業過期中,閒置超過 SessionTimeout 秒的階段作業將過期。 同步運作的階段作業數超過最大階段作業數的百分之 EagerSessionThreshold 時,閒置超過 EagerSessionTimeout 秒的階段作業將過期。 |
NumberOfSessions 屬性的一半 |
0 - 100 |
|
|
使用急切階段作業過期時,資料庫連線在過期之前可以閒置的時間 (以秒為單位表示) 。 |
120 秒 |
0-2147483647 秒 |
|
|
事件緩衝區的大小,在其中記錄資料庫事件。如果設定為 0,將不執行事件緩衝區記錄。 出現故障期間,將傾印事件緩衝區。這可為故障原因提供有價值的資訊,並在試部署期間提供協助。 將事件寫入記憶體會有效能懲罰。 |
0 MB |
0-2097152 MB |
|
|
HADB 歷史檔案的位置,該檔案包含資訊、警告和錯誤訊息。 此為唯讀屬性。 |
Solaris 和 Linux:/var/opt/SUNWhadb Windows:REPLACEDIR (在執行階段由實際 URL 替代。) | ||
|
節點內部記錄裝置大小,該裝置用於追蹤與儲存資料相關的作業。 |
12MB |
4 - 128 MB |
|
|
資料庫的 JDBC 連線 URL。 此為唯讀屬性。 |
無 | ||
|
記錄緩衝區大小,該緩衝區可追蹤資料相關的作業。 |
48MB |
4 - 2048 MB |
|
|
HADB 資料庫中允許的最大表格數。 |
1100 |
100 - 1100 |
|
|
HADB 節點使用的資料裝置數。 此為唯讀屬性。 |
1 |
1 - 8 |
|
|
HADB 節點配置的鎖定數。 |
50000 |
20000 -1073741824 |
|
|
可為 HADB 節點開啟的最大階段作業 (資料庫連線) 數。 |
100 |
1 - 10000 |
|
|
用於為不同 HADB 程序建立不同的連接埠號之基底連接埠號。 此為唯讀屬性。 |
15200 |
10000 - 63000 |
|
|
相關代數查詢中所使用裝置的大小。 |
128 MB |
32 - 262144 MB |
|
|
使用一般階段作業過期時資料庫連線在過期之前可以閒置的時間數。 |
1800 秒 |
0-2147483647 秒 |
|
|
有關寫入歷史檔案的已執行 SQL 查詢之資訊量。 如果為 SHORT,將記錄登入和登出 SQL 階段作業。如果為 FULL,將記錄所有就緒和執行的 SQL 查詢,包括參數值。 |
NONE |
NONE /SHORT /FULL |
|
|
備援節點允許出現故障的使用中節點執行節點回復的最長時間。如果出現故障的節點無法在此時間間隔內回復,備援節點即開始從出現故障的節點的鏡像複製資料,並變為使用中。建議不要變更預設值。 |
20 秒 |
0 - 100000 秒 |
|
|
HADB 節點將流量和回應時間統計寫入其歷史檔案的間隔。若要停用,請設定為 0。 此為統計行的範例: Req-reply time: # 123, min= 69 avg= 1160 max= 9311 %=100.0 井號 (#) 後的數字為經由 StatInterval 服務的請求數。接下來的三個數字為經由 StatInterval 完成之作業事件的最小、平均和最大時間 (以微秒為單位)。百分比符號 (%) 後的數字為經由 StatInterval 在 15 毫秒內成功完成的作業事件數。 |
600 秒 |
0 - 600 秒 |
|
|
報告給 syslog 時使用的功能。應該配置 syslog 常駐程式 (請參閱 man syslogd.conf, 以取得詳細資訊)。 使用在同一機器上執行的其他應用程式未使用的功能。 設定為 none 可停用 syslog 記錄。 |
local0 |
local0、local1、local2、local3、local4、local5、local6、local7、kern、user、mail、daemon、auth、syslog、lpr、news、uucp、 cron、none |
|
|
如果為 true,HADB 節點會將資訊寫入作業系統 syslog 檔案。 |
True |
True 或 False |
|
|
儲存至作業系統 syslog 檔案的 HADB 訊息之最低層級。將記錄該層級或更高層級的所有訊息。例如,「info」記錄所有訊息。 |
warning |
nonealert errorwarning info |
|
|
插入所有 HADB 寫入 syslog 的訊息之前的文字字串。 |
hadb -dbname | ||
|
節點出現故障及其鏡像接管之間的時間。請勿變更預設值。 |
10000 (毫秒) |
500 - 16000 毫秒 |
Application Server 使用 Java 資料庫連結 (JDBC) API 與 HADB 通訊。asadmin configure-ha-cluster 指令可自動建立 JDBC 連線池,以與 HADB 配合使用 (對於叢集 cluster-name)。連線池的名稱為「cluster-name-hadb-pool」。JDBC 資源的 JNDI URL 為「jdbc/cluster-name-hastore」。
連線池的初始配置通常是充足的。增加節點時,請變更持續的池大小,以便每個 HADB 使用中的節點均具有八條連線。請參閱增加節點。
本小節包含以下主題:
有關連線池和 JDBC 資源的一般資訊,請參閱「Sun Java System Application Server Enterprise Edition 8.2 管理指南」中的第 3 章「JDBC 資源」。
設定 JDBC 連線池之前,需要使用 hadbm get 指令如下所示來確定 HADB 的 JDBC URL:
hadbm get JdbcUrl [dbname]
例如︰
hadbm get JdbcUrl
此指令可顯示 JDBC URL,其形式如下:
jdbc:sun:hadb:host:port, host:port,...
移除 jdbc:sun:hadb: 前綴並使用 host:port, host:port... 部分做為 serverList 連線池特性值,如表 3–10 中所述。
下表概括 HADB 必需的連線池設定。增加節點時變更持續的池大小,但請勿變更其他設定。
表 3–9 HADB 連線池設定|
設定 |
HADB 必需的值 |
|---|---|
|
HADB JDBC 資源的池名稱設定必須參照此名稱 |
|
|
HADB 4.4 |
|
|
取消核取/false |
|
com.sun.hadb.jdbc.ds.HadbDataSource |
|
|
為每個使用中的 HADB 節點使用 8 條連線。如需更多詳細資訊,請參閱系統部署指南。 |
|
|
核取/true |
|
|
meta-data |
|
|
不指定 |
|
|
取消核取/false |
|
|
repeatable-read |
|
|
核取/true |
下表概括 HADB 必需的連線池特性。增加節點時變更 serverList,但請勿變更其他特性。
表 3–10 HADB 連線池特性|
特性 |
說明 |
|---|---|
|
用於 asadmin create-session-store 指令的 storeuser 名稱。 |
|
|
用於 asadmin create-session-store 指令的密碼 (storepassword)。 |
|
|
HADB 的 JDBC URL。若要確定此值,請參閱取得 JDBC URL 如果要增加節點至資料庫,必須變更此值。請參閱增加節點。 |
|
|
為 false 時,必須確保對 Connection.getMetaData() 的呼叫可產生對資料庫的呼叫,才能確保連線有效。 |
|
|
為 true 時,必須透過減少多餘的確定和回復請求並在未開啟任何作業事件時忽略這些請求來提昇效能。 |
|
|
在磁碟機敘述池中快取的每條開啟連線的最大敘述數。此特性設定為 20。 |
此為建立 HADB JDBC 連線池之 asadmin create-jdbc-connection-pool 指令的範例:
asadmin create-jdbc-connection-pool --user adminname --password secret --datasourceclassname com.sun.hadb.jdbc.ds.HadbDataSource --steadypoolsize=32 --isolationlevel=repeatable-read --isconnectvalidatereq=true --validationmethod=meta-data --property username=storename:password=secret456:serverList= host\:port,host\:port, host\\:port,host\:port, host\:port,host\:port :cacheDatabaseMetaData=false:eliminateRedundantEndTransaction=true hadbpool
在 Solaris 上,使用雙反斜線 (\\) 替換特性值內的冒號字元 (:)。在 Windows 上,使用單反斜線 (\) 替換冒號字元 (:)。
下表概括 HADB 必需的 JDBC 資源設定。
表 3–11 HADB JDBC 資源設定|
設定 |
說明 |
|---|---|
|
以下為階段作業持續性配置中的預設 JNDI 名稱:jdbc/hastore。可以使用預設名稱或其他名稱。 在啟動可用性服務時,還必須指定此 JNDI 名稱為 store-pool-jndi-name 持續性存放區特性的值。 |
|
|
在此 JDBC 資源使用的 HADB 連線池名稱 (或 ID) 清單中選取。如需更多資訊,請參閱配置網路備援 |
|
|
核取/true |
通常需要在替代或升級網路、硬體、作業系統或 HADB 軟體時執行管理作業。以下小節說明各種管理作業:
可以在 HADB 網域上執行以下作業:
使用 extenddomain 將主機增加至現有管理網域。指令語法為:
hadbm extenddomain [--adminpassword=password | --adminpasswordfile=file] [--agent=maurl] hostlist
HADB 主機的 IP 位址必須為 IPv4 位址。
如需更多資訊,請參閱 hadbm-extenddomain(1)。
使用 deletedomain to 移除管理網域。指令語法為:
hadbm deletedomain [--adminpassword=password | --adminpasswordfile=file] [--agent=maurl]
如需更多資訊,請參閱 hadbm-deletedomain(1)。
使用 reducedomain 從管理網域中移除主機。指令語法為:
hadbm reducedomain [--adminpassword=password | --adminpasswordfile=file] [--agent=maurl] host_list
如需更多資訊,請參閱 hadbm-reducedomain(1)。
使用 listdomain 列出在管理網域中定義的所有主機。指令語法為:
hadbm listdomain [--adminpassword=password | --adminpasswordfile=file] [--agent=maurl]
如需更多資訊,請參閱 hadbm-listdomain(1)。
可以在個別節點上執行以下作業:
可能需要手動啟動因為使其主機離線以便進行硬體或軟體升級或替代而停止的 HADB 節點。而且,可能需要手動啟動由於某些原因 (而非雙重故障) 無法重新啟動的節點。如需有關如何從雙重故障回復的更多資訊,請參閱清除資料庫。
多數情況下,應該首先嘗試使用 normal 啟動層級啟動節點。如果 normal 啟動層級失敗或逾時,則必須使用 repair 啟動層級。
若要啟動資料庫中的節點,請使用 hadbm startnode 指令。語法為:
hadbm startnode [--adminpassword=password | --adminpasswordfile=file] [--agent=maurl] [--startlevel=level] nodeno [dbname]
dbname 運算元指定資料庫名稱。預設為 hadb。
nodeno 運算元指定要啟動的節點數。使用 hadbm status 可顯示資料庫中所有節點數。
如需更多資訊,請參閱 hadbm-startnode(1)。
hadbm startnode 指令具有一個特殊選項,--startlevel (短形式 -l),可指定要啟動節點的層級。
節點啟動層級有:
normal (預設):使用在節點上本機發現的資料 (記憶體或磁碟上資料裝置檔案中) 啟動節點,並使其與略過的最新更新之鏡像同步。
repair:強制節點捨棄本機資料並從其鏡像複製。
clear:重新初始化節點裝置並強制從其鏡像節點修復資料。需要初始化裝置檔案時使用,在裝置檔案損壞或包含裝置檔案的磁碟被替代時需要。
請參閱一般選項,以取得其他指令選項說明。
hadbm startnode 1
可能需要停止節點以修復或升級主機電腦的硬體或軟體。若要停止節點,請使用 hadbm stopnode 指令。指令語法為:
hadbm stopnode [--adminpassword=password | --adminpasswordfile=file] [--agent=maurl] [--no-repair] nodeno [dbname]
nodeno 運算元指定要停止的節點數。此節點個數的鏡像節點必須正在執行。使用 hadbm status 可顯示資料庫中所有節點數。
dbname 運算元指定資料庫名稱。預設為 hadb。
hadbm stopnode 指令具有一個特殊選項,--no-repair (短形式 -R),表示使用無備援節點替代停止的節點。無此選項時,備援節點會啟動並接管停止的節點。
請參閱一般選項,以取得其他指令選項說明。如需更多資訊,請參閱 hadbm-stopnode(1)。
hadbm stopnode 1
如果發現不正常的運作方式 (例如使用過多的 CPU),則可能需要重新啟動節點。
若要重新啟動資料庫中的節點,請使用 hadbm restartnode 指令。指令語法為:
hadbm restartnode [--adminpassword=password | --adminpasswordfile=file] [--agent=maurl] [--startlevel=level] nodeno [dbname]
dbname 運算元指定資料庫名稱。預設為 hadb。
nodeno 運算元指定要重新啟動的節點數。使用 hadbm status 可顯示資料庫中所有節點數。
hadbm restartnode 指令具有一個特殊選項,--startlevel (短形式 -l),可指定要啟動節點的層級。請參閱啟動層級選項,以取得更多資訊。
請參閱一般選項,以取得其他指令選項說明。如需更多資訊,請參閱 hadbm-restartnode(1)。
hadbm restartnode 1
可以在 HADB 資料庫上執行以下作業:
若要啟動資料庫,請使用 hadbm start 指令。此指令可啟動所有在資料庫停止前執行的節點。個別停止 (離線) 的節點不會在資料庫停止後再啟動時啟動。
指令語法為:
hadbm start [--adminpassword=password | --adminpasswordfile=file] [--agent=maurl] [dbname]
dbname 運算元指定資料庫名稱。預設為 hadb。
請參閱一般選項,以取得指令選項說明。如需更多資訊,請參閱 hadbm-start(1)。
hadbm start
在獨立的作業中停止和啟動資料庫時,資料在停止時不可用。若要使資料可用,可以如重新啟動資料庫中所述重新啟動資料庫。
停止資料庫以:
移除資料庫。
執行影響所有 HADB 節點的系統維護。
停止資料庫前,停止使用資料庫的附屬 Application Server 實例,或將其配置為使用持續性類型而非 ha。
停止資料庫時,資料庫中所有正在執行的節點均會停止,並且資料庫的狀態變為停止。如需有關資料庫狀態的更多資訊,請參閱資料庫狀態。
若要停止資料庫,請使用 hadbm stop 指令。指令語法為:
hadbm stop [--adminpassword=password | --adminpasswordfile= file] [--agent=maurl] [dbname]
dbname 運算元指定資料庫名稱。預設為 hadb。
請參閱一般選項,以取得指令選項說明。如需更多資訊,請參閱 hadbm-stop(1)。
hadbm stop
如果發現奇怪的運作方式 (例如一致逾時問題),可能要重新啟動資料庫。某些情況下,重新啟動可以解決這個問題。
重新啟動資料庫時,資料庫及其資料仍然可用。在獨立作業中停止和啟動 HADB 時,如果 HADB 停止,資料和資料庫服務不可用。這是因為依預設,hadbm restart 會執行節點輪流重新啟動:逐個停止並啟動節點。而 hadbm stop 則是同步停止所有節點。
若要重新啟動資料庫,請使用 hadbm restart 指令。指令語法為:
hadbm restart [--adminpassword=password | --adminpasswordfile=file] [--agent=maurl] [--no-rolling] [dbname]
dbname 運算元指定資料庫名稱。預設為 hadb。
特殊選項 --no-rolling (簡捷形式 -g) 會指定立即重新啟動所有節點,導致服務中斷。無此選項時,此指令會將資料庫中的每個節點重新啟動至目前狀態或更佳的狀態。
請參閱一般選項,以取得其他指令選項說明。如需更多資訊,請參閱 hadbm-restart(1)。
例如︰
hadbm restart
若要列出 HADB 實例中的所有資料庫,請使用 hadbm list 指令。指令語法為:
hadbm list [--agent=maurl] [--adminpassword=password | --adminpasswordfile=file]
請參閱一般選項,以取得指令選項說明。如需更多資訊,請參閱 hadbm-list(1)。
在以下情況時清除資料庫:
hadbm status 指令表明資料庫為不可作業的,或請參閱取得 HADB 的狀態。
多個節點未回應,並長時間處於等待狀態。
自階段作業資料損毀中回復。請參閱回復階段作業資料損壞
hadbm clear 指令可停止資料庫節點、清除資料庫裝置,然後啟動節點。此指令可清除儲存在 HADB 中的 Application Server 模式資料,包括表格、使用者名稱和密碼。執行 hadbm clear 後,請使用 asadmin configure-ha-cluster 重新建立資料模式、重新配置 JDBC 連線池,並重新載入階段作業持續性存放區。
指令語法為:
hadbm clear [--fast] [--spares=number] [--dbpassword=password | --dbpasswordfile= file] [--adminpassword=password | --adminpasswordfile= file] [--agent=maurl] [dbname]
dbname 運算元指定資料庫名稱。預設為 hadb。
下表說明特殊的 hadbm clear 指令選項。請參閱一般選項,以取得其他選項說明。
如需更多資訊,請參閱 hadbm-clear(1)。
表 3–12 hadbm clear 選項|
選項 |
說明 |
預設 |
|---|---|---|
|
-F |
初始化資料庫時略過裝置初始化。如果磁碟儲存裝置損壞,請勿使用。 |
不適用 |
|
-s |
經重新初始化的資料庫將具有的備援節點數。必須等於或小於資料庫中的節點數。 |
之前的備援數 |
例如︰
hadbm clear --fast --spares=2
若要移除現有資料庫,請使用 hadbm delete 指令。此指令可刪除資料庫的配置檔案、裝置檔案和歷史檔案,並可釋放共用記憶體資源。要移除的資料庫必須存在且停止。請參閱停止資料庫。
指令語法為:
hadbm delete [--adminpassword=password | --adminpasswordfile=file] [--agent=maurl] [dbname]
dbname 運算元指定資料庫名稱。預設為 hadb。
請參閱一般選項,以取得指令選項說明。如需更多資訊,請參閱 hadbm-delete(1)。
指令:
hadbm delete
刪除預設資料庫 hadb。
以下為階段作業資料可能已損壞的指示:
每次應用程式嘗試儲存階段作業狀態時,Application Server 系統記錄 (server.log) 中即會顯示錯誤訊息。
伺服器記錄中的錯誤訊息表示找不到階段作業,或者在階段作業啟動期間無法載入。
之前被鈍化後啟動的階段作業包含空的或不正確的階段作業資料。
實例出現故障時,容錯移轉階段作業包含空的或不正確的階段作業資料。
實例出現故障時,嘗試載入容錯移轉階段作業的實例會在伺服器記錄中導致錯誤,表明找不到階段作業或無法載入。
如果您確定階段作業存放區已損壞,請透過以下程序使其返回一致狀態:
清除階段作業存放區。
確定此動作是否更正了問題。如果已更正,則停止。如果沒有 – 例如,如果仍在伺服器記錄中看到錯誤 – 則繼續。
重新初始化所有節點上的資料空間,並清除資料庫中的資料。
請參閱清除資料庫。
確定此動作是否更正了問題。如果已更正,則停止。如果沒有 – 例如,如果仍在伺服器記錄中看到錯誤 – 則繼續。
刪除並重新建立資料庫。
有兩種原因需要延伸原始 HADB 配置:
儲存的階段作業資料容量超出資料裝置中的現有儲存空間。由於資料裝置空間已滿,作業事件可能中斷。
使用者載入增加,耗盡系統資源。需要增加更多主機。
本小節說明如何不關閉 Application Server 叢集或資料庫延伸 HADB,尤其是:
另請參閱維護 HADB 機器中的相關資訊。
增加 HADB 儲存空間:
如果使用者作業事件重複中斷,並顯示以下錯誤訊息之一:
4592: No free blocks on data devices
4593: No unreserved blocks on data devices
如果 hadbm deviceinfo 指令始終報告自由空間不足,請參閱取得裝置資訊。
如果節點上存在未使用的磁碟空間或增加磁碟容量時,還可能要增加現有節點的儲存空間。如需有關建議的資料裝置大小之資訊,請參閱指定裝置大小
若要增加節點的儲存空間,請使用 hadbm set 指令增加資料裝置大小。
hadbm set DataDeviceSize=size
其中,size 為資料裝置大小 (MB)。
請參閱一般選項,以取得指令選項說明。
變更 FaultTolerant 或更高狀態的資料庫資料裝置大小會升級系統,而沒有資料遺失或可用性損失。資料庫在重新配置期間仍在作業。變更非 FaultTolerant 或更好狀態之系統上的裝置大小導致資料遺失。如需有關資料庫狀態的更多資訊,請參閱資料庫狀態。
以下指令為設定資料裝置大小之範例:
hadbm set DataDeviceSize=1024
如果 HADB 需要更多處理或儲存容量,您可能要增加機器。若要新增執行 HADB 的機器,請與 Application Server 一同安裝 HADB 套裝軟體或僅安裝套裝軟體,如第 2 章, 安裝和設定高可用性資料庫中所述。如需節點拓樸替代的說明,請參閱「Sun Java System Application Server Enterprise Edition 8.2 Deployment Planning Guide」中的第 3 章「Selecting a Topology」。
在所有新節點上啟動管理代理程式。
延伸新主機的管理網域。
如需詳細資訊,請參閱 hadbm extenddomain 指令。
啟動這些主機上的新節點。
如需詳細資訊,請參閱增加節點
若要增加 HADB 系統的處理和儲存容量,請建立新節點並將其增加至資料庫。
增加節點後,請更新 HADB JDBC 連線池的以下特性:
serverlist 特性。
持續的池大小。通常可以為每個新節點增加 8 條連線。如需更多資訊,請參閱「Sun Java System Application Server Enterprise Edition 8.2 Deployment Planning Guide」中的「System Sizing」。
若要增加節點,請使用 hadbm addnodes 指令。指令語法為:
hadbm addnodes [--no-refragment] [--spares=sparecount] [--historypath=path] [--devicepath=path] [--set=attr-name-value-list] [--dbpassword=password | --dbpasswordfile=file ] [--adminpassword=password | --adminpasswordfile=file] --hosts=hostlist [dbname]
dbname 運算元指定資料庫名稱。預設為 hadb。資料庫必須處於 HAFaultTolerant 或 FaultTolerant 狀態。如需有關資料庫狀態的更多資訊,請參閱資料庫狀態。
如果未指定 --devicepath 和 --historypath 選項,新節點將具有與現有資料庫相同的裝置路徑,並使用相同的歷史檔案。
增加節點執行重新分段並重新分配現有資料作業,以將新節點包括在系統中。線上重新分段需要用於 HADB 節點的磁碟具有足夠空間以同時包含舊資料和新資料,直至重新分段完成,亦即使用者資料大小不得超過使用者資料可用空間的 50%。如需詳細資訊,請參閱取得裝置資訊
增加節點的最佳時間為系統負載較輕時。
例如︰
hadbm addnodes -adminpassword=password --hosts n6,n7,n8,n9
下表說明特殊的 hadbm addnodes 指令選項。請參閱一般選項,以取得其他選項說明。
表 3–13 hadbm addnodes 選項|
選項 |
說明 |
預設 |
|---|---|---|
|
-r |
建立節點期間請勿重新分段資料庫。在此情況下,可稍後使用 hadbm refragment 指令重新分段資料庫以使用新節點。如需有關重新分段的詳細資訊,請參閱重新分段資料庫 如果沒有足夠的裝置空間進行重新分段,請重新建立包含更多節點的資料庫。請參閱透過重新建立資料庫增加節點 |
不適用 |
|
-s |
除現有備援節點之外的新備援節點數。必須等於或小於增加的節點數。 |
0 |
|
-d |
裝置路徑。裝置為:
|
Solaris 和 Linux:HADB_install_dir/device Windows:C:\Sun\AppServer \SUNWhadb\vers,其中 vers 為 HADB 版本編號。 |
|
-H |
以逗號分隔的資料庫新節點的新主機名稱清單。為清單中每個以逗號分隔的項目建立一個節點。節點數必須相等。HADB 主機的 IP 位址必須為 IPv4 位址。 使用重複主機名稱在同一機器上建立具有不同連接埠號的多個節點。確定同一機器上的節點並非鏡像節點。 奇數編號的節點在一個 DRU 中,偶數編號的節點在其他 DRU 中。如果使用了 --spares,則新的備用節點為編號最大的節點。 如果使用雙網路介面建立資料庫,必須以相同方式配置新節點 。請參閱配置網路備援。 |
無 |
重新分段資料庫以在新建立的節點中儲存資料。重新分段可在所有使用中節點上平均分配資料。
若要重新分段資料庫,請使用 hadbm refragment 指令。指令語法為:
hadbm refragment [--dbpassword=password | --dbpasswordfile=file] [--adminpassword=password | --adminpasswordfile=file] [--agent=maurl] [dbname]
dbname 運算元指定資料庫名稱。預設為 hadb。資料庫必須處於 HAFaultTolerant 或 FaultTolerant 狀態。如需有關資料庫狀態的更多資訊,請參閱取得 HADB 的狀態。
請參閱一般選項,以取得指令選項說明。如需更多資訊,請參閱 hadbm-refragment(1)。
線上重新分段需要用於 HADB 節點的磁碟具有足夠空間以同時包含舊資料和新資料,直至重新分段完成,亦即使用者資料大小不得超過使用者資料可用空間的 50%。如需詳細資訊,請參閱取得裝置資訊
重新分段資料庫的最佳時間為系統負載較輕時。
如果此指令在多次嘗試之後仍然失敗,請參閱透過重新建立資料庫增加節點
例如︰
hadbm refragment
如果線上重新分段在新增節點時始終失敗 (由於資料裝置空間不足或其他原因),請重新建立包含新節點資料庫。這將導致現有使用者資料和模式資料遺失。
此程序可讓您在整個過程中始終維持 HADB 可用性。
對於每個 Application Server 實例:
在負載平衡器中停用 Application Server 實例。
停用階段作業持續性。
重新啟動 Application Server 實例。
在負載平衡器中重新啟用 Application Server 實例。
如果無需維持可用性,可以在負載平衡器中立即停用並重新啟用所有伺服器實例。這會節省時間,並防止過期階段作業資料容錯移轉。
如停止資料庫中所述停止資料庫。
如移除資料庫中所述刪除資料庫。
如建立資料庫中所述重新建立包含附加節點的資料庫。
如配置 JDBC 連線池中所述重新配置 JDBC 連線池。
重新載入階段作業持續性存放區。
對於每個 Application Server 實例:
在負載平衡器中停用 Application Server 實例。
啟用階段作業持續性。
重新啟動 Application Server 實例。
在負載平衡器中重新啟用 Application Server 實例。
如果無需維持可用性,可以在負載平衡器中立即停用並重新啟用所有伺服器實例。這會節省時間,並防止過期階段作業資料容錯移轉。
可以透過以下方式監視 HADB 的活動:
這些小節簡要說明 hadbm status、hadbm deviceinfo 和 hadbm resourceinfo 指令。如需有關解釋 HADB 資訊的資訊,請參閱「Sun Java System Application Server Enterprise Edition 8.2 Performance Tuning Guide」中的「Performance」。
使用 hadbm status 指令可顯示資料庫或其節點的狀態。指令語法為:
hadbm status [--nodes] [--adminpassword=password | --adminpasswordfile=file] [--agent=maurl] [dbname]
dbname 運算元指定資料庫名稱。預設為 hadb。
--nodes 選項 (短形式 -n) 顯示資料庫中每個節點上的資訊。如需更多資訊,請參閱節點狀態。請參閱一般選項,以取得其他指令選項說明。
如需更多資訊,請參閱 hadbm-status(1)。
例如︰
hadbm status --nodes
資料庫的狀態概括其目前情況。下表說明可能的資料庫狀態。
表 3–14 HADB 狀態|
資料庫狀態 |
說明 |
|---|---|
|
高可用性錯誤容錯 (HAFaultTolerant) |
資料庫是錯誤容錯的,並且在每個 DRU 上至少有一個備援節點。 |
|
錯誤容錯 |
所有鏡像的節點對均啟動並在執行。 |
|
可作業 |
每個鏡像的節點對中至少一個節點在執行。 |
|
不可作業 |
一個或多個鏡像的節點對均遺失兩個節點。 如果資料庫不可作業,請按照清除資料庫中的說明清除資料庫。 |
|
已停止 |
資料庫中沒有節點在執行。 |
|
不明的 |
無法確定資料庫的狀態。 |
使用 --nodes 選項 hadbm status 指令可顯示資料庫中每個節點的以下資訊:
可以按照以下小節中的說明變更節點的角色和狀態:
在建立節點期間為其指定角色,角色可以是以下任意一個:
使用中:儲存資料並允許用戶端存取。使用中的節點在鏡像對中。
備援:允許用戶端存取,但不儲存資料。初始化資料裝置後,監視其他資料節點以在其他節點不可用時啟動修復程序。
離線:不提供任何服務,除非角色變更。置回線上時,其角色會變更回先前的角色。
關閉:使用中和離線之間的中間步驟,等待備援節點接管其功能。備援節點接管後,節點即離線。
節點可處於以下任意一種狀態:
正在啟動:節點正在啟動。
等待中:節點無法確定其啟動層級,處於離線狀態。如果某個節點處於此狀態超過兩分鐘,請停止該節點並在 repair 層級啟動節點。請參閱停止節點、啟動節點和清除資料庫。
正在執行:節點正在提供適合其角色的所有服務。
正在停止:節點正在執行停止程序。
已停止:節點為非使用中。禁止修復已停止的節點。
正在回復:節點正在回復。節點出現故障時,鏡像節點會接管出現故障的節點的功能。出現故障的節點嘗試使用主記憶體中或磁碟上的資料和記錄回復。出現故障的節點使用鏡像節點中的記錄擷取在其當機時執行的作業事件。如果回復成功,節點即變為使用中。如果回復失敗,節點狀態變為正在修復。
正在修復:正在修復節點。此作業重新初始化節點並從鏡像節點中複製資料和記錄。修復比回復更為耗時。
監視 HADB 資料 (磁碟儲存) 裝置中的自由空間:
常規檢查磁碟空間的使用趨勢。
做為預防性維護的一部分:如果使用者載入增加,且您要重新調整資料庫配置大小或比例。
做為調整資料庫比例的一部分:執行 hadbm addnodes 新增節點至系統之前,請檢查是否有足夠的裝置空間。請記住,您在現有節點上需要大約 40-50% 的自由空間才能增加節點。
在歷史檔案和 server.log 檔案中看到諸如:
No free blocks on data devices
No unreserved blocks on data devices 之類的訊息時。
使用 hadbm deviceinfo 指令取得有關資料裝置中自由空間的資訊。此指令可顯示資料庫每個節點的以下資訊:
配置的總裝置大小,以 MB 表示 (Totalsize)。
自由空間,以 MB 表示 (Freesize)。
目前裝置使用百分比 (Usage)
指令語法為:
hadbm deviceinfo [--details] [--adminpassword=password | --adminpasswordfile=file] [--agent=maurl] [dbname]
dbname 運算元指定資料庫名稱。預設為 hadb。
--details 選項可顯示以下附加資訊:
裝置讀取作業的次數。
裝置寫入作業的次數。
裝置名稱。
請參閱一般選項,以取得其他指令選項說明。
如需更多資訊,請參閱 hadbm-deviceinfo(1)。
若要確定可用於使用者資料的可用空間,請用總裝置大小減去為 HADB 保留的空間:4 x LogBufferSize + 1% x 裝置大小。如果不知道記錄緩衝區的大小,請使用指令 hadbm get logbufferSize。例如,如果總裝置大小為 128 MB,LogBufferSize 為 24 MB,則可用於使用者資料的空間為 128 – (4 x 24) = 32 MB。在 32 MB 中,一半用於重複的資料,大約百分之一用於索引,僅 25% 可真正用於使用者資料。
使用者資料可用的空間為總大小和保留大小之間的差。如果將來重新分段資料,自由空間大小必須大約等於使用者資料可用空間的 50%。如果重新分段組無關緊要,則資料裝置可達至其最大值。系統裝置空間不足時,資源使用量警告會寫入歷史檔案。
如需有關調校 HADB 的更多資訊,請參閱Sun Java System Application Server Performance Tuning Guide。
以下指令:
hadbm deviceinfo --details
顯示以下範例結果:
NodeNO Totalsize Freesize Usage NReads NWrites DeviceName 0 128 120 6% 10000 5000 C:\Sun\SUNWhadb\hadb.data.0 1 128 124 3% 10000 5000 C:\Sun\SUNWhadb\hadb.data.1 2 128 126 2% 9500 4500 C:\Sun\SUNWhadb\hadb.data.2 3 128 126 2% 9500 4500 C:\Sun\SUNWhadb\hadb.data.3
hadbm resourceinfo 指令可顯示 HADB 執行階段資源資訊。可以使用此資訊協助識別資源內容,並減少效能瓶頸。如需詳細資訊,請參閱「Sun Java System Application Server Enterprise Edition 8.2 Performance Tuning Guide」中的「Tuning HADB」。
指令語法為:
hadbm resourceinfo [--databuf] [--locks] [--logbuf] [--nilogbuf] [--adminpassword=password | --adminpasswordfile=file] [--agent=maurl] [dbname]
dbname 運算元指定資料庫名稱。預設為 hadb。
下表說明 hadbm resourceinfo 特殊指令選項。請參閱一般選項,以取得其他指令選項說明。
如需更多資訊,請參閱 hadbm-resourceinfo(1)。
表 3–15 hadbm resourceinfo 指令選項|
選項 |
說明 |
|---|---|
|
-d |
顯示資料緩衝區池資訊。 請參閱以下資料緩衝區池資訊,以取得更多資訊。 |
|
-l |
顯示鎖定資訊。 請參閱以下鎖定資訊,以取得更多資訊。 |
|
-b |
顯示記錄緩衝區資訊。 請參閱以下記錄緩衝區資訊,以取得更多資訊。 |
|
-n |
顯示節點內部記錄緩衝區資訊。 請參閱以下節點內部記錄緩衝區資訊,以取得更多資訊。 |
資料緩衝區池資訊包含:
NodeNo:節點編號。
Avail:可用的池總空間 (MB)。
Free:可用的自由空間 (MB)。
Access:自啟動至目前從資料庫存取資料緩衝區的累積次數。
Misses:自資料庫啟動至目前已發生頁面錯誤的累計次數。
Copy-on-Write:出於檢查點操作目的而在資料緩衝區中內部複製頁面的累計次數。
使用者作業事件對記錄執行作業時,包含該記錄的頁面必須在資料緩衝區池中。如果不在,將會發生 miss 或頁面錯誤。然後,作業事件必須等待,直至從磁碟上的資料裝置檔案中擷取頁面。
如果遺失率高,請增大資料緩衝區池。因為遺失是累積的,請定期執行 hadbm resourceinfo,並使用兩次執行之間的差異查看遺失率趨勢。如果自由空間非常小,也不必擔心,因為檢查點機制將使新的區段變得可用。
例如︰
NodeNO Avail Free Access Misses Copy-on-Write 0 256 128 100000 50000 10001 256 128 110000 45000 950 |
鎖定資訊如下:
NodeNo:節點編號。
Avail:節點上可用鎖定的總數。
Free:自由鎖定的數目。
Waits:等待獲得鎖定之作業事件數。這是累積數。
一個單一作業事件無法使用節點上超過 25% 的可用鎖定。因此,執行大量作業的作業事件因該瞭解此限制。最好成批執行此類作業事件,其中每一批必須做為獨立作業事件處理,亦即每一批均進行確定。這是必須的,因為以 repeatable read 隔離層級執行的讀取作業與 delete、insert 和 update 作業,都是使用只有在作業事件終止後才會釋放的鎖定。
如要變更 NumberOfLocks,請參閱清除和歸檔歷史檔案。
例如︰
NodeNO Avail Free Waits 0 50000 20000 101 50000 20000 0 |
記錄緩衝區資訊為:
NodeNo:節點編號。
Available:配置給記錄緩衝區的記憶體容量 (MB)
Free:可用記憶體容量 (MB)
如果自由空間非常小,請勿擔心,因為 HADB 會壓縮記錄緩衝區。HADB 從環狀緩衝區開始壓縮,並在連續的記錄上執行壓縮。當 HADB 遇到節點尚未執行且鏡像節點尚未接收的記錄時,壓縮無法繼續
例如︰
NodeNO Avail Free 0 16 21 16 3 |
節點內部記錄緩衝區資訊為:
節點編號。
Available:配置給記錄裝置的記憶體容量 (MB)
Free:可用記憶體容量 (MB)
例如︰
NodeNO Avail Free
0 16 21 16 3
HADB 透過複製鏡像節點上的資料實現錯誤容錯。在生產環境中,鏡像節點位於其鏡像之節點的獨立 DRU 上,如「Sun Java System Application Server Enterprise Edition 8.2 Deployment Planning Guide」中所述。
故障指未預期事件,例如硬體故障、電源故障或作業系統重新開機。HADB 可容錯個體故障:即故障發生在一個節點、一台機器 (無鏡像節點對)、屬於同一 DRU 的一台或多台機器或甚至一個完整 DRU 上。但是,HADB 不會自動從雙重故障回復,即一個或多個鏡像節點對同時發生的故障。如果發生雙重故障,則必須清除 HADB,並重新建立其階段作業存放區 (清除其所有資料)。
有不同的維護程序,取決於您需要在一台機器還是多台機器上工作。
此程序適用於規劃的和未規劃的維護,不會中斷 HADB 可用性。
執行維護程序,並使機器啟動和執行。
確定 ma 正在執行。
如果 ma 以 Windows 服務的形式或在 init.d 程序檔 (建議用於部署) 下執行,則應該已由作業系統啟動。如果沒有,請手動啟動。請參閱啟動管理代理程式。
啟動機器上的所有節點。
如需更多資訊,請參閱啟動節點。
檢查節點是否為使用中且正在執行。
如需更多資訊,請參閱取得 HADB 的狀態
規劃的維護包括硬體和軟體升級等作業。此程序不會中斷 HADB 可用性。
對於第一個 DRU 中的每台備用機器,請逐台重複單一機器程序,如在一台機器上執行維護中所述。
對於第一個 DRU 中的每台使用中機器,逐台重複單一機器程序,如在一台機器上執行維護中所述。
為第二個 DRU 重複步驟 1 和步驟 2。
此程序在 HADB 位於一台或多台機器上時適用。在維護程序期間會中斷 HADB 服務。
檢查資料庫狀態。
請參閱取得 HADB 的狀態
如果資料庫狀態為可作業或更佳:
需要執行未規劃維護的機器不包含鏡像節點。為每台出現故障的機器執行單一機器程序,每次一個 DRU。HADB 伺服器不中斷。
如果資料庫狀態為不可作業:
需要執行未規劃維護的機器包含鏡像節點。此類情況之一為整個 HADB 都在一台出現故障的機器上時。首先啟動並執行所有機器。然後清除 HADB,並重新建立階段作業存放區。請參閱清除資料庫。這會中斷 HADB 服務。
HADB 歷史檔案會記錄所有資料庫作業和錯誤訊息。HADB 附加至現有歷史檔案的結尾,因此檔案隨著時間而增長。若要節省磁碟空間並防止檔案變得過大,請定期清除和歸檔歷史檔案。
若要清除資料庫的歷史檔案,請使用 hadbm clearhistory 指令。
指令語法為:
hadbm clearhistory [--saveto=path] [dbname] [--adminpassword=password | --adminpasswordfile=file] [--agent=maurl]
dbname 運算元指定資料庫名稱。預設為 hadb。
使用 --saveto 選項 (短形式 -o) 可指定在其中儲存舊的歷史檔案之目錄。此目錄必須具有相應的寫入權限。請參閱一般選項,以取得其他指令選項說明。
如需更多資訊,請參閱 hadbm-clearhistory(1)。
hadbm create 指令的 --historypath 選項可確定歷史檔案的位置。歷史檔案的名稱格式為 dbname.out. nodeno。如需有關 hadbm create 的資訊,請參閱建立資料庫
歷史檔案中的各訊息包含以下資訊:
產生訊息之 HADB 程序的縮寫名稱。
訊息類型為:
INF - 一般資訊
WRN - 警告
ERR - 錯誤
DBG - 除錯資訊
時間戳記。時間為主機電腦系統時鐘時間。
節點停止或啟動時,在系統中發生服務設定變更。
有關資源短缺的訊息包含字串「HIGH LOAD」」
無需詳細瞭解歷史檔案中的所有項目。如果出於任何原因您需要更加詳細地研究歷史檔案,請與 Sun 客戶支援連絡。