同一台机子安装配置Informix SDS

Informix SDS ( Share Disk Secondary )共享磁盘备用服务器,其正常组建结构如下:
请输入图片描述
主用服务器和备用服务器共享同一相磁盘阵列, SDS_TEMPDBS 除外。
此次的目的在于模拟 SDS 的配置,可以使用 VMWare 安装两个服务器 + 共享磁盘的方式来实现,但需要安装配置共享磁盘管理软件(如 GFS/OCFS 之类的)。尝试使用这种方法后,也能成功,但出现了比较多问题( SDS 切换时常出现 BLOCK , SDS 恢复时常不能恢复至正常),因此考虑能不能在同一个机子上实现 SDS ,毕竟实现 SDS 最主要的就是共享磁盘的管理问题(在同一个机子上,都是系统管理的,估计效果会比管理软件好的多)

如下图所示,两个 informix 实例共享相同的文件即可
请输入图片描述

系统环境: rhel5u5 64bit
数据库版本: informix v11.70fc1 for linux 64bit

安装配置步骤:

1. 安装 informix , INFORMIXDIR 的目录为 /opt/Informix

此操作简略介绍:新建 informix 用户组,用户,安装数据库

2. 新增加两个用户

用于此次的 SDS 配置( info1,info2 均属于 informix 组 , 目录分别为 /opt/info1,/opt/info2 , shell 使用 bash ),完成后的 /etc/passwd 中应含

informix:x:1000:1000::/opt/informix:/bin/bash
info1:x:1001:1000::/opt/info1:/bin/bash
info2:x:1002:1000::/opt/info2:/bin/bash

在这里首次将使用 info1 做为 primary server 的实例, info2 则创建 sds 的实例。

3. 两个用户分别配置 .bash_profile

增加用户环境,两者的 INFORMIXSERVER 不一致, ONCONIFG 不一致(为什么 ONCONFIG 不一致? 因为 INFORMIXDIR 都是 /opt/Informix ,故 ONCONFIG 的目录都是在 ${INFORMIXDIR}/etc 下),之后将两个用户的 HOME 目录属主改成 informix:informix ,权限为 755
用户 info1 的 .bash_profile

INFORMIXDIR=/opt/informix
INFORMIXSERVER=ids1_online_net
ONCONFIG=onconfig.ids1
PATH=$PATH:${INFORMIXDIR}/bin

export INFORMIXSERVER INFORMIXDIR ONCONFIG PATH

用户 info2 的 .bash_profile

INFORMIXDIR=/opt/informix
INFORMIXSERVER=ids2_online_net
ONCONFIG=onconfig.ids2
PATH=$PATH:${INFORMIXDIR}/bin

export INFORMIXSERVER INFORMIXDIR ONCONFIG PATH

退出重进用户,或者执行 . .bash_profile (注意 2 个点之间的空格!)使用户环境生效。
以后的使用切换至带本用户环境的 informix 用户来操作,如使用带 info1 环境的 informix 用户环境为:

[root@rhel55 ~]# su - info1
[info1@rhel55 ~]$ su informix
[informix@rhel55 info1]$

以下使用
[informix@rhel55 info1]$ # 表示带 info1 环境的 informix 用户在 info1 的 HOME 下的操作
[informix@rhel55 info2]$ # 表示带 info2 环境的 informix 用户在 info2 的 HOME 下的操作

4. 修改配置文件 onconfig.ids1 , onconfig.ids2

用户 info1 的配置文件 onconfig.ids1 :拷贝 onconfig.std 为 onconfig.ids1 ,因为目的是用来测试,故主要修改的参数如下

ROOTPATH ./dbs/rootdbs
MSGPATH $INFORMIXDIR/tmp/online.log.ids1
CONSOLE $INFORMIXDIR/tmp/online.con.ids1
SERVERNUM        1
DBSERVERNAME     ids1_online_net
NETTYPE soctcp,1,50,CPU
LTAPEDEV /dev/null
SDS_ENABLE               0
SDS_TEMPDBS              sdstempdbs,/opt/info1/dbs/sdstempdbs,2,0,20000
SDS_PAGING               /opt/info1/dbs/page1,/opt/info1/dbs/page2
UPDATABLE_SECONDARY      1

