同一台服务器上搭建HDR实例
(Linux AS 3 + IDS V9.4)
什么是HDR(High-Availability Data Replication)
复制数据的一个方法就是将数据库复制到安装在不同计算机上的数据库服务器。该复制允许报告不打断使用原数据库的客户机应用程序而访问数据。
数据库服务器实现整个数据库服务器的接近透明的数据复制。将一个数据库服务器管理的所有数据复制并动态更新到另一数据库服务器(通常位于不同的地理位置)。HDR提供维护整个数据库服务器的备份副本的方法,应用程序可以在灾难性故障的情况下快速访问该副本。
满足硬件和操作系统要求
HDR数据库服务器对要起作用,必须满足以下硬件要求:
1)运行主数据库服务器和辅助数据库服务器的计算机必须相同(相同的供应商和体系结构)。
2)运行主数据库服务器和辅助数据库服务器的计算机上的操作系统必须相同。
3)运行主数据库服务器和辅助数据库服务器的硬件必须支持网络能力。
4)分配给主数据库服务器和辅助数据库服务器的数据库空间的磁盘空间量必须相等。磁盘空间类型是不相关的。
满足数据库和数据要求
要使用HDR数据库服务器对起作用,必须满足以下数据库和数据要求:
1)必须记录所有数据:所有希望复制的数据库必须将事务日志记录打开。
2)数据必须驻留在数据库空间或SB空间中。
规划系统配置
1)硬件、操作系统和数据库
操作系统:Linux AS 3
数据库:IDS 9.40.UC4W4
硬件环境:VMWare 5.5.1
|
服务器A |
服务器B |
用户 |
Info1 |
Info2 |
所在HOME目录 |
/opt/info1 |
/opt/info2 |
数据库服务名(DBSERVERNAME) |
Info1_online |
Info2_online |
数据库服务别名(DBSERVERALIASES) |
Info1_online_net |
Info2_online_net |
数据库唯一识别号(SERVERNUM) |
1 |
2 |
配置文件名 |
Onconfig.info1 |
Onconfig.info2 |
2)参数配置要求
配置文件onconfig参数设置注意项:以下参数两台服务器应该配置一致
存储空间和块的配置 |
ROOTNAME |
rootdbs |
ROOTOFFSET |
0 |
ROOTPATH |
./dbs/rootdbs(注意:这里使用的是相对路径,这里是同一台服务器搭建HDR的关键) |
ROOTSIZE |
30000 |
镜像(有镜像时) |
MIRROROFFSET |
<默认值> |
MIRRORPATH |
<默认值> |
物理日志 |
PHYSDBS |
<默认值> |
PHYSFILE |
<默认值> |
数据库空间和逻辑日志磁带备份设备 |
LTAPEBLK |
<默认值> |
LTAPESIZE |
<默认值> |
TAPEBLK |
<默认值> |
TAPESIZE |
<默认值> |
逻辑日志配置 |
LOGFILES |
<默认值> |
LOGSIZE |
<默认值> |
DYNAMIC_LOGS |
<默认值> |
共享内存配置 |
SHMADD |
<默认值> |
SHMTOTAL |
<默认值> |
SHMVIRTSIZE |
<默认值> |
HDR参数 |
DRINTERVAL |
<默认值> |
DRLOSTFOUND |
<默认值> |
DRTIMEOUT |
<默认值> |
安装配置HDR步骤
先建立相关用户和目录,包括infromix/info1/info2用户并设置好相应的权限。
# groupadd –g 200 informix
# useradd –g 200 –u 200 –s /bin/csh –d /opt/informix –m informix
# useradd –g 200 –u 201 –s /bin/csh –d /opt/info1 –m info1
# useradd –g 200 –u 202 –s /bin/csh –d /opt/info2 –m info2
修改/etc/hosts,/etc/services文件增加以下内容
/etc/hosts文件
192.168.80.31 netsky netsky.localdomain netsky
/etc/services文件
sqlexec1 9011/tcp
sqlexec1_net 9012/tcp
sqlexec2 9014/tcp
sqlexec2_net 9015/tcp
一、 安装一个用户的数据库(info1)
不同版本/不同操作的数据库安装略有不同。
1) 以info1登陆系统,修改用户环境变量.cshrc增加以下内容
setenv INFORMIXDIR /opt/info1
setenv INFORMIXSERVER info1_online_net
setenv ONCONFIG onconfig.info1
setenv PATH ${INFORMIXDIR}/bin:${PATH}
# 以下内容非必须,目的是在用户环境时显示当前用户和目录
set prompt="<\! `hostname` [`whoami`] :$cwd>"
alias cd 'cd \!*; set prompt="<\! `hostname` [`whoami`] :$cwd>"'
2) 安装informix数据库
1. 以info1用户解压缩informix安装包(informix.cpio)
% cpio –icvdum < informix.cpio
2. 相关文件的建立和目录权限更改
# cd /opt
# chown informix info1;chmod 755 info1
# cd /opt/info1;mkdir dbs;cd dbs;touch rootdbs fullbak;chown informix:informix rootdbs fullbak;chmod 660 rootdbs fullbak
# cd /opt/info1;source .cshrc
3. 检查当前环境安装informix
# env --检查是否.cshrc里的变量已经生效
# ./installserver --一路回车即可,运行完成后会提示做下一步。
# ./RUN_AS_ROOT.server
3) 复制~/etc/sqlhosts.std文件为~/etc/sqlhosts并修改增加以下内容
info1_online onipcshm netsky sqlexec1
info1_online_net onsoctcp netsky sqlexec1_net
info2_online onipcshm netsky sqlexec2
info2_online_net onsoctcp netsky sqlexec2_net
4) 复制~/etc/onconfig.std文件为~/etc/onconfig.info1并修改配置。
参照 规划 里的参数配置进行配置
TAPEDEV ./dbs/fullbak
SHMBASE 0x44000000 # info1保持默认,info2要注意改成其它值
Vi更改config.info1文件中的所有/usr/informix为/opt/info1
:1,$s#/usr/informix#/opt/info1#g
5) 初始化数据库
Info1% oninit –ivy
初始化完成后,用onstat –m查看online.log内容,若出现
09:49:55 'sysmaster' database built successfully.
09:49:56 'sysutils' database built successfully.
09:49:56 'sysuser' database built successfully.
刚表示数据库初始化成功
二、 安装另一个数据库(info2)
1) 以root用户登陆到/opt/info1,执行tar包任务,将tar包复制到/opt/info2/下解压缩
# cd /opt/info1;tar –cvf info.tar *
# cd /opt/info2;cp /opt/info1/info.tar ./;tar –xvf info.tar
更改/opt/info2的目录属主为informx,权限为755.
2) 修改相关配置文件,复制/opt/info1/.cshrc到/opt/info2/.cshrc下并修改属主为info2:informix,权限为644;复制~/etc/onconfig.std为~/etc/onconfig.info2并按照info1数据库安装步骤的方法修改之
三、 配置HDR(以info1为主机,info2为备机)
在info1上执行0级备份
Info1 % ontape –s –L 0
将info1设置为主机,主机状态变为 On-Line(Prim)
Info1 % onmode –d primary info2_online_net --info2_online_net为HDR对的另一台
将fullbak文件拷贝到/opt/info2/dbs/下(注意权限为660),在info2上执行恢复
Info2 % ontape –p --第一个Yes/No为y,以后均为n
将info2设置为备机,最后状态变为Read-Only(Sec)
Info2 % onmode –d secondary info1_online_net --info1_online_net为HDR对的另一台
用onstat –Dr 3可监控复制过程直到Read-Only(Sec)状态
四、 HDR切换
IDS 9.4版本的DRAUTO固定设为0,即只能手动/程序更改数据库的双机状态,IDS自带有位于~/bin目录下的hdrmkpri.sh,hdrmksec.sh两个脚本来更改HDR的状态。在HDR断开连接时可用这两个脚本进行HDR状态转换。下面是一个手动更改HDR状态的实例:
关闭info1数据库 (注:hdrmkpri.sh,hdrmksec.sh需用informix进行操作)
Informix % cd /opt/info1;source .cshrc
Informix % onmode –ky
将info2数据库更改为主用数据库,执行完成后数据库将会DOWN下来
Informix % cd /opt/info2;source .cshrc
Informix % hdrmkpri.sh info1_online_net
将info1数据库更改变备用数据库
Informix % cd /opt/info1;source .cshrc
Informix % hdrmksec.sh info2_online_net
重新启动info2数据库后将变为主用数据库
Informix % cd /opt/info2;source .cshrc
Informix% oninit –vy
Steps to switch server types in an HDR pair:
Instance A (currently Primary) Instance B (currently Secondary)
------------------------------ --------------------------------
1] onmode -ky (server should be up)
2] hdrmkpri.sh
3] hdrmksec.sh
(now a Secondary server) 4] oninit (now a Primary server)
更多参考:Informix管理员参考指南 V9.4