扩展初始 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 的新计算机,请将 HADB 软件包与 Application Server 安装在一起或单独安装(如第 2 章,安装和设置高可用性数据库所述)。有关节点拓扑选择的说明,请参见《Sun Java System Application Server 9.1 部署规划指南》中的第 3 章 “选择拓扑”。
在新节点上启动管理代理。
将管理域扩展到新主机。
有关详细信息,请参见 hadbm extenddomain 命令。
在这些主机上启动新节点。
有关详细信息,请参见添加节点。
要增加 HADB 系统的处理和存储容量,请创建新节点并将其添加到数据库。
添加节点后,请更新 HADB JDBC 连接池的以下属性:
serverlist 属性。
稳定的池大小。通常,需要为每个新节点再添加 8 个连接。有关更多信息,请参见《Sun Java System Application Server 9.1 部署规划指南》中的“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 实例。
如果不需要维持可用性,则可以同时禁用并重新启用负载平衡器中的所有服务器实例。这样可以节省时间并防止过期会话数据故障转移。