postgresql 数据库同步复制

前端之家收集整理的这篇文章主要介绍了postgresql 数据库同步复制前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

一、 我们要实现的环境是windowsxp、windows2003@H_301_3@上安装@H_301_3@Postgresql数据库,实现目的是两台数据库服务器进行数据库同步,即数据库同步更新、删除、插入等对数据库的操作。@H_301_3@

二、 使用的工具是数据库版本Postgresql9.2,配置集群的工具是StackBuilder自己的可安装的Slony-Iv2.1.3-1。@H_301_3@

三、 Slony-I实现数据库集群同步的原理简述:Slony-i是采用一主多从式集群方式,通过在主服务器和从服务器上建立同步节点,设置远程访问路径,启动监听进程(slon守护进程)进行监听,当主服务器进行了修改操作时,通过触发器触发,从进程进行异步修改来达到数据库同步。但是这种同步只能是从服务器备份主服务器,不能修改从服务器让主服务器同步。也即这种同步是单方向的。而且主、从服务器的postgres@H_301_3@服务和@H_301_3@slony-I@H_301_3@服务都必须启动。@H_301_3@@H_301_3@

四、 先在两台机子上安装Postgresql和Slony-I,且都建立一个test@H_301_3@数据库。@H_301_3@并在test@H_301_3@库上建立需要@H_301_3@同步的表,例如testtable@H_301_3@,这些表必须要有主键(@H_301_3@Slony-I只是实现某个数据库,某些设定好的表的同步更新,新建表不行)。需要多个表则建立多个。@H_301_3@

五、详细配置步骤如下:@H_301_3@

1.环境@H_301_3@@H_301_3@@H_301_3@

@H_403_56@

Master192.168.101.128

Slave192.168.101.32

操作系统

WindowsXPSP3

WindowsServer2003SP1

Postgresql

9.2.4

9.2.4

Slony-I

2.1.3

2.1.3

2.实现要求@H_301_3@@H_301_3@@H_301_3@@H_301_3@

单向同步主服务器“192.168.101.128”到从服务器的“192.168.101.32”;

@H_301_3@ @H_301_3@

Master192.168.101.128

Slave192.168.101.32

数据库

test

test

用户名

postgres

postgres

密码

123

123

3.配置步骤:@H_301_3@@H_301_3@

第一步:@H_301_3@

注册服务:

在主服务器上以及从服务器上,进入%PG%/bin目录,运行“slon-regservice”;建立Slony@H_301_3@-@H_301_3@I@H_301_3@服务。@H_301_3@


第二步:@H_301_3@

建立联通性:

在主服务器上以及从服务器上,编辑%PG%/data/pg_hba.conf,使网络中的两个数据库服务器能相互访问;

都要加上主从服务器的ip,必须保留127.0.0.1

[plain] view plain copy
  1. #IPv4localconnections:@H_301_3@@H_301_3@
  2. @H_301_3@
  3. hostallall127.0.0.1/32md5@H_301_3@
  4. hostallall192.168.101.128/32md5@H_301_3@
  5. hostallall192.168.101.32/32md5@H_301_3@

第三步:@H_301_3@

建立主服务器脚本文件“master.script”;

注:postgrecluster为群集名,test@H_301_3@为需要复制的数据库名,testtable为复制表名(必须在两个库先建且要有主键),node1和node2中的1,2为节点的别名,可以用别的。

以下为文件详细内容

copy
    #----------------master.script-------------Start-----------------@H_301_3@@H_301_3@
  1. #定义集群名称@H_301_3@
  2. clustername=postgrecluster;@H_301_3@
  3. @H_301_3@
  4. #定义复制节点@H_301_3@
  5. #主节点@H_301_3@
  6. node1adminconninfo='dbname=testhost=192.168.101.128user=postgrespassword=123';@H_301_3@
  7. #从节点@H_301_3@
  8. node2adminconninfo='dbname=testhost=192.168.101.32user=postgrespassword=123';@H_301_3@
  9. #初始化集群,id从1开始@H_301_3@
  10. initcluster(id=1,comment='MasterNode');@H_301_3@
  11. #设置参与同步的数据表,创建复制集,id也是从1开始,从复制集添加表@H_301_3@
  12. createset(id=1,origin=1,comment='AlltestTables');@H_301_3@
  13. setaddtable(setid=1,id=1,fullyqualifiedname='public.testtable',comment='Tabletesttable');@H_301_3@
  14. #设置存储节点,存储主从两个节点的信息@H_301_3@
  15. storenode(id=2,comment='SlaveNode',eventnode=1);@H_301_3@
  16. #设置存储路径@H_301_3@
  17. storepath(server=1,client=2,conninfo='dbname=testhost=192.168.101.128user=postgrespassword=123');@H_301_3@
  18. storepath(server=2,client=1,conninfo='dbname=testhost=192.168.101.32user=postgrespassword=123');@H_301_3@
  19. #设置侦听事件和订阅方向,复制中角色,主节点是原始提供者,从节点是接收者@H_301_3@
  20. storelisten(origin=1,provider=1,receiver=2);@H_301_3@
  21. storelisten(origin=2,provider=2,receiver=1);@H_301_3@
  22. #----------------master.script-------------End-----------------@H_301_3@

第四步:@H_301_3@

运行脚本文件

在主服务器里进入%PG%/bin运行“slonikmaster.script”;

注:如果master.script@H_301_3@不放在@H_301_3@bin@H_301_3@目录下,则需要加上路径!@H_301_3@

第五步:@H_301_3@

在主服务器上建立引擎配置文件“slony_master.conf”,其内容是集群名称以及指向从服务器的连接配置;

@H_755_403@test@H_301_3@为需要复制的数据库名。

copy

    #----------------slony_master.conf-------------Start-----------------@H_301_3@@H_301_3@
  1. #集群名称@H_301_3@
  2. cluster_name=postgrecluster@H_301_3@
  3. #连接从服务器的信息@H_301_3@
  4. conn_info='dbname=testhost=192.168.101.32user=postgrespassword=123'@H_301_3@
  5. #----------------slony_master.conf-------------End-----------------@H_301_3@

第六步:@H_301_3@

为服务添加引擎:

在主服务器里进入%PG%/bin运行“slon-addengineslony_master.conf”;

第七步:@H_301_3@

建立从服务器脚本文件“slave.script”;

copy

    #------------------slave.script-------------Start-----------------@H_301_3@@H_301_3@
  1. #定义订阅@H_301_3@
  2. SUBSCRIBESET(ID=1,PROVIDER=1,RECEIVER=2,FORWARD=YES);@H_301_3@
  3. #------------------slave.script-------------End-------------------@H_301_3@

第八步:@H_301_3@

运行脚本文件:

在从服务器里进入%PG%/bin运行“slonikslave.script”;

第九步:@H_301_3@

在从服务器上建立引擎配置文件“slony_slave.conf”其内容是集群名称以及指向主服务器的连接配置;

注:postgrecluster为群集名test@H_301_3@为需要复制的数据库

copy

    #------------------slony_lave.conf-------------Start-----------------@H_301_3@@H_301_3@
  1. #连接主服务器的信息@H_301_3@
  2. conn_info='dbname=testhost=192.168.101.128user=postgrespassword=123'@H_301_3@
  3. #------------------slony_lave.conf-------------End-------------------@H_301_3@

第十步:@H_301_3@

在从服务器里进入%PG%/bin运行“slon-addengineslony_slave.conf”;

至此,所有配置已完成。进入主从服务器计算机管理,检查两台机器的postgresql@H_301_3@和@H_301_3@Slony-I@H_301_3@服务是否已启动,若未启动,请手动点击启动。@H_301_3@@H_301_3@

测试是否成功:@H_301_3@在主服务器testtable插入一条数据,到从服务器查看是否有数据。@H_301_3@

猜你在找的Postgre SQL相关文章