Sun Java System Application Server 9.1 高可用性管理指南

配置 HADB

本小節說明以下基本 HADB 配置作業:

建立管理網域

hadbm createdomain 指令可建立包含指定 HADB 主機的管理網域。此指令可初始化主機和持續性配置存放區之間的內部通訊通道。

該指令語法為:

hadbm createdomain
 [--adminpassword=password |--adminpasswordfile=
file | --no-adminauthentication] [--agent=maurl]
 hostlist

hostlist 運算元是以逗號分隔的 HADB 主機清單,其中每一個均為有效的 IPv4 網路位址。希望位於新網域中的所有主機都包括在 hostlist 中。

請參閱一般選項,以取得指令選項說明。

使用此指令之前,請確定 HADB 管理代理程式可在 hostlist 中的每台主機上執行。此外,管理代理程式還必須:

hadbm 建立管理網域之後,會啟用網域中的所有主機。然後管理代理程式即可以用於管理資料庫了。建立 HADB 網域之後是建立 HADB 資料庫。如需有關建立 HADB 資料庫的更多資訊,請參閱建立資料庫


範例 3–2 建立 HADB 管理網域

以下範例在四個指定的主機上建立管理網域:

hadbm createdomain --adminpassword= password host1,host2,host3,host4

hadbm 成功執行指令後,會顯示以下訊息:

Domain host1,host2,host3, host4 created.

建立 HADB 網域後,將 HADB 套裝軟體的路徑和版本與管理代理程式一同註冊。


建立資料庫

使用 hadbm create 指令手動建立資料庫。

使用此指令建立資料庫之前,請首先建立管理網域並註冊 HADB 套裝軟體。如果在執行 hadbm create 時尚未執行這兩個步驟,則會隱式執行這兩個步驟。雖然這看似需要較少的工作,但任何指令中出現故障均會很難除錯。而且,hadbm create 是不可分割的,即如果其中一個隱式指令失敗,則已成功執行的指令將不會回復。因此,最好僅在建立網域並註冊 HADB 套裝軟體之後建立資料庫。

例如,如果 hadbm createdomainhadbm registerpackage 執行成功,但 hadbm create database 失敗,則 hadbm createdomainhadbm registerpackage 所做的變更仍會保留。

Procedure建立資料庫

  1. 建立管理網域。

    如需更多資訊,請參閱建立管理網域

  2. 註冊 HADB 套裝軟體。

    如需更多資訊,請參閱註冊 HADB 套裝軟體

  3. 使用 hadbm create 指令建立資料庫。

    如需有關指令語法的資訊,請參閱以下小節。

hadbm create 指令語法

hadbm create [--package=name] [--packagepath=path] [--historypath=path] [--devicepath=path] [--datadevices=number ] [--portbase=number] [--spares=number ] [--set=attr-val-list] [--agent=maurl] [--no-cleanup] [ --no-clear ] [ --devicesize =size] [--dbpassword=password | --dbpasswordfile=file ] --hosts=host list [--adminpassword=password | --adminpasswordfile=file | --no-adminauthentication ] [dbname ]

dbname 運算元指定資料庫名稱,該名稱必須是唯一的。若要確保資料庫名稱的唯一性,請使用 hadbm list 指令列出現有資料庫名稱。請使用預設資料庫名稱,除非需要建立多個資料庫。例如,若要在同一組 HADB 機器上建立具有獨立資料庫的多個叢集,請為每個叢集使用獨立的資料庫名稱。

hadbm create 指令將錯誤訊息寫入主控台,而非記錄檔。

表 3–7 說明特殊 hadbm create 指令選項。請參閱一般選項,以取得其他指令選項說明。

表 3–7 hadbm create 選項

選項 (短形式) 

說明 

預設 

--datadevices= number

-a 

每個節點上的資料裝置數 (1 到 8 [含])。資料裝置從 0 開始計數。 

--devicepath= path

-d 

裝置路徑。有四個裝置: 

  • DataDevice

  • NiLogDevice (節點內部記錄裝置)

  • RelalgDevice (相關代數查詢裝置)

  • NoManDevice (節點管理員裝置)。

    此路徑必須存在且可寫入。若要為每個節點或每個裝置設定不同的此路徑,請參閱設定異質多工式裝置路徑

