文档库 最新最全的文档下载
当前位置:文档库 › DB2 hadr配置与切换手册

DB2 hadr配置与切换手册

DB2 hadr配置与切换手册

总部地址:深圳市福田区车公庙泰然八路云松大厦16楼

1.D B2 HADR概述

High Availability Disaster Recovery (HADR)是数据库级别的高可用性数据复制机制。一个HADR环境需要两台数据库服务器:主数据库服务器(primary)和备用数据库服务器(standby)。当主数据库中发生事务操作时,会同时将日志文件通过TCP/IP协议传送到备用数据库服务器,然后备用数据库对接受到的日志文件进行重放(Replay),从而保持与主数据库的一致性。当主数据库发生故障时,备用数据库服务器可以接管主数据库服务器的事务处理。此时,备用数据库服务器作为新的主数据库服务器进行数据库的读写操作,而客户端应用程序的数据库连接可以通过自动客户端重新路由(Automatic Client Reroute)机制转移到新的主服务器。当原来的主数据库服务器被修复后,又可以作为新的备用数据库服务器加入HADR。通过这种机制,DB2 UDB实现了数据库的灾难恢复和高可用性,最大限度的避免了数据丢失。下图为DB2 HADR的工作原理图:

注:处于备用角色的数据库不能被访问。

总部地址:深圳市福田区车公庙泰然八路云松大厦16楼

2.D B2 HADR配置

1.配置概述

要进行这个实例配置过程,你必须拥有DB2 UDB Enterprise Server Edition (ESE),)。

现有两台主机,这两台机器的主机名和IP地址分别为:DBSERV1(192.168.1.162)和DBSERV2(192.168.1.163)。在下面的配置过程中将DBSERV1作为主数据库服务器,其实HADR配置好之后,这两台服务器的角色是可以转换的。为简单起见,以DB2的样本数据库SAMPLE作为配置对象。

2.配置过程

注:以下命令均在DB2 CLP中执行

1. 在DBSERV1和DBSERV2上安装DB2,并创建缺省实例db2inst1,服务端口:50000,我们使用缺省的实例所有者用户db2inst1,密码:db2inst1

2. 使用db2sampl命令在DBSERV1上创建样本数据库SAMPLE

3. 修改SAMPLE数据库配置参数LOGRETAIN为ON,以使该数据库日志记录方式改为存档日志。

UPDATE DB CFG FOR SAMPLE USING LOGARCHMETH1 disk:/database/archive 4. 修改索引日志记录参数

UPDATE DB CFG FOR SAMPLE USING LOGINDEXBUILD ON

UPDATE DB CFG FOR SAMPLE USING INDEXREC RESTART

注:这一步并不是必须的。

总部地址:深圳市福田区车公庙泰然八路云松大厦16楼

5. 备份数据库SAMPLE

BACKUP DB SAMPLE TO /database/dbbak

其中"/database/dbbak"是用来存放数据库备份文件的目录,你完全可以指定任何一个db2inst1有写入权限的其他目录。

备份完成之后,在/database/dbbak目录下我们会看到数据库备份映像文件:SAMPLE.0.db2inst1.NODE0000.CATN0000.20140726122125.001

注:你所得到的文件名的时间标志部分肯定和我的不一样,在下面的恢复数据库命令中要注意做相应的修改。

6. 将得到的数据库映像文件复制到DB2SERV2对应的目录下(/database/dbbak)。

7. 在DBSERV2上恢复数据库SAMPLE:

RESTORE DATABASE SAMPLE FROM "/database/dbbak" TAKEN AT 20140726122125 REPLACE HISTORY FILE WITHOUT PROMPTING

8. 配置自动客户端重新路由:

在主数据库服务器(DBSERV1)上:

UPDATE ALTERNATE SERVER FOR DATABASE SAMPLE USING HOSTNAME 192.168.1.163 PORT 50000

在备用数据库服务器上(DBSERV2):

UPDATE ALTERNATE SERVER FOR DATABASE SAMPLE USING HOSTNAME 192.168.1.162 PORT 50000

总部地址:深圳市福田区车公庙泰然八路云松大厦16楼

9. 配置HADR服务和侦听端口

用vi编辑/etc/services文件(需要切换到root用户),加入下面两行:

DB2_HADR_1 55001/tcp

DB2_HADR_2 55002/tcp

注:这一步不是必须的,因为在下面配置HADR_LOCAL_SVC和HADR_REMOTE_SVC 数据库参数的时候可以直接使用端口号来替代服务名。

10. 修改主数据库(DBSER1 - SAMPLE)的配置参数:

UPDATE DB CFG FOR SAMPLE USING HADR_LOCAL_HOST 192.168.1.162 UPDATE DB CFG FOR SAMPLE USING HADR_LOCAL_SVC DB2_HADR_1

UPDATE DB CFG FOR SAMPLE USING HADR_REMOTE_HOST 192.168.1.163 UPDATE DB CFG FOR SAMPLE USING HADR_REMOTE_SVC DB2_HADR_2

UPDATE DB CFG FOR SAMPLE USING HADR_REMOTE_INST db2inst1

UPDATE DB CFG FOR SAMPLE USING HADR_SYNCMODE NEARSYNC

UPDATE DB CFG FOR SAMPLE USING HADR_TIMEOUT 120

CONNECT TO SAMPLE

QUIESCE DATABASE IMMEDIATE FORCE CONNECTIONS

UNQUIESCE DATABASE

CONNECT RESET

11. 修改备用数据库(DBSERV2 - SAMPLE)的配置参数:

UPDATE DB CFG FOR SAMPLE USING HADR_LOCAL_HOST 192.168.1.163 UPDATE DB CFG FOR SAMPLE USING HADR_LOCAL_SVC DB2_HADR_2

UPDATE DB CFG FOR SAMPLE USING HADR_REMOTE_HOST 192.168.1.162 UPDATE DB CFG FOR SAMPLE USING HADR_REMOTE_SVC DB2_HADR_1

UPDATE DB CFG FOR SAMPLE USING HADR_REMOTE_INST db2inst1

UPDATE DB CFG FOR SAMPLE USING HADR_SYNCMODE NEARSYNC

UPDATE DB CFG FOR SAMPLE USING HADR_TIMEOUT 120

12. 启动HADR:

首先启动备用数据库服务器的HADR:

总部地址:深圳市福田区车公庙泰然八路云松大厦16楼

START HADR ON DATABASE SAMPLE AS STANDBY

然后启动主数据库服务器的HADR:

DEACTIVATE DATABASE SAMPLE

START HADR ON DATABASE SAMPLE AS PRIMARY

注:如果你先启动主数据库服务器HADR,那么你必须保证在HADR_TIMEOUT参数指定的时间内(单位为秒)启动备用数据库服务器HADR。否则将启动失败。

OK,到目前为止,我们已经成功配置并启动了DB2 HADR。

3. HADR测试

1. 连接到主数据库,创建测试表HADRTEST,并插入几条测试数据:

CONNECT TO SAMPLE USER db2inst1 USING db2inst1

CREATE TABLE HADRTEST(ID INTEGER NOT NULL WITH DEFAULT,NAME VARCHAR(10),PRIMARY KEY (ID))

INSERT INTO HADRTEST (ID,NAME) VALUES (1,'张三')

INSERT INTO HADRTEST (ID,NAME) VALUES (2,'李四')

2. 使用备份数据库接管主数据库

TAKEOVER HADR ON DATABASE SAMPLE USER db2inst1 USING db2inst1

观察数据库主数据库和备用数据库的状态:

GET SNAPSHOT FOR DB ON SAMPLE

总部地址:深圳市福田区车公庙泰然八路云松大厦16楼

总部地址:深圳市福田区车公庙泰然八路云松大厦

16楼

新的主数据库(原备用数据库):

备用数据库(原主数据库):

3. 连接到新的主数据库,并查询HADRTEST 表:

4.HADR管理操作汇总

1. 启动和停止HADR

一、使用START HADR命令启动主数据库和备用数据库的HADR。启动主数据库使用AS PRIMARY子句,启动备用数据库使用AS STANDBY 子句。如果想以其他用户启动HADR,可以通过USER user-name USING password子句指定用户名和密码:

例子:

START HADR ON DATABASE SAMPLE USING db2inst1 USING db2inst1 AS STANDBY

在启动主数据库的HADR时,如果在数据库HADR_TIMEOUT所指定的时间内未能建立与备用数据库HADR的连接,启动将失败。这时候,你可以等排除故障并成功启动备用数据库HADR后再启动主数据库HADR,也可以通过指定BY FORCE子句强行启动主数据库。

例如:

START HADR ON DATABASE SAMPLE AS PRIMARY BY FORCE

二、使用STOP HADR 停止主数据库和备用数据库的HADR。

如果在活动的主数据库上发出此命令,所有的数据库连接都被断开,数据库恢复为标准数据库(没有启用HADR的数据库为标准数据库),并保持联机状态。

如果在活动的备用数据库上发出此命令,将停止失败。你必须先使用DEACTIVATE DATABASE命令取消激活,然后再停止HADR。

2. 查看HARD的配置及运行状态

HADR连接状态:

总部地址:深圳市福田区车公庙泰然八路云松大厦16楼

当备用数据库的HADR启动时,它首先进入本地同步更新状态。并根据本地日志路径配置参数及日志归档方法的设置检索本地系统中的日志文件并重放。当本地日志文件重放完毕,备用数据库进入远程同步暂挂状态。当与主数据库建立连接之后,备用数据库进入远程同步更新状态。即主数据库将自己的日志文件通过TCPIP协议发送给备用数据库,备用数据库接收到日志文件并重放,直到所有日志文件都重放完毕,备用数据库和主数据库进入对等状态。见下图:

通过GET SNAPSHOT命令观察主数据库和备用数据库的连接状态。

通过GET DB CFG命令可以查看HADR的配置情况,即HADR相关的几个数据库参数值。

3. 接管/故障转移

当主数据库发生故障时,备用数据库可以接管主数据库的服务,成为新的主数据库(称为故障转移)。当原主数据库修复后,又可以作为备用数据库加入HADR 对。即使主数据库服务器没有故障,我们通过接管命令(TAKEOVER)切换主数据库和备用数据库的角色。接管命令只能用在备用数据库上。

HADR提供两种接管方式:

紧急接管:

总部地址:深圳市福田区车公庙泰然八路云松大厦16楼

当主数据库发生故障时,可以在备用数据库上使用紧急接管,使备用数据库成为新的主数据库。紧急接管必须指定TAKEOVER命令的BY FORCE子句,例如:

TAKEOVER HADR ON DATABASE SAMPLE BY FORCE

普通接管:

普通接管就是没有使用BY FORCE子句的接管,例如:

TAKEOVER HADR ON DATABASE SAMPLE

这种接管必须在主数据库和备用数据库都正常运行的情况下使用。如果主数据库发生故障,普通接管将失败,这时候必须使用上面的紧急接管。

总部地址:深圳市福田区车公庙泰然八路云松大厦16楼

相关文档