Windows下Postgre SQL数据库通过Slony-I 实现数据库双机同步备份
一、 我们要实现的环境是windows xp、windows2003上安装Postgre SQL数据库,实现目的是两台数据库服务器进行数据库同步,即数据库同步更新、删除、插入等对数据库的操作。
二、 使用的工具是数据库版本Postgre SQL 9.2,配置集群的工具是Stack Builder自己的可安装的Slony-I v2.1.3-1。
三、 Slony-I实现数据库集群同步的原理简述:Slony-i是采用一主多从式集群方式,通过在主服务器和从服务器上建立同步节点,设置远程访问路径,启动监听进程(slon守护进程)进行监听,当主服务器进行了修改操作时,通过触发器触发,从进程进行异步修改来达到数据库同步。但是这种同步只能是从服务器备份主服务器,不能修改从服务器让主服务器同步。也即这种同步是单方向的。而且主、从服务器的postgres服务和slony-I服务都必须启动。
四、 先在两台机子上安装 Postgre SQL和Slony-I,且都建立一个test的数据库。并在test库上建立需要同步的表,例如testtable,这些表必须要有主键(Slony-I只是实现某个数据库,某些设定好的表的同步更新,新建表不行)。需要多个表则建立多个。
五、详细配置步骤如下:
1.环境
Master 192.168.101.128 |
Slave 192.168.101.32 |
|
操作系统 |
Windows XP SP3 |
Windows Server 2003 SP1 |
Postgre SQL |
9.2.4 |
9.2.4 |
Slony-I |
2.1.3 |
2.1.3 |
2.实现要求
单向同步主服务器“192.168.101.128”到从服务器的“192.168.101.32”;
Master 192.168.101.128 |
Slave 192.168.101.32 |
|
数据库名 |
test |
test |
用户名 |
postgres |
postgres |
密码 |
123 |
123 |
3.配置步骤:
第一步:
注册服务:
在主服务器上以及从服务器上,进入%PG%/bin目录,运行“slon -regservice”;建立Slony-I服务。
第二步:
建立联通性:
在主服务器上以及从服务器上,编辑%PG%/data/pg_hba.conf,使网络中的两个数据库服务器能相互访问;
都要加上主从服务器的ip,必须保留127.0.0.1
# IPv4 local connections: host all all 127.0.0.1/32 md5 host all all 192.168.101.128/32 md5 host all all 192.168.101.32/32 md5
第三步:
建立主服务器脚本文件“master.script”;
注:postgrecluster为群集名, test为需要复制的数据库名,testtable为复制表名(必须在两个库先建且要有主键),node 1 和 node 2 中的1,2为节点的别名,可以用别的。
以下为文件详细内容:
#----------------master.script-------------Start----------------- #定义集群名称 cluster name=postgrecluster; # 定义复制节点 #主节点 node 1 admin conninfo = 'dbname=test host=192.168.101.128 user=postgres password=123'; #从节点 node 2 admin conninfo = 'dbname=test host=192.168.101.32 user=postgres password=123'; # 初始化集群,id从1开始 init cluster ( id = 1, comment = 'Master Node' ); #设置参与同步的数据表,创建复制集,id也是从1开始,从复制集添加表 create set ( id = 1, origin = 1, comment = 'All test Tables' ); set add table ( set id = 1, origin = 1, id = 1, fully qualified name = 'public.testtable', comment = 'Table testtable' ); #设置存储节点,存储主从两个节点的信息 store node ( id = 2, comment = 'Slave Node', event node = 1); #设置存储路径 #主节点 store path ( server = 1, client = 2, conninfo = 'dbname= test host=192.168.101.128 user=postgres password=123'); #从节点 store path ( server = 2, client = 1, conninfo = 'dbname= test host=192.168.101.32 user=postgres password=123'); #设置侦听事件和订阅方向,复制中角色,主节点是原始提供者,从节点是接收者 store listen ( origin = 1, provider = 1, receiver = 2 ); store listen ( origin = 2, provider = 2, receiver = 1 ); #----------------master.script-------------End-----------------
第四步:
运行脚本文件
在主服务器里进入%PG%/bin运行“slonik master.script” ;
注:如果 master.script 不放在bin目录下,则需要加上路径!
第五步:
在主服务器上建立引擎配置文件“slony_master.conf”,其内容是集群名称以及指向从服务器的连接配置;
注:postgrecluster为群集名, test为需要复制的数据库名。
以下为文件详细内容:
#----------------slony_master.conf-------------Start----------------- #集群名称 cluster_name = postgrecluster #连接从服务器的信息 conn_info = 'dbname=test host=192.168.101.32 user=postgres password=123' #----------------slony_master.conf-------------End-----------------
第六步:
为服务添加引擎:
在主服务器里进入%PG%/bin运行“slon -addengine slony_master.conf”;
第七步:
建立从服务器脚本文件“slave.script”;
注:postgrecluster为群集名, test为需要复制的数据库名。
以下为文件详细内容:
#------------------slave.script-------------Start----------------- #定义集群名称 cluster name=postgrecluster; #定义复制节点 #主节点 node 1 admin conninfo = 'dbname=test host=192.168.101.128 user=postgres password=123'; #从节点 node 2 admin conninfo = 'dbname=test host=192.168.101.32 user=postgres password=123'; #定义订阅 SUBSCRIBE SET (ID = 1, PROVIDER = 1, RECEIVER = 2, FORWARD = YES); #------------------slave.script-------------End-------------------
第八步:
运行脚本文件:
在从服务器里进入%PG%/bin运行“slonik slave.script” ;
第九步:
在从服务器上建立引擎配置文件“slony_slave.conf”其内容是集群名称以及指向主服务器的连接配置;
注:postgrecluster为群集名 test为需要复制的数据库名
以下为文件详细内容:
#------------------slony_lave.conf-------------Start----------------- #集群名称 cluster_name = postgrecluster #连接主服务器的信息 conn_info ='dbname=test host=192.168.101.128 user=postgres password=123' #------------------slony_lave.conf-------------End-------------------
第十步:
为服务添加引擎:
在从服务器里进入%PG%/bin运行“slon -addengine slony_slave.conf”;
至此,所有配置已完成。进入主从服务器计算机管理,检查两台机器的postgresql和Slony-I服务是否已启动,若未启动,请手动点击启动。
测试是否成功:在主服务器testtable插入一条数据,到从服务器查看是否有数据。
Windows下Postgre SQL数据库通过Slony-I 实现数据库双机同步备份的更多相关文章
- 同一台windows下配置安装多个mysql实例,实现主从同步
一.安装多个mysql 参见: https://blog.csdn.net/wrh_csdn/article/details/80198795 https://www.cnblogs.com/qjoa ...
- Windows下cwrsync客户端与rsync群辉存储客户端数据同步
cwRsync简介 cwRsync是Rsync在Windows上的实现版本,Rsync通过使用特定算法的文件传输技术,可以在网络上传输只修改了的文件. cwRsync主要用于Windows上的远程文件 ...
- Linux和windows下执行sql脚本文件
利用 sqlplus 登录数据库之后 键入: @/全路径/文件名 即可执行*.sql 文件 例 假设有一个 test.sql 文件 所在路径是/home/oracle/ ...
- maven在windows下的安装配置及手动引入oracle数据库jar包
一.maven的安装配置 注意:在进行如下配置之前,有个前提是你的java的jdk安装配置正确才行 1.首先,下载maven,网址http://maven.apache.org/download.cg ...
- Windows下使用CMD命令进入和退出MySQL数据库
一.进入 1.在CMD命令窗口敲入命令 mysql -hlocalhost -uroot -p 后按回车(注意这里的"-h"."-u"."-p&quo ...
- Windows下通过CMD命令行程序操作MySQL数据库
注意:如果您的MySQL没有安装在C盘下,先使用命令进入MySQL的安装目录下的bin目录中才可以进行后续操作. 方法如下:例如您安装在D盘.先输入 D: 回车即可进入D盘,再输入cd D:\您my ...
- 个人整理的 Windows 下 .NET 开发必装的软件
注: 最后更新时间:2019-03-15 一..NET 开发 1. 必装 软件名称 说明 下载地址 JetBrains Toolbox JetBrins 全家桶管理工具. 下载地址 JetBrains ...
- 在 Windows 下安装 Oracle 11g XE (Express Edition)
Oracle 11g XE 是 Oracle 数据库的免费版本,支持标准版的大部分功能,11g XE 提供 Windows 和 Linux 版本. 做为免费的 Oracle 数据库版本,XE 的限制是 ...
- windows下sqli-labs的搭建及学习(GET篇)
环境搭建: 源码下载地址:https://github.com/Audi-1/sqli-labs 需要搭建以下环境: apache+mysql+php Tomcat+mysql+java(部分关卡需要 ...
随机推荐
- Strut2 采用token机制防御CSRF同时也可以防止表单重复提交
一 未配置Struts2 token的情况下测试 1.从表单提交数据,可以从下图看出,快速点击保存按钮,请求提交了两次 2.检查post提交的数据中未含有token参数 3.查看数据列表,有重复数据 ...
- c++primerplus(第六版)编程题——第6章(分支语句和逻辑运算符)
声明:作者为了调试方便,每一章的程序写在一个工程文件中,每一道编程练习题新建一个独立文件,在主函数中调用,我建议同我一样的初学者可以采用这种方式,调试起来会比较方便. (具体方式参见第3章模板) 1. ...
- 【BZOJ1012】【树状数组求区间最值】最大数maxnumber
Description 现在请求你维护一个数列,要求提供以下两种操作: 1. 查询操作.语法:Q L 功能:查询当前数列中末尾L个数中的最大的数,并输出这个数的值.限制:L不超过当前数列的长度. 2. ...
- yield用法的一点理解
yield 关键字与 return 关键字结合使用,向枚举器对象提供值.这是一个返回值,例如,在 foreach 语句的每一次循环中返回的值.yield 关键字也可与 break 结合使用,表示迭代结 ...
- Getopt::Long 模块的简单使用
用法简介 1.带值参数传入程序内部 ※参数类型:整数, 浮点数, 字串 GetOptions( 'tag=s' => \$tag ); ‘=’表示此参数一定要有参数值, 若改用’:'代替表示参数 ...
- Linux下安装SVN服务(CentOS7下)
1. 安装 centos(我这里使用的是CentOS7)下yum命令即可方便的完成安装 测试安装是否成功: 2. 建立版本库 创建svn数据目录(subversion默认是把/var/svn作为数据根 ...
- python split()黑魔法
split()用法: #!/usr/bin/python str = "Line1-abcdef \nLine2-abc \nLine4-abcd"; print str.spli ...
- input file文件上传样式
<style> .file-group { position: relative; width: 200px; height: 80px; ...
- linux 定时执行shell
第一步:安装 crontab ,命令 yum -y install vixie-cron 扩展:service crond start //启动服务 ...
- 深入浅出C语言中的堆和栈
在谈堆栈的时候,我在这有必要把计算机的内存结构给大家简单的介绍下(高手们可以直接飘过) 一. 内存结构 每个程序一启动都有一个大小为4GB的内存,这个内存叫虚拟内存,是概念上的,真正能用到的,只是 ...