INFORMIX HDR的配置

High Availability Data Replication(HDR)是一种将数据从主服务器复制到从服务器的方法。HDR 将所有启用日志记录功能的数据库从主服务器复制
到从服务器。尽管可以把从服务器看作主服务器的复制品,但是它不包含未启用日志记录功能的数据库的数据。在从服务器上存在这些数据库和模式,因为 DML(Data Manipulation Language)语句总是记录在日志中的;但是除非数据库启用了日志记录功能,否则插入、更新或删除的数据不会被复制。HDR 确保从服务器总是与主服务器保持同步。如果主服务器发生故障,那么从服务器可以作为备用服务器,直到主服务器恢复运行为止。
高可用性数据复制 HDR 技术,从 Informix 6 版本就开始提供,它是采用一主、一备方式,通过读取数据库逻辑日志方式,实现主备机互相切换功能。
在 Informix 11.5 之前,HDR 备机支持只读方式,我们通常会通过备机来完成数据查询、报表功能,分担主机系统的压力。从 Informix 11.5 开始,HDR 备机支持读写操作,提供了更灵活的功能。HDR方式通常用来提供高可用性及 hot standby 功能。注意,支持读写功能是指用分布式写入将数据写入到辅助数据库中。
本文就是模拟环境中informix HDR的配置实验
主机 :
primary:  server beijing,主服务器
standby:  server shanghai, 辅助服务器
操作系统 :
Redhat AS 5
网络 :
两台机器在同一网段:192.168.1.200/192.168.1.210
informix版本 :
IBM Informix Dynamic Server Version 11.70.UC1IE
本文略去关于informix的安装配置方面的细节,着重是对informix HDR的配置。

在做配置前首先要明白HDR 配置成功有哪些前提条件。
在实际的安装配置过程中要成功完成informix HDR需要满足如下要求:
两台服务器的 IDS version 必须相同 (OS 的版本可以有细微的不同 )。

a.两台服务器关于 Root Dbspace 的参数必须相同:
ROOTNAME
ROOTOFFSET
ROOTPATH
ROOTSIZE
实际环境中我们的配置为:
ROOTNAME rootdbs
ROOTPATH $INFORMIXDIR/hdr/rootdbs
ROOTOFFSET 0
ROOTSIZE 1000000
关于磁盘镜像,不要求两台服务器的MIRROR 配置必须相同,但是如果在主服务器对root dbspace 做了镜像设置的话,
辅助服务器也必须做相应的配置,也就是说如下参数须相同:
MIRROR
MIRROPATH
MIRROROFFSET
实际上我们不用做太多的修改,使用默认值即可,上面我们注意到这些文件路径信息,实际上我们测试时无法提供双机环境,那么其实我们直接将
绝对路径改成相对路径,因为informix查找决定路径直接通过搜索INFORMIXDIR路径来获得。
关于物理日志配置的以下参数必须相同:
PHYSBUFF
PHYSILE
关于逻辑日志配置的以下参数必须相同:
LOGBUFF
LOGFILES
LOGSIZE
DYNAMIC_LOGS
关于 HDR 配置的以下参数必须相同:
DRAUTO
DRINTERVAL
DRTIMEOUT
可以采用默认值,但是实际上本次配置为:
DRAUTO 0
DRINTERVAL -1
DRTIMEOUT 30
如果 HDR 对之间的数据传输需要加密的话,那么以下加密参数必须相同:
ENCRYPT_HDR
ENCRYPT_CIPHERS
ENCRYPT_MAC
ENCRYPT_SWITCH
ENCRYPT_MACFILE
实际环境中我们没有对这些参数做修改,使用了默认值。
我们知道从informix 11.5开始辅助服务器可写,所以如下参数设置,具体含义后面会讲到:
UPDATABLE_SECONDARY 1
两台服务器关于服务名的设置根据实际分配的情况分别设置为:
SERVERNUM  0/1
DBSERVERNAME  beijing/shanghai

1.配置操作系统信任关系

为了满足 HDR 主辅服务器之间进行数据传输和相互操作的需要,我们在配置 HDR 之前首先要在两台服务器之间建立操作系统级别的信任关系。
具体而言是要在主辅服务器之间建立 RSH 信任关系。
确认 rsh 已经安装并且启动
使用以下命令检查:
#chkconfig | grep rsh
rsh: on
针对 Informix 用户配置 rsh
当然这里也可以针对所有用户配置互信关系,但是只针对 Informix 用户配置互信关系就够用了,这个主要在后期采用标准I/O备份恢复中需要。
首先,在两台机器的 /home/informix 目录下创建 .rhosts 文件。
其次,在primary的 .rhosts 文件中添加它信任的机器名字或者 IP 也就是 :standby 或者192.168.1.210,在standby 的 .rhosts 文件中加它信任的机器名字或者 IP 也就是:primary或者192.168.1.200。
最后需要特别注意:两台机器上都要保证 .rhosts 的权限为 600 否则该文件将被忽略,信任关系配置将失败。也就是要执行:
chmod 600 .rshosts
验证 rsh 配置
在primary上用informix用户登录执行:
$rsh standby hostname
stadnby
在standby上用informix用户登录执行:
$rsh primary hostname
primary
此处关于informix的redhat AS 上如何配置RSH的详细过程,略去,具体方法需要参照我的上篇博文《RedHat linux配置RSH服务》

