本节介绍了以下基本 HADB 配置任务:
命令 hadbm createdomain 可以创建包含指定 HADB 主机的管理域。该命令初始化主机和持久性配置存储之间的内部通信通道。
该命令的语法为:
hadbm createdomain [--adminpassword=password |--adminpasswordfile= file | --no-adminauthentication] [--agent=maurl] hostlist
hostlist 操作数是以逗号分隔的 HADB 主机列表,其中每个主机都是一个有效的 IPv4 网络地址。hostlist 中包含您希望置入新域中的所有主机。
有关命令选项的说明,请参见常规选项。
使用该命令之前,请确保 hostlist 中的每台主机都在运行 HADB 管理代理。此外,这些管理代理必须:
不是现有域的成员。
配置为使用同一端口。
可以使用 IP 多址广播并通过 UDP、TCP 相互访问。
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 之间,包括 1 和 8)。数据设备从 0 开始编号。 |
1 |
-d |
设备的路径。有四种设备:
|
Solaris 和 Linux:/var/opt/SUNWhadb Windows:C:\Sun\AppServer \SUNWhadb\vers,其中 vers 是 HADB 的版本号。 默认值由管理代理配置文件中的 ma.server.dbdevicepath 指定。有关详细信息,请参见配置文件。 |
-z |
每个节点的设备大小。有关更多信息,请参见指定设备大小。 要增加设备大小,请参见为现有节点添加存储空间。 |
1024 MB 最大值小于操作系统文件的最大大小或为 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 对的语法如下,其中仅当 device 为 DataDevice 时才需要 -devno:
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 Message Queue:7676
IIOP:3700
HTTP 服务器:80
管理服务器:4848
HADB 节点:每个节点使用六个连续端口。例如,对于默认端口 15200,节点 0 使用 15200 至 15205,节点 1 使用 15220 至 15225,依此类推。
磁盘空间必须足够;请参见《Sun Java System Application Server 9.1 发行说明》。
您可以分别使用 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 set 命令。有关有效属性的列表,请参见配置属性。
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 | ||
在共享内存中分配的数据缓冲池的大小。 |
200 MB |
16 - 2047 MB |
|
指定节点的设备大小。有关建议的 DataDeviceSize 的信息,请参见指定设备大小。 最大值为 256 GB 或操作系统文件的最大大小,取其中的较小值。最小值为: (4 x LogbufferSize + 16MB) / n 其中 n 为数据设备的数目。 |
1024 MB |
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 替换。) | ||
记录与存储数据相关的操作的节点内部日志设备的大小。 |
12 MB |
4 - 128 MB |
|
数据库的 JDBC 连接 URL。 此属性为只读属性。 |
无 | ||
记录与数据相关的操作的日志缓冲区的大小。 |
48 MB |
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 Database Connectivity (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 连接池之前,需要使用 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 所需的连接池属性。添加节点时,请更改 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 |