用户 info2 的配置文件 onconfig.ids2 :拷贝 onconfig.std 为 onconfig.ids2 ,因为目的是用来测试,故主要修改的参数如下

ROOTPATH ./dbs/rootdbs
MSGPATH $INFORMIXDIR/tmp/online.log.ids2
CONSOLE $INFORMIXDIR/tmp/online.con.ids2
SERVERNUM        2
DBSERVERNAME     ids2_online_net
NETTYPE soctcp,1,50,CPU
LTAPEDEV /dev/null
SDS_ENABLE               1
SDS_TEMPDBS              sdstempdbs,/opt/info2/dbs/sdstempdbs,2,0,20000
SDS_PAGING               /opt/info2/dbs/page1,/opt/info2/dbs/page2
UPDATABLE_SECONDARY     1

与 info1 的 onconfig.ids1 的区别在于 SERVERNUM , DBSERVERNAME (区别不同的实例)

由于不能直接初始数据库到 SDS Primary ,故 info1 的配置中 SDS_ENABLE 应为 0 (禁用);
SDS_TEMPDBS 备用节点 tempdbs (仅在备用节点上存在,必须)
SDS_PAGING 备用节点上两个必备的分页文件
UPDATABLE_SECONDAY 设置备用服务器可更新操作

在 SDS 系统中,以下参数在整个系统中应该一致: ROOTNAME 、 ROOTPATH 、 ROOTOFFSET 、 ROOTSIZE 、 PHYSDBS 、 PHYSFILE 、 LOGFILES 和 LOGSIZE
上述仅更改了 ROOTPATH 且都一致 ./dbs/rootdbs ,其它的均保持原来的默认值,故都是一致的。

5. 配置 SQLHOSTS 文件, sqlhosts 文件位于 ${INFORMIXDIR}/etc/ 目录下,其内容应包含

ids1_online_net          onsoctcp         rhel55   11801
ids2_online_net          onsoctcp         rhel55   11802
# 格式为: INFORMIXSERVER     ServiceType       Hostname/HostIP    ServicePort

6. 创建共享文件

在 /opt/info1 目录下创建 dbs 目录,并在 dbs 目录 touch 一个 rootdbs 文件,权限为 660 ,如下,

[informix@rhel55 info1]$ mkdir dbs && touch /opt/info1/dbs/rootdbs && chmod 660 /opt/info1/dbs/rootdbs
[informix@rhel55 info1]$ ls -l
total 4
drwxrwxr-x 2 informix informix 4096 Nov 16 04:11 dbs

[informix@rhel55 info1]$ ls -l dbs
total 4096
-rw-rw---- 1 informix informix 0 Nov 25 05:26 rootdbs

目录结构图

|dbs
     - rootdbs

在 /opt/info2 目录下创建链接到 /opt/info1/dbs 的链接文件 dbs ,这样就相当于把 /opt/info1/dbs 变成了一个共享文件目录

[informix@rhel55 info2]$ ls -s /opt/info1/dbs dbs

[informix@rhel55 info2]$ ls -l dbs

total 4

lrwxrwxrwx 1 informix informix 14 Nov 16 03:59 dbs -> /opt/info1/dbs

目录结构图

|dbs               ### 在这里是链接目录
     - rootdbs

以上配置完成后,即可在 [informix@rhel55 info1]$ 执行 ids1_online_net 的初始化操作(为什么要在 /opt/info1 下执行? 因为 ROOTPATH ./dbs/rootdbs 是个相对目录,是相对于 /opt/info1 来说的,所以必须在 /opt/info1 目录下执行。不然找不到啦!)

7. 实例 ids1_online_net 初始化,然后切换成 SDS primary

[informix@rhel55 info1]$ oninit -ivy

检查初始化成功,标志是运行日志 online.log.ids1 中, sysmaster, sysutils,sysuser,sysadmin 库均建立成功。否则检查初始化的原因并解决。
初始化成功后,设置 ids1_online_net 为 SDS primary

[informix@rhel55 info1]$ onmode -d set SDS primary ids1_online_net

通过 onstat -g sds 查看状态

[informix@rhel55 info1]$ onstat -g sds

IBM Informix Dynamic Server Version 11.70.FC1      -- On-Line -- Up 00:04:35 -- 157396 Kbytes

Local server type: Primary

Number of SDS servers:0