2. 配置相互指向的服务名

在beijing服务器的sqlhosts文件中加入shanghai服务器的条目:
shanghai onsoctcp 192.168.1.210 sqlexec1
在shanghai服务器的sqlhosts文件加入指向上海服务器的条目:
beijing onsoctcp 192.168.1.200 sqlexec2
最后两台服务器的sqlhosts文件都要包含以下内容:
beijing onsoctcp 192.168.1.200 sqlexec2
shanghai onsoctcp 192.168.1.210 sqlexec1

3.分别修改服务器的/etc/services
在/etc/services文件中修改添加,确保均包含如下条目:

sqlexec1 8088/tcp
sqlexec2 8089/tcp

4.安装配置 UDR、UDT、DataBlade模块

如果数据库需要用到 UDR、UDT、DataBlade 等,需要先在主服务器进行安装和注册,然后在辅助服务器安装 UDR、UDT、DataBlade,当然如果不需要的话,可以不安装这些组件,这步骤可以省略。

5.在主服务器primary上设置服务器状态
$onmode -d primary shanghai

这一步是告知primary的beijing数据库服务器实例,它将要被赋予 HDR 主服务器的角色,与它配对的辅助服务器实例为shanghai。

6.关闭辅助服务器

一般来说在设置HDR前我们需要检查辅助服务器配置是否正确,所以会有一个初始化的操作,即
$oninit -ivy
记住这个命令很危险只能在创建的新服务器实例上执行,因为其会重新初始化内存和存储空间,导致丢失数据。
这时辅助服务器的informix实例是处于online状态,这主要是确保内存和磁盘不存在问题,由于创建过程中需要使用ontape做物理恢复,
故需要其未静默或关闭状态:
$onmode – ky
在恢复前,如果还有其他的dbspace chunk文件,请确保备库主机的chunk文件和主机的chunk文件的路径和名称数量上相同,创建好需要恢复的物理chunk.
不然会失败,过程可参考如下:
touch $INFORMIXDATA/datachunk
chmod 660 $INFORMIXDATA/datachunk

7.在primary数据库服务器上做0级全备份,然后再辅助服务器做全恢复

这一步可以通过其他的的传统方法来完成,但是为了方便起见,充分利用informix的特性,这里使用 ontape通过STDIO管道来完成,
也就是说数据库的0级全备份不需要占用磁盘空间,也省去了全备份文件拷贝的步骤,主服务器在做全备的同时通过管道把数据发送给辅助服务器,
辅助服务器同时做全恢复,备份数据只在内存中临时存在,节省了空间又加快了速度。所以这一步只需要一个命令就可以完成:
$ontape -s -L 0 -t STDIO -F|rsh 192.168.1.210 “. ~/.bash_profile;ontape -p -t STDIO”
对于/.bash_profile;这个命令很有必要,因为我在多次过程中发现没有这个文件,执行的informix用户报错,会找到默认的环境变量文件,而不是给informix用户指定的目录下。

这时候standby上的 shanghai实例会自动启动,状态由not initialized 变为initialization,进而变为 Fast Recovery:
$onstat -
IBM Informix Dynamic Server Version 11.70.UC1IE — Initialization — Up 00:35:23 — 152348 Kbytes
$onstat -
IBM Informix Dynamic Server Version 11.70.UC1IE — Fast Recovery — Up 00:35:23 — 152348 Kbytes

8. 设置辅助服务器的数据库状态

$onmode -d secondary beijing
这一步是告知standby的实例shanghai,它是被设置为HDR辅助服务器的角色,与它配对的主服务器实例为beijing。

9.状态验证

执行完毕后,稍后可以看到辅助服务器standby上shanghai实例的状态由Fast Recovery 变化为 Updatable(Sec) ,也就是如下:

辅助服务器:
$ onstat -

IBM Informix Dynamic Server Version 11.70.UC1IE — Updatable (Sec) — Up 00:35:35 — 152348 Kbytes

$ onstat -g dri

IBM Informix Dynamic Server Version 11.70.UC1IE — Updatable (Sec) — Up 00:35:57 — 152348 Kbytes

Data Replication at 0x4b4241a0:
Type           State        Paired server        Last DR CKPT (id/pg)    Supports Proxy Writes
HDR Secondary  on           shanghai                     22 / 23         Y

DRINTERVAL   -1
DRTIMEOUT    30
DRAUTO       0
DRLOSTFOUND  /opt/IBM/informix/etc/dr.lostfound
DRIDXAUTO    0
ENCRYPT_HDR  0
Backlog      0