Solaris 和 Linux:/var/opt/SUNWhadb

Windows:C:\Sun\AppServer \SUNWhadb\vers,其中 vers 為 HADB 版本編號。

預設由管理代理程式配置檔案中的 ma.server.dbdevicepath 指定。如需更多詳細資訊,請參閱配置檔案

--devicesize= size

-z 

每個節點的裝置大小。如需更多資訊,請參閱指定裝置大小

遵循增加現有節點的儲存空間中的說明增加裝置大小。

1024MB 

最大大小小於最大作業系統檔案大小或 256 GB。最小大小為: 

(4 x LogbufferSize + 16MB) / n

其中,n 為選項 --datadevices 指定的資料裝置數。

--historypath= path

-t 

歷史檔案的路徑。此路徑必須已經存在且可寫入。 

如需有關歷史檔案的更多資訊,請參閱清除和歸檔歷史檔案

預設由管理代理程式配置檔案中的 ma.server.dbhistorypath 指定。如需詳細資訊,請參閱配置檔案

Solaris 和 Linux:/var/opt/SUNWhadb

Windows:REPLACEDIR (在執行階段由實際 URL 替代。) 

--hosts= hostlist

-H 

以逗號分隔的資料庫中節點之主機名稱或 IP 位址 (僅 IPv4) 清單。使用 IP 位址可避免對 DNS 查詢的依賴性。主機名稱必須為絕對的。localhost127.0.0.1 不能用做主機名稱。

請參閱指定主機,以取得更多資訊。

無 

--package=name -k

HADB 套裝軟體名稱 (版本)。如果找不到套裝軟體,將註冊預設套裝軟體。 

已停用此選項。使用 hadbm registerpackage 指令在網域中註冊套裝軟體。 

無 

--packagepath=path-L

HADB 軟體套裝軟體的路徑。僅當套裝軟體未在網域中註冊時使用。 

已停用此選項。使用 hadbm registerpackage 指令在網域中註冊套裝軟體。 

無 

--portbase= number

-b 

用於節點 0 的連接埠基底號。在步驟 20 中自此數字開始為後繼節點指定連接埠基底號。每個節點使用其連接埠基底號及接下來連續的五個已編號連接埠。 

若要在同一機器上執行數個資料庫,請明確配置連接埠號。 

15200 

--spares= number

-s 

備援節點數。此數字必須等於或小於在 --hosts 選項中指定的節點數。

--set=attr-val-list

-S 

以逗號分隔的資料庫配置屬性 (格式為 name =value) 清單。如需資料庫配置屬性說明,請參閱清除和歸檔歷史檔案

無 


範例 3–3 建立資料庫範例

以下指令為建立資料庫的範例:

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

其中,

設定異質多工式裝置路徑

若要為每個節點或服務設定不同的裝置路徑,請使用 hadbm create--set 選項。有四種類型的裝置:DataDeviceNiLogDevice (節點內部記錄裝置)、RelalgDevice (相關代數查詢裝置) 和 NoManDevice (節點管理員裝置)。每個 name =value 對的語法如下,其中,-devno 僅在 deviceDataDevice 時需要:

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 sethadbm addnodes 指令變更歷史檔案的裝置路徑和位置。


疑難排解

如果您在建立資料庫時遇到困難,請檢查以下內容:

檢視和修改配置屬性

可以分別使用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 的所有屬性清單,請參閱配置屬性

請參閱一般選項,以取得指令選項說明。


範例 3–4 使用 hadbm get 之範例

hadbm get JdbcUrl,NumberOfSessions

設定配置屬性值

若要設定配置屬性值,請使用 hadbm set 指令。如需有效屬性清單,請參閱配置屬性

hadbm set [dbname] attribute
=value[,attribute=
value...]
 [--adminpassword=password | --adminpasswordfile=file]
 [--agent=maurl]

dbname 運算元指定資料庫名稱。預設為 hadb

attribute=value 清單為以逗號分隔或引號引起的、並以空格分隔的屬性清單。

請參閱一般選項,以取得指令選項說明。