完成设置 SDS primary 后, onconfig.ids1 参数会自动更新 SDS_ENABLE 为 1

8. 启动 SDS 备用节点,直接使用 oninit 启动即可

[informix@rhel55 info2]$ oninit -vy

… 省略输出 …

[informix@rhel55 info2]$ onstat -g sds

IBM Informix Dynamic Server Version 11.70.FC1      -- Updatable (SDS) -- Up 00:00:27 -- 165588 Kbytes

Local server type: SDS
Server Status : Active
Source server name: ids1_online_net
Connection status: Connected
Last log page received(log id,page): 3,219

[informix@rhel55 info2]$ onstat -g dri

IBM Informix Dynamic Server Version 11.70.FC1      -- Updatable (SDS) -- Up 00:00:40 -- 165588 Kbytes

Data Replication at 0x4c10c1c0:
   Type            State         Paired server         Last DR CKPT (id/pg)     Supports Proxy Writes  
   SDS Secondary   on            ids1_online_net                3 / 215         Y

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

在 SDS 备用节点上,输出的 dbspace/chunk 比主用节点多出一个 sdstempdbs ,这个是在 onconfig 中配置的,其 dbs/chunk 号均为可分配的最后一个值。

[informix@rhel55 info1]$ onstat -d

IBM Informix Dynamic Server Version 11.70.FC1      -- Updatable (SDS) -- Up 00:14:42 -- 165588 Kbytes

Dbspaces
address    number    flags       fchunk    nchunks   pgsize    flags     owner     name
4b6de028   1         0x60801     1         1         2048      NL BA     informix rootdbs
4d7c6b50   2047      0x142001    32766     1         2048      N TBA     informix sdstempdbs
  4 active, 2047 maximum

Chunks
address    chunk/dbs      offset size     free    bpages      flags pathname
4b6de1d0   1       1       0     100000   38235              PI-B-- ./dbs/rootdbs
4d7c6cf8   32766   2047    0     10000    9947               PO-B-- /opt/info1/dbs/sdstempdbs

至此, SDS 系统应该算是配置完成了,以下做一次 SDS 的切换。
1) 在 [informix@rhel55 info1]$ 停止主用数据库,备用库的状态将切至 Block 状态(不可更新,这个表明 备用更新实际上仍是通过主用节点进行更新操作的)

[informix@rhel55 info1]$ onmode -ky

在备用节点上检查状态如下:

[informix@rhel55 info2]$ onstat -

IBM Informix Dynamic Server Version 11.70.FC1      -- Updates Blocked (SDS) -- Up 00:02:22 -- 165588 Kbytes

[informix@rhel55 info2]$ onstat -g sds

IBM Informix Dynamic Server Version 11.70.FC1      -- Updates Blocked (SDS) -- Up 00:02:29 -- 165588 Kbytes

Local server type: SDS
Server Status : Active
Source server name: ids1_online_net
Connection status: Disconnected
Last log page received(log id,page): 3,235

2) 将 SDS 备用节点转换为主用节点

[informix@rhel55 info2]$ onmode -d make primary ids2_online_net force

[informix@rhel55 info2]$ onstat -g sds

IBM Informix Dynamic Server Version 11.70.FC1      -- On-Line -- Up 00:04:12 -- 165588 Kbytes

Local server type: Primary
Number of SDS servers:0

3)然后正常启动原主用节点,将转换成 SDS 备用节点

[informix@rhel55 info1]$ oninit

[informix@rhel55 info1]$ onstat -g sds

IBM Informix Dynamic Server Version 11.70.FC1      -- Updatable (SDS) -- Up 00:00:17 -- 165588 Kbytes

Local server type: SDS
Server Status : Active
Source server name: ids2_online_net
Connection status: Connected
Last log page received(log id,page): 3,245

[informix@rhel55 info1]$ onstat -g dri

IBM Informix Dynamic Server Version 11.70.FC1      -- Updatable (SDS) -- Up 00:00:19 -- 165588 Kbytes

Data Replication at 0x4c10c1c0:
   Type            State         Paired server         Last DR CKPT (id/pg)     Supports Proxy Writes  
   SDS Secondary   on            ids2_online_net                3 / 243         Y

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

至此,完成一次 SDS 主备用切换操作。

标签: SDS, informix

添加新评论

Free Web Hosting