主服务器:

$onstat -
IBM Informix Dynamic Server Version 11.70.UC1IE — On-Line (Prim) — Up 00:42:17 — 152348 Kbytes
$onstat -g dri
IBM Informix Dynamic Server Version 11.70.UC1IE — On-Line (Prim) — Up 00:42:21 — 152348 Kbytes

Data Replication at 0x4b4241a0:
Type           State        Paired server        Last DR CKPT (id/pg)    Supports Proxy Writes
primary        on           beijing                      22 / 23         NA

DRINTERVAL   -1
DRTIMEOUT    30
DRAUTO       0
DRLOSTFOUND  /opt/IBM/informix/etc/dr.lostfound
DRIDXAUTO    0
ENCRYPT_HDR  0
Backlog      0

以上看起来HDR配置就成功了,并且我们的辅助服务器和主服务器一样是可以执行写操作的,至于这一块我后期做下验证,据说备机也可以写了,从上面的状态也是这样,但是我从相关资料上查的
informix实际上支持分布式读写,本质上还是在主机上更新后在同步到备机上的。
10.HDR相关参数介绍
简单介绍 下上面HDR配置用到的相关参数,详细的说明请参见 IDS技术文档。
UPDATABLE_SECONDARY
这个参数是11.50才有的新功能,取值范围为:0到2×(CPU VP), CPU VP一般就是服务器上CPU 的个数。
作用:用于控制辅助服务器是否可写,也就是说如果设置为大于 0 的数,则在辅助服务器可以执行 (delete/insert/update) 操作,相应的状态为:Updatable (Sec) ,如果设置为 0 ,则在辅助服务器只能执行 select 操作,相应的状态为:Read-Only (Sec) 。
进一步的说,实际上这个参数的直接含义是辅助服务器上进行写操作的连接个数。
DRINTERVAL
这个参数单位为秒,用于设置多久才把日志发送到辅助服务器做数据同步,如果设置为 -1 则为同步模式,也就是说任何时候只要logical log buffer要写到磁盘中,就同时把日志内容发送到辅助服务器,得到辅助服务器确认后才认为写磁盘操作成功。在我们的实际设置中,设置成了 -1,这样在发生灾难情况下不会因为缓冲区的问题而丢失数据,但是性能上会受到一些影响。
DRAUTO,取值范围为:
0 Manual
1 Retain server type
2 Reverse server type
3 Connection Manager Arbitrator controls
简单来说,这个参数用于控制HDR中IDS 实例重启后怎样确定自己的角色,1表示保持原有角色,2表示转换为新的角色,3 表示使用连接管理器来仲裁。举个例子说:比如 HDR 主服务器重启后,DRAUTO 为 1 时,主服务器仍为主服务器;DRAUTO 为 2 时主服务器变为辅助服务器,原来的辅助服务器成为新的主服务器。
DRTIMEOUT
单位为秒,用来指定HDR对之间多少时间间隔没有响应被认为是超时。
DRLOSTFOUND
指定一个目录,用于存放逻辑日志,内容是主服务器已经提交但是辅助服务器没有同步的数据。用于防止数据丢失。
DRIDXAUTO
取值范围为 0、1。
是否自动进行索引修复。
关于传输加密参数
ENCRYPT_HDR 取值范围为:0、1
ENCRYPT_CIPHERS 各种支持的加密算法组合,详见文档。
ENCRYPT_MAC 取值范围:off, low, medium, high
ENCRYPT_SWITCH 两个秒为单位的时间,例如:60,60
ENCRYPT_MACFILE 取值范围:密钥文件全路径或者 BUILDIN
这一组参数用于设置 HDR 对之间数据传输的加密方式,只有 ENCRYPT_HDR 为 1 时才进行数据加密传输。
IDS11.5 支持很多加密算法:DES, des3 , desx, aes……,也可以把 ENCRYPT_CIPHERS 设置为 all, 意为使用所有支持的加密算法。
ENCRYPT_MAC 用于控制加密的级别,可以根据自己的需要设置。
ENCRYPT_SWITCH 的第一个数字表示多久进行一次加密算法的切换,第二个数字表示多久进行加密密码的切换。也就是说 HDR 在固定的时间间隔内自动切换加密算法和加密密码,大大减小了数据泄露的可能性。
ENCRYPT_MACFILE 为指向加密密钥文件的全路径,可以使用内置的加密密钥文件,也就是说可以设置为”BUILDIN”即可,如果要使用自己的密钥文件可以使用 IDS 自带的工具”GenMacKey”来生成,具体使用方式请参照 IDS 相关技术文档。要强调的是:HDR 对两台服务器的加密密钥文件的内容必须相同。

参考:
IBM informix 11.70 information center

http://www.ibm.com/developerworks/cn/data/library/techarticles/dm-1003yuanht/?ca=drs-tp4608


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值