如果此指令成功執行,則會重新啟動資料庫,並使其處於資料庫之前所處狀態或更佳狀態。如需有關資料庫狀態的資訊,請參閱取得 HADB 的狀態。依照重新啟動資料庫所述方式重新啟動 HADB。

無法使用 hadbm set 設定以下屬性,而應在建立資料庫時設定 (請參閱建立資料庫)。


備註 –

使用 hadbm set 設定配置屬性 (除 ConnectionTraceSQLTraceMode 之外) 會導致 HADB 的輪替式重新啟動。在輪替式重新啟動中,會停止每個節點,並使用新的配置啟動,每次一個節點;HADB 服務不會中斷。

如果設定 ConnectionTraceSQLTraceMode,不會發生輪替式重新啟動,但變更會僅對 Application Server 實例的 HADB 連線有效。


配置屬性

下表列出可使用 hadbm set 修改和使用 hadbm get 擷取的配置屬性。

表 3–8 配置屬性

屬性 

說明 

預設 

範圍 

ConnectionTrace

如果為 true,則初始化或終止用戶端連線 (JDBC、ODBC) 時在 HADB 歷史檔案中記錄訊息。 

False 

True 或 False 

CoreFile

請勿變更預設值。 

False 

True 或 False 

DatabaseName

資料庫名稱。 

hadb 

 

DataBufferPoolSize

共用記憶體中配置的資料緩衝區池的大小。 

200MB 

16 - 2047 MB 

DataDeviceSize

指定節點的裝置大小。如需有關建議的 DataDeviceSize 之資訊,請參閱指定裝置大小

最大值為 256GB 或最大作業系統檔案大小中的較小值。最小值為: 

(4 x LogbufferSize + 16MB) / n

其中,n 為資料裝置數。

1024MB 

32 - 262144 MB 

PackageName 

資料庫使用之 HADB 軟體套裝軟體的名稱。 

V4.x.x.x 

無 

DevicePath

裝置位置:裝置為: 

  • 資料裝置 (DataDevice)

  • 節點內部記錄裝置 (NiLogDevice)

  • 相關代數查詢裝置 (RelalgDevice)

Solaris 和 Linux:/var/opt/SUNWhadb

Windows:C:\Sun\AppServer \SUNWhadb\vers,其中 vers 為 HADB 版本編號。

 

EagerSessionThreshold

確定使用的是一般還是急切閒置階段作業過期。 

在一般閒置階段作業過期中,閒置超過 SessionTimeout 秒的階段作業將過期。

同步運作的階段作業數超過最大階段作業數的百分之 EagerSessionThreshold 時,閒置超過 EagerSessionTimeout 秒的階段作業將過期。

NumberOfSessions 屬性的一半 

0 - 100 

EagerSessionTimeout

使用急切階段作業過期時,資料庫連線在過期之前可以閒置的時間 (以秒為單位表示) 。 

120 秒 

0-2147483647 秒 

EventBufferSize

事件緩衝區的大小,在其中記錄資料庫事件。如果設定為 0,將不執行事件緩衝區記錄。

出現故障期間,將傾印事件緩衝區。這可為故障原因提供有價值的資訊,並在試部署期間提供協助。 

將事件寫入記憶體會有效能懲罰。 

0 MB

0-2097152 MB 

HistoryPath

HADB 歷史檔案的位置,該檔案包含資訊、警告和錯誤訊息。 

此為唯讀屬性。 

Solaris 和 Linux:/var/opt/SUNWhadb

Windows:REPLACEDIR (在執行階段由實際 URL 替代。) 

 

InternalLogbufferSize

節點內部記錄裝置大小,該裝置用於追蹤與儲存資料相關的作業。 

12MB 

4 - 128 MB 

JdbcUrl

資料庫的 JDBC 連線 URL。 

此為唯讀屬性。 

無 

 

LogbufferSize

記錄緩衝區大小,該緩衝區可追蹤資料相關的作業。 

48MB 

4 - 2048 MB 

MaxTables

HADB 資料庫中允許的最大表格數。 

1100 

100 - 1100 

NumberOfDatadevices

HADB 節點使用的資料裝置數。 

此為唯讀屬性。 

1 - 8 

