Chinaunix首页 | 论坛 | 博客
  • 博客访问: 167862
  • 博文数量: 38
  • 博客积分: 2431
  • 博客等级: 少校
  • 技术积分: 470
  • 用 户 组: 普通用户
  • 注册时间: 2006-12-20 09:49
文章分类

全部博文(38)

文章存档

2011年(2)

2010年(14)

2009年(10)

2008年(12)

我的朋友

分类: DB2/Informix

2010-06-11 16:58:41

目的:了解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.
阅读(1567) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~