blogger

    blogger
  • hot log

  • comment

    twitter

    • 空间续费,加上ssl连接。。

      2018-11-22 01:04

    • 12.10.xC6出来时候碰到"Could not determine encryption mode from page zero",竟果然是BUG!http://www-01.ibm.com/support/docview.wss?rs=630&uid=swg21973408

      2015-12-21 20:15

    • 空间已经转移到新加坡,希望会好一些。

      2015-11-16 14:34

    • 增加新域名liaosnet.cc,与liaosnet.com同指向。

      2015-10-09 15:25

    • 空间迁移到香港。或许速度会快一点。。

      2014-02-13 20:10

    • More»

    blog sort

    links

    record

    banner

    同一台机子安装配置Informix SDS

    暗夜星空's Memory from Jan 29 , 2011 at 18:47 PM , under Category:IFX/GBase
    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

    Password:

    [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 主备用切换操作。