NumberOfLocks

HADB 節點配置的鎖定數。 

50000 

20000 -1073741824 

NumberOfSessions

可為 HADB 節點開啟的最大階段作業 (資料庫連線) 數。 

100 

1 - 10000 

PortBase

用於為不同 HADB 程序建立不同的連接埠號之基底連接埠號。 

此為唯讀屬性。 

15200 

10000 - 63000 

RelalgDeviceSize

相關代數查詢中所使用裝置的大小。 

128 MB 

32 - 262144 MB 

SessionTimeout

使用一般階段作業過期時資料庫連線在過期之前可以閒置的時間數。 

1800 秒 

0-2147483647 秒 

SQLTraceMode

有關寫入歷史檔案的已執行 SQL 查詢之資訊量。 

如果為 SHORT,將記錄登入和登出 SQL 階段作業。如果為 FULL,將記錄所有就緒和執行的 SQL 查詢,包括參數值。

NONE 

NONE /SHORT /FULL 

StartRepairDelay

備援節點允許出現故障的使用中節點執行節點回復的最長時間。如果出現故障的節點無法在此時間間隔內回復,備援節點即開始從出現故障的節點的鏡像複製資料,並變為使用中。建議不要變更預設值。 

20 秒 

0 - 100000 秒 

StatInterval

HADB 節點將流量和回應時間統計寫入其歷史檔案的間隔。若要停用,請設定為 0。 

此為統計行的範例: 

Req-reply time: # 123, min= 69 avg= 1160 max= 9311 %=100.0

井號 (#) 後的數字為經由 StatInterval 服務的請求數。接下來的三個數字為經由 StatInterval 完成之作業事件的最小、平均和最大時間 (以微秒為單位)。百分比符號 (%) 後的數字為經由 StatInterval 在 15 毫秒內成功完成的作業事件數。

600 秒 

0 - 600 秒 

SyslogFacility

報告給 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 

SysLogging

如果為 true,HADB 節點會將資訊寫入作業系統 syslog 檔案。

True 

True 或 False 

SysLogLevel

儲存至作業系統 syslog 檔案的 HADB 訊息之最低層級。將記錄該層級或更高層級的所有訊息。例如,「info」記錄所有訊息。

warning 

nonealert errorwarning info 

SyslogPrefix

插入所有 HADB 寫入 syslog 的訊息之前的文字字串。

hadb -dbname 

 

TakeoverTime

節點出現故障及其鏡像接管之間的時間。請勿變更預設值。 

10000 (毫秒) 

500 - 16000 毫秒 

配置 JDBC 連線池

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 9.1 高可用性管理指南」

取得 JDBC URL

設定 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 連線池特性

特性 

說明 

username

用於 asadmin create-session-store 指令的 storeuser 名稱。

password

用於 asadmin create-session-store 指令的密碼 (storepassword)。

serverList

HADB 的 JDBC URL。若要確定此值,請參閱取得 JDBC URL

如果要增加節點至資料庫,必須變更此值。請參閱增加節點

cacheDatabaseMetaData

false 時,必須確保對 Connection.getMetaData() 的呼叫可產生對資料庫的呼叫,才能確保連線有效。

eliminateRedundantEndTransaction

true 時,必須透過消除冗余確定和回復請求並在未開啟任何作業事件時忽略這些請求來提昇效能。

maxStatement

在磁碟機敘述池中快取的每條開啟連線的最大敘述數。此特性設定為 20


範例 3–5 建立連線池

此為建立 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 上,使用單反斜線 (\) 替換冒號字元 (:)。


建立 JDBC 資源

下表概括 HADB 必需的 JDBC 資源設定。

表 3–11 HADB JDBC 資源設定

設定 

說明 

JNDI 名稱

以下為階段作業持續性配置中的預設 JNDI 名稱:jdbc/hastore。可以使用預設名稱或其他名稱。

在啟動可用性服務時,還必須指定此 JNDI 名稱為 store-pool-jndi-name 持續性存放區特性的值。

池名稱

在此 JDBC 資源使用的 HADB 連線池名稱 (或 ID) 清單中選取。如需更多資訊,請參閱配置網路備援

資料來源已啟用

核取/true