Postgresql在windows下利用Slony-i实现集群的数据同步更新

 WindowsPostgresql数据库通过Slony-I配置集群实现数据库同步的方法

 经过了几天的数据库集群配置,今天终于成功了,详细过程和遇到的问题总结如下。

一.              我们要实现的环境是windows xp或者windows7Postgresql数据库,实现目的是多台数据库服务器进行数据库同步,即数据库同步更新、删除、插入等对数据库的操作。

二.              使用的工具是数据库版本Postgresql8.4,配置集群的工具是Stack Builder自己的可安装的Slony-I v2.0.4-1.

三.              Slony-I实现数据库集群同步的原理简述:Slony-i是采用一主多从式集群方式,通过在主服务器和从服务器上建立同步节点,设置远程访问路径,启动监听进程(slon守护进程)进行监听,当主服务器进行了修改操作时,通过触发器触发,从进程进行异步修改来达到数据库同步。

四.              详细步骤如下:                                                                           

1.       安装Postgresql数据库和Slony-i集群软件。

2.       注册相应的动态链接库。

进入%PG%/lib目录,运行regsvr32 slevent.dll,对集群所用到的动态链接库进行注册。

3.       注册服务

进入%PG%/bin目录,运行 slon –regservice 注册slony-i服务项。注册完后,在运行 services.msc会看到slony-i服务项,默认状态没有启动。

4.       建立连通性。

服务器之间进行远程访问需要对访问权限进行设置。Pg_hba.conf是访问配置文件,可以按照本地local/网络hostip地址/子网掩码,访问方式 的格式进行权限设置。

5.       建立主服务器文件master.script

例如:

cluster name=testlao;

node 1 admin conninfo = 'dbname=lao host=192.168.2.138 user=postgres password=74581';

node 2 admin conninfo = 'dbname=lao host=192.168.2.130 user=postgres password=74581';

init cluster( id = 1,comment = 'Master Node');

store node ( id = 2, comment = 'Slave Node',event node=1 );

store path ( server = 1, client = 2, conninfo = 'dbname=lao host=192.168.2.138 user=postgres password=74581');

store path ( server = 2, client = 1, conninfo = 'dbname=lao host=192.168.2.130 user=postgres password=74581');

store listen ( origin = 1, provider = 1, receiver = 2 );

store listen ( origin = 2, provider = 2, receiver = 1 );

create set ( id = 1, origin = 1, comment = 'All lao Tables' );

set add table (set id = 1,origin = 1,id = 1,fully qualified name = 'public.res2_4m',comment = 'Table res2_4m');

6.       运行脚本进入%PG%/bin目录下,运行slonik master.script

7.       在服务器上建立slony_master.conf配置文件,其内容是集群名称以及指向主服务器的连接配置。

例如:cluster_name = 'testlao'

conn_info = 'dbname=lao host=192.168.2.138 user=postgres password=74581'

8.     为服务添加引擎,%PG%/bin下运行 slon addengine slony_master.conf

9.       建立从服务器的脚步文件 slave.script

例如:

cluster name=testlao;

node 1 admin conninfo = 'dbname=lao host=192.168.2.138 user=postgres password=74581';

node 2 admin conninfo = 'dbname=newlao host=192.168.2.130 user=postgres password=74581';

SUBSCRIBE SET (ID = 1, PROVIDER = 1, RECEIVER = 2, FORWARD = NO, OMIT COPY = NO);

10.   从服务器上运行脚本 slonik slave.script

11.   在从服务器上建立引擎配置文件 slony-_slave.conf

例如:

Cluster_name = ‘testlao’

Conn_info = ‘dbname=lao host=192.168.2.130 user=postgres password=74581’

其内容是集群名称和指向从服务器的链接

12.   在从服务器中进入%PG%/bin目录,运行 slon –addengine slony_slave.conf

13.   分别在主服务器和从服务器上挂起服务并监听引擎。

五.              遇到的问题及解决方式。

1.       win7下注册动态链接库失败,提示:“模块slevent.dll已加载,但对DllRegisterServer的调用失败,错误代码为0x80040200“。解决方法:以管理员身份运行命令提示符,执行相同操作就可行。原因:win7对安全级别进行了设置,对动态链接库的注册要管理员模式才可以。

2.       在执行slonik configfilename时,发现找不到.sql文件。解决办法:复制+改名,到share文件夹下找到复制到bin目录,如果名字不对要改为相应的名字。

3.       slon –addengine时,可以slon –listengines来查看监视进程,如果没有的话要在运行中services.msc中开启slony-i服务

4.       当主从服务器配置好后,根据需要对两个触发器进行设置,开启或者关闭。

六.              参考链接:

http://blog.csdn.net/luo_yifan/archive/2010/03/23/5409338.aspx 对其中的错误进行了改正,并对遇到的问题进行了总结。

转载于:https://www.cnblogs.com/phoenixlaozhu/archive/2011/10/23/2222118.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值