使用WebSphere中间件构建数据库环境
为主要计算机上的每个数据库配置 HADR 变量。(此处显示的步骤仅适用于主要计算机。)必须对每个数据库重复此过程。在设置这些变量时,请验证 hard_local_host 和 hard_remote_host 变量是否引用了正确的计算机。而且,hadr_local_svc 和 hadr_remote_svc 变量必须与上述 /etc/services 文件中定义的名称相匹配。下面我们以“Sample”数据库为例进行说明:
清单 2. Sample 数据库的 HADR 变量
请通过输入此命令来验证您的配置值,如清单 3 所示:
清单 4. 主要计算机上的备份数据库
db2 restore db <database_name> from <temp_restore_directory> replace history file
清单 5. 将数据库还原到备用计算机上
请注意,端口 60000 是主要计算机上的 DB2 实例端口号。
清单 6. 备用计算机上 Sample 数据库的 HADR 变量
在备用计算机上,首先禁用数据库,然后发出 start hadr 命令,将其作为备用数据库启动(清单 7)。
db2 get snapshot for db on <database_name> | grep Role
在 HADR 状态角色下,您将看到用于备用计算机的“Standby”状态和用于主要计算机的“Primary”状态。如果得不到每个数据库的正确标识符,则需要检查前面的所有步骤。
在备用计算机和主要计算机上的数据库成功启动后,您需要确保两个数据库处于同步状态。否则,故障转移将无法成功进行,从而会导致发生不希望的结果,如数据丢失。发出以下命令,以检查主要和备用数据库计算机上两个数据库的状态:
db2 get snapshot for database on <database_name> | grep State
您需要等待备用数据库连接到主要数据库之后,才能使两个数据库处于对等模式。在数据库处于对等模式之后,主要计算机和备用计算机上的 DB2 HADR 服务器就准备就绪可供使用了。
清单 2. Sample 数据库的 HADR 变量
上例中,NEARSYNC 被选为同步模式。此模式虽然比 SYNC 模式提供较少的事务丢失保护,但比 SYNC 模式的事务响应时间要短一些。注意,清单 2 中的最后命令可以为 DB2 HADR 启用自动客户端重新路由功能,并且端口 60000 是备用计算机上的 DB2 实例端口号。>db2 update db cfg for Sample using hadr_local_host <primary machine IP address>
>db2 update db cfg for Sample using hadr_remote_host <standby machine IP address>
>db2 update db cfg for Sample using hadr_local_svc ha_sample
>db2 update db cfg for Sample using hadr_remote_svc ha_sample_int
>db2 update db cfg for Sample using hadr_remote_inst <DB2 instance name on the standby>
>db2 update db cfg for Sample using hadr_timeout 120
>db2 update db cfg for Sample using hadr_syncmode nearsync
>db2 update db cfg for Sample using logretain on
>db2 update db cfg for Sample using LOGINDEXBUILD on
>db2 update alternate server for database Sample using hostname <Standby IP address>
port 60000
请通过输入此命令来验证您的配置值,如清单 3 所示:
清单 3. 主要计算机上 Sample 数据库的 HADR 配置db2 get db cfg for <database_name> | grep HADR
现在,我们可以从主要计算机上备份数据库,并将其还原到备用计算机上。下面的命令将备份主要计算机上的数据库(如清单 4 中所示。)您需要对每个数据库重复此命令。请注意,您无法对正在连接其客户端应用程序的数据库执行备份。>db2 get db cfg for sample | grep HADR
HADR database role = STANDARD
HADR local host name (HADR_LOCAL_HOST) = svtlewis.rchland.ibm.com
HADR local service name (HADR_LOCAL_SVC) = ha_sample
HADR remote host name (HADR_REMOTE_HOST) = svtclark.rchland.ibm.com
HADR remote service name (HADR_REMOTE_SVC) = ha_sample_int
HADR instance name of remote server (HADR_REMOTE_INST) = db2inst1
HADR timeout value (HADR_TIMEOUT) = 120
HADR log write synchronization mode (HADR_SYNCMODE) = NEARSYNC
每个数据库的备份副本将存储在 <temp_backup_directory> 中。cd <temp_backup_directory>
db2 backup db <database_name>
清单 4. 主要计算机上的备份数据库
将主要机计算机上生成的备份文件传输到备用计算机。要将数据库还原到备用计算机,请使用您的 DB2 用户 ID 登录到备用计算机。下面的命令将把数据库还原到备用计算机上(清单 5)。您需要对每个数据库重复此命令:>cd tmpdir
>db2 backup db sample
Backup successful. The timestamp for this backup image is :20061101161943
db2 restore db <database_name> from <temp_restore_directory> replace history file
清单 5. 将数据库还原到备用计算机上
在将所有数据库还原到备用计算机上之后,必须将清单 6 中所示的用于各个数据库的所有 DB2 HADR 变量从主要 DB2 服务器复制到备用服务器。从备用 DB2 服务器的角度看,主要 DB2 服务器就是远程主机。因此,您需要修改备用计算机上的 hadr_local_host、hadr_remote_host、hadr_local_svc 和 hadr_remote_svc 值。另外,必须更新自动客户端重新路由,以指向主要计算机。>cd tmpdir
>db2 restore db sample replace history file
DB20000I The RESTORE DATABASE command completed successfully.
请注意,端口 60000 是主要计算机上的 DB2 实例端口号。
清单 6. 备用计算机上 Sample 数据库的 HADR 变量
在主要计算机或备用计算机上启动 DB2 HADR 之前,正确设置所有 HADR 参数的值非常重要。如果这些参数中任何一个参数为空或者配置不正确,DB2 HADR 服务器都不会正常启动。另外,还需要先在备用计算机上启动 DB2 HADR,然后才可以在主要计算机上启动它。>db2 update db cfg for Sample using hadr_local_host <standby machine IP address>
>db2 update db cfg for Sample using hadr_remote_host <primary machine IP address>
>db2 update db cfg for Sample using hadr_local_svc ha_sample_int
>db2 update db cfg for Sample using hadr_remote_svc ha_sample
>db2 update alternate server for database Sample using hostname <Primary machine IP
address> port 60000
在备用计算机上,首先禁用数据库,然后发出 start hadr 命令,将其作为备用数据库启动(清单 7)。
清单 7. 禁用 Sample 并将其作为备用数据库启动db2 deactivate db <database_name>
db2 start hadr on db <database_name> as standby
在主要计算机上,首先激活数据库,然后发出 start hadr 命令将其作为主要数据库启动(清单 8)。>db2 deactivate db sample
>db2 start hadr on db sample as standby
DB20000I The START HADR ON DATABASE command completed successfully
>db2 get snapshot for db on sample | grep Role
Role = Standby
清单 8. 激活 Sample 并将其作为主要数据库启动db2 activate db <database_name>
db2 start hadr on db <database_name> as primary
在启动 DB2 HADR 服务器时,您会收到一条指示“START HADR ON DATABASE command completed successfully”的消息。为确保 HADR 服务器在主要计算机和备用计算机上使用了正确的角色运行,您可以向主要计算机和备用计算机发出以下命令进行验证:> db2 activate db sample
> db2 start hadr on db sample as primary
DB20000I The START HADR ON DATABASE command completed successfully
> db2 get snapshot for db on sample | grep Role
Role = Primary
db2 get snapshot for db on <database_name> | grep Role
在 HADR 状态角色下,您将看到用于备用计算机的“Standby”状态和用于主要计算机的“Primary”状态。如果得不到每个数据库的正确标识符,则需要检查前面的所有步骤。
在备用计算机和主要计算机上的数据库成功启动后,您需要确保两个数据库处于同步状态。否则,故障转移将无法成功进行,从而会导致发生不希望的结果,如数据丢失。发出以下命令,以检查主要和备用数据库计算机上两个数据库的状态:
db2 get snapshot for database on <database_name> | grep State
您需要等待备用数据库连接到主要数据库之后,才能使两个数据库处于对等模式。在数据库处于对等模式之后,主要计算机和备用计算机上的 DB2 HADR 服务器就准备就绪可供使用了。
0
相关文章