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

    建立HDR与ER组合的测试

    暗夜星空's Memory from Jan 30 , 2011 at 23:12 PM , under Category:IFX/GBase

    目的:了解ER复制基本概念,主-从复制,随处更新复制;HDR的备机更新新功能.
    测试环境配置:单虚拟机环境下的SUSE10SP2, 数据库版本分别为IDS11.50UC5, IDS10.00UC10, IDS9.40UC4W4
    系统配置:
    HDR配置为/opt/ids111, /opt/ids112 安装IDS11.50
    ER配置1 为/opt/info10 安装IDS10.00
    ER配置2 为/opt/info9  安装IDS9.40

    整体结构

    点击查看原图

    /etc/hosts文件内容

    192.168.80.120  suse10.site suse10
    192.168.80.122  suse10b
    192.168.80.130  suse10c
    192.168.80.140  suse10d


    网卡上启3个子IP,使各服务器更近似独立服务器.

    各INFORMIX数据库的sqlhosts均包含以下内容

    ids11                   group           -       -       i=11
    ids111_online_net       onsoctcp        suse10  11502   g=ids11
    ids112_online_net       onsoctcp        suse10b 11504   g=ids11

    ids9                    group           -       -       i=12
    ids9_online_net         onsoctcp        suse10c 9142    g=ids9

    ids10                   group           -       -       i=13
    ids10_online_net        onsoctcp        suse10d 9132    g=ids10



    1,IDS11.50先行配置HDR.在SQLHOSTS里明确,配置成HDR的服务器应当在同一个group中,这里是ids11.
    具体在单机上配置HDR服务器,参见:http://blog.chinaunix.net/u/28641/showart_359952.html

    2,ER环境配置,所有4个服务器均配置一个名为erdbs,大小为20M的dbspaces 和一个名为ersbs,大小为10M的smartblobspace.

     IBM Informix Dynamic Server Version 11.50.UC5     -- On-Line (Prim) -- Up 04:48:57 -- 152336 Kbytes

    Dbspaces
    address  number   flags      fchunk   nchunks  pgsize   flags    owner    name
    4aed6808 1        0x60001    1        1        2048     N  B     informix rootdbs
    4aed6eb0 2        0x60001    2        1        2048     N  B     informix erdbs
    4afa7230 3        0x68001    3        1        2048     N SB     informix ersbs
     3 active, 2047 maximum

    Chunks
    address  chunk/dbs     offset     size       free       bpages     flags pathname
    4aed6968 1      1      0          100000     35352                 PO-B- ./dbs/rootdbs
    4afa7390 2      2      0          10000      8291                  PO-B- ./dbs/erdbs
    4afa7568 3      3      0          5000       4586       4587       POSB- ./dbs/ersbs
                             Metadata 360        268        360     
     3 active, 32766 maximum
     
     
     IBM Informix Dynamic Server Version 11.50.UC5     -- Updatable (Sec) -- Up 03:57:34 -- 144144 Kbytes
        



    并修改配置ONCONFIG里的相应参数,并使之生效(需重启数据库).

    CDR_DBSPACE       erdbs            #syscdr使用的空间,不配置将使用rootdbs
    CDR_QHDR_DBSPACE  erdbs            #事务记录空间,默认rootdbs(T
    CDR_QDATA_SBSPACE ersbs            #行数据SB空间(必须配置,否则无法建立CDR)


    以上完成后,基本的ER所需环境就已经配置完成,往下开始为配置ER
    其中ids11将与ids10配置成为 随处更新 模式, ids11将与ids9配置成 主从更新模式

    3.ER配置.以下均使用informix带相应目录环境操作, ids111> 表示在ids111目录下操作,info9>表示在info9目录下操作
    在ids111为HDR主机的情况下,分别在ids111,info9,info10上建立名为erdb,非日志缓冲的库,并创建测试表t1

    ids111> echo "create database erdb with log;" | dbaccess sysmaster
    info9>  echo "create database erdb with log;" | dbaccess sysmaster
    info10> echo "create database erdb with log;" | dbaccess sysmaster

    ids111> echo "create table t1(id char(10),name char(10),primary key(id));" | dbaccess erdb
    info9>  echo "create table t1(id char(10),name char(10),primary key(id));" | dbaccess erdb
    info10> echo "create table t1(id char(10),name char(10),primary key(id));" | dbaccess erdb

    注意: 做为测试表的t1必须有个primary key.

    1)定义ER复制的各服务器
    ids111> cdr define server -I  ids11 (或者使用长格式 cdr define server --init=ids11) 
    这里使用的是group,而不是servername.
    ids111> cdr define server -c ids9 -I ids9 -S ids11
    对应的长格式命令为 cdr define server --connect=ids9 --init ids9 --sync=ids11
    ids111> cdr define server -c ids10 -I ids10 -S ids11
    对应的长格式命令为 cdr define server --connect=ids10 --init ids10 --sync=ids11

    定义ids9和ids10均在ids11上通过--connect连接到目标服务器上执行.
    定义完成后,在各目录上执行 cdr list server 显示定义好的server, STATUS为local的为本机,connected为远程连接.

    SERVER                 ID STATE    STATUS     QUEUE  CONNECTION CHANGED
    -----------------------------------------------------------------------
    ids10                  13 Active   Connected       0 Jun 11 14:43:49
    ids11                  11 Active   Local           0                
    ids9                   12 Active   Connected       0 Jun 11 12:08:14

    2)定义全局复制replicate r_t1,用于复制t1表.
    ids111> cdr define replicate --conflict=ignore r_t1 \
    "P erdb@ids11:informix.t1" "select * from t1" \
    "R erdb@ids9:informix.t1"  "select * from t1" \
    "  erdb@ids10:informix.t1" "select * from t1" 

    P表示为主服务器,R表示仅复制, 空 表示建立的是随处更新.
    此时,执行cdr list replicate显示状态
    ids111> cdr list replicate
    CURRENTLY DEFINED REPLICATES
    -------------------------------
    REPLICATE:        r_t1
    STATE:            Inactive ON:ids11         --此时并不开启复制.
    CONFLICT:         Ignore
    FREQUENCY:        immediate
    QUEUE SIZE:       0
    PARTICIPANT:      erdb:informix.t1
    OPTIONS:          transaction,fullrow
    REPLID:           720897 / 0xb0001
    REPLMODE:         PRIMARY  ON:ids11
    APPLY-AS:         INFORMIX ON:ids11

    开启复制
    ids111> cdr list replicate r_t1
    此时list replicate的状态改变为
    CURRENTLY DEFINED REPLICATES
    -------------------------------
    REPLICATE:        r_t1
    STATE:            Active ON:ids11           --开启.
    CONFLICT:         Ignore
    FREQUENCY:        immediate
    QUEUE SIZE:       0
    PARTICIPANT:      erdb:informix.t1
    OPTIONS:          transaction,fullrow
    REPLID:           720897 / 0xb0001
    REPLMODE:         PRIMARY  ON:ids11
    APPLY-AS:         INFORMIX ON:ids11

    这样整个ER以及一个r_t1复制就建立完成.
    测试ER复制,在ids111上insert 一条删除记录,在ids112(HDR),info9(ER主从),info10(ER随处更新)都将同步该记录
    ids111> echo "insert into t1 values('001','test001');" | dbaccess erdb

    info9 > echo "select * from t1;" | dbaccess erdb
    Database selected.

    id         name                 

    001        test001             
     
    1 row(s) retrieved.

    在info10上的更新同样将更新到所有的服务器上
    info10> echo "insert into t1 values('002','test002');" | dbaccess erdb

    info9 > echo "select * from t1;" | dbaccess erdb
    Database selected.

    id         name                 

    001        test001             
    002        test002             

    2 row(s) retrieved.

    由于ids11与ids9使用的是主从更新,因此在info9上的更新将不会更新到其它服务器上
    info9> echo "insert into t1 values('003','test003');" | dbaccess erdb

    ids111> echo "select * from t1;" | dbaccess erdb
    Database selected.

    id         name                 

    001        test001             
    002        test002             

    2 row(s) retrieved.