Informix Grid介绍及建立与管理
Grid是Informix 11.70开始引入的新特性,Grid是依据ER构建的。相对于ER,Grid有以下的优势或者说是扩展。
1,管理数据库服务器,例如:增加/删除chunk、增加逻辑日志或者修改配置参数。
2,更新数据库结构,例如:修改表或者增加表。
3,运行或创建存储过程、UDR。
4,更新数据。
5,创建表时启用复制。
6,更改已复制表时更改复制定义。
7,复制文件到GRID的其他服务器上。
以下将建立一个grid,同时会创建数据库,创建复制和导入数据。
首先将创建2个服务器节点的grid,后续将增加1个节点,共3个节点。各节点应当建立信任机制。
1,3个节点以下是SQLHOSTS配置文件内容如下,每个节点各属于不同的组。
gcdr1 group - - i=110
db11 onsoctcp 192.168.80.64 12111 g=gcdr1
gcdr2 group - - i=120
db12 onsoctcp 192.168.80.64 12112 g=gcdr2
gcdr3 group - - i=130
db13 onsoctcp 192.168.80.64 12113 g=gcdr3
2,各个节点的均需包含ER所必须的参数CDR_QDATA_SBSPACE。
3,在db11上定义复制服务器。
[informix@db11 db11]$ cdr define server -c gcdr1 -I gcdr1
[informix@db11 db11]$ cdr define server -c gcdr2 -S gcdr1 -I gcdr2
4,创建grid,将现有的两个节点加入到grid中。
[informix@db11 db11]$ cdr define grid grid1 -a
5,授权informix在节点gcdr1上执行grid管理。
[informix@db11 db11]$ cdr enable grid -g grid1 -u informix -n gcdr1
6,查看grid配置,使用cdr list grid命令
[informix@db11 db11]$ cdr list grid
Grid Node User
------------------------ ------------------------ ------------------------
grid1 gcdr1* informix
gcdr2
7,查看grid复制集
[informix@db11 db11]$ cdr list replicateset
Ex T REPLSET PARTICIPANTS
-----------------------------------------------
N N grid1
注:Ex表示是否独占式,T表示是否使用模板
以上完成grid的创建,以下将对grid进行一些操作,以加深grid相对于ER的优势。
1,为grid所有节点增加dbspace。
[informix@db11 db11]$ dbaccess sysadmin -
Database selected.
> EXECUTE FUNCTION ifx_grid_function('grid1',
> 'task("create dbspace","userdbs", "./dbs/userdbs","20000K","0")');
(expression) 'Space 'userdbs' added.'
1 row(s) retrieved.
执行完成后,应在db11和db12上确认userdbs已经增加完成。
2,在grid上创建testdb库和测试表tab1
[informix@db11 db11]$ dbaccess sysadmin -
Database selected.
> EXECUTE PROCEDURE ifx_grid_connect('grid1', 1);
Routine executed.
> CREATE DATABASE testdb WITH LOG;
Database closed.
CREATE TABLE tab1
(
col1 char(20),
col2 char(200),
col3 varchar(255),
primary key(col1)
) IN userdbs;
EXECUTE PROCEDURE ifx_grid_disconnect();
Database created.
> > > > > > >
Table created.
>
Routine executed.
执行完成后,应在db11和db12上均可以看testdb库和tab1均已经创建。
3,查看grid各节点状态信息,复制集信息。均应该是正常的。
[informix@db11 db11]$ cdr list grid -v grid1
[informix@db11 db11]$ cdr list repl
[informix@db11 db11]$ cdr list replset
4,往tab1插入少量数据,在两个节点上均应该能查询到。
[informix@db11 db11]$ dbaccess testdb -
Database selected.
> insert into tab1 values('0000000001','test0000000001','information:0000000001');
1 row(s) inserted.
> insert into tab1 values('0000000002','test0000000002','information:0000000002');
1 row(s) inserted.
5,在表tab1上增加字段,在两个节点上均应该能查到同步。
[informix@db11 db11]$ dbaccess testdb -
Database selected.
> EXECUTE PROCEDURE ifx_grid_connect('grid1', 1);
Routine executed.
> ALTER TABLE tab1 ADD(col4 integer);
EXECUTE PROCEDURE ifx_grid_disconnect();
Table altered.
>
Routine executed.
增加grid节点
增加grid节点,官方文档上提到了使用ifxclone进行克隆,将自动新节点自动加入到grid中。但实际环境中,可能会有不同操作系统的节点,即不能使用ifxclone的方式创建,只能手工建好库手动加入到grid当中。
1,定义新的复制服务器
[informix@db11 db11]$ cdr define server -c gcdr2 -S gcdr1 -I gcdr3
2,加入到grid当中
[informix@db11 db11]$ cdr change grid grid1 -a gcdr3
3,通过cdr list grid -v grid1 可以看到新加入到gcdr3的的状态都是挂起的
[informix@db11 db11]$ cdr list grid -v grid1
Grid Node User
------------------------ ------------------------ ------------------------
grid1 gcdr1* informix
gcdr2
gcdr3
Details for grid grid1
Node:gcdr1 Stmtid:2 User:informix Database:sysadmin 2014-12-07 16:41:32
task("create dbspace","userdbs", "./dbs/userdbs","20000K","0")
ACK gcdr1 2014-12-07 16:41:32
'Space 'userdbs' added.'
ACK gcdr2 2014-12-07 16:41:33
'Space 'userdbs' added.'
PENDING gcdr3
4,确定gcdr3相对于gcdr1的状态,执行重做操作使gcdr3与gcdr1同步。
[informix@db11 db11]$ dbaccess sysadmin -
Database selected.
> EXECUTE PROCEDURE ifx_grid_redo('grid1', 'gcdr1', 'gcdr3', NULL, '2');
Routine executed.
注:最后的数字2是列出的stmtid号
5,再次查看gird1状态,发现该grid操作已经是正常。不过,对于复制来说,数据不会重新复制,需考虑手工同步。
[informix@db11 db11]$ cdr list grid -v grid1
Grid Node User
------------------------ ------------------------ ------------------------
grid1 gcdr1* informix
gcdr2
gcdr3
Details for grid grid1
Node:gcdr1 Stmtid:2 User:informix Database:sysadmin 2014-12-07 16:41:32
task("create dbspace","userdbs", "./dbs/userdbs","20000K","0")
ACK gcdr1 2014-12-07 16:41:32
'Space 'userdbs' added.'
ACK gcdr2 2014-12-07 16:41:33
'Space 'userdbs' added.'
ACK gcdr3 2014-12-07 17:16:28
'Space 'userdbs' added.'
对于grid,推荐使用openadmin图型化界面来管理,比较容易。管理项位于 复制-网格部分。
本文参考《IBM Informix Enterprise Replication Guide》一书相关内容。
- 上一篇: Informix PSM介绍及简单配置
- 下一篇: 配置informix使用SSL