一、系统环境

操作系统:Windows Server 2003/2008

两个节点分别为master与slave。

主节点master:172.27.19.28

备机点slave:172.27.19.31

PostgreSQL Plus Advanced Server:9.2.1.3

二、安装EnterpriseDB

安装EnterpriseDB时,请将master节点和slave节点设置为相同的密码!

在Windows中安装PPAS需要注意一点:不要将PPAS安装在带有空格的目录中,例如默认安装的Program Files目录,这样有可能影应用开发。推荐安装在根目录,例如"X:\PostgresPlus"。

为方便命令行的使用,可以在系统环境变量中增加"X:\PostgresPlus\9.2AS\bin",这样可以在命令行中方便运行psql命令。

三、配置PPAS流复制

1、分别停止master节点与slave节点上的PPAS服务

在Windows中启动、停止、重启与Linux中略有不同,请在控制面板管理工具中的服务控制台进行上述操作,同时建议在生产环境中将PPAS服务设置为手动启动模式。如下图所示:

点击"停止此服务"按钮,停止PPAS服务。

使用上面的方法,分别停止master节点与slave节点上的PPAS服务,并移除slave节点的data目录;

2、修改master节点的postgresql.conf文件

使用记事本或者其他的文本编辑工具修改master节点的postgresql.conf文件,该文件位于"X:\PostgresPlus\9.2AS\data"目录下。以下为修改的内容:

将listen_addresses的值设置为'*'

listen_addresses = '*'

配置归档模式为hot_standby

wal_level = hot_standby

配置最大备机数量,这里可以设置的稍大于实际情况,方便日后扩展

max_wal_senders = 5

打开hot_standby模式

hot_standby = on

修改完成之后保存退出。

3、修改master节点的pg_hba.conf文件

使用记事本或者其他的文本编辑工具修改master节点的pg_hba.conf文件,该文件位于"X:\PostgresPlus\9.2AS\data"目录下。以下为修改的内容:

增加以下行

host all all 0.0.0.0/0 md5

在文件结尾处增加以下行

host replication enterprisedb 172.27.19.28/32 trust

host replication enterprisedb 172.27.19.31/32 trust

host all all 172.27.19.28/32 trust

host all all 172.27.19.31/32 trust

4、启动master节点上的PPAS服务

点击红色矩形内箭头指出的"启动此服务"按钮,启动PPAS服务。

5、在master节点上执行一次基础备份

a)使用psql工具连接master节点

点击WIN+R键,在弹出的"运行"对话框中运行"cmd"命令,并切换到X:\PostgresPlus\9.2AS\bin目录中,X为您的PPAS安装的盘符。

在命令提示符下输入"cd c:/PostgresPlus/9.2AS/bin",切换到上面PPAS安装目录中的bin目录之后,运行"edb-psql --version",可以看到PPAS的版本信息:

运行edb-psql -U enterprisedb -p 5444 -d edb连接到PPAS数据库,看到如下图所示,说明连接成功:

b)开始执行基础备份

edb=# select pg_start_backup('fullbackup');

c)将data目录完全拷贝至slave节点,并删除postmaster.pid文件

d)结束基础备份

edb=# select pg_stop_backup();

6、删除slave节点的data目录中的postmaster.pid文件

7、创建recover.conf文件

在slave节点的data目录中创建recover.conf文件,这个文件可以从PPAS安装路径下的share目录中复制recover.conf.simple到data目录并重命名为recover.conf,编辑内容如下:

recovery_target_timeline = 'latest'

standby_mode = 'on'

primary_conninfo = 'host=172.27.19.28 port=5444 user=enterprisedb'

trigger_file = 'D://recovery_trigger'

8、检查和配置slave节点中PPAS的data目录的权限

在data目录上鼠标右键点击属性按钮,在弹出的对话框中,且还到安全选项卡,检查箭头所指部分是否有enterprisedb用户,如果有enterprisedb用户,请检查enterprisedb用户是否对data目录有完全控制权限;

如果没有enterprisedb用户,则点击编辑按钮,在弹出的"权限"设置对话框中,点击添加按钮,如下图所示:

点击添加按钮之后,会弹出选择用户的对话框,这里您可能看不到enterprisedb用户,或者不知道如何填写完整的用户名称,所以点击高级按钮,进行选择:

选择enterprisedb用户,双击之后一路确定,如下图所示:

在data权限对话框中,一定要选择完全控制,如图红色矩形标注的地方:

9、启动slave节点的PPAS服务

在slave节点控制面板中管理工具的服务控制台,点击下图所以的启动按钮启动PPAS服务:

四、流复制测试

1、master节点上进行写入记录测试

在master节点的edb数据库的dept表中插入一条记录

edb=# INSERT INTO dept VALUES(50,'CEO','BEIJING');

在slave节点上查询,看是否有刚才写入的记录:

可以看到我们刚才写入的记录已经在slave节点上同步了。

2、在slave节点进行同样的写入测试

INSERT INTO dept VALUES(60,'CFO','TIANJIN');

可以看到如下的错误信息:

这个消息是正确的,slave节点作为当前的备机,是只读模式的,所以不能进行写入操作。这里得出一个结论,master节点是可读可写的,而slave是可读不可写的!

3、创建新表及删除表

在master节点上创建测试数据库testdb,创建测试表tb_test,并在tb_test表中写入测试数据,同时检查slave节点,可以看到slave节点已经有了master节点中新写入的数据。

在slave节点上查看

可以看到刚才建立的表及写入的数据都已经存在。

在master节点执行删除表的命令:

edb=# drop table weather;

在slave节点可以看到刚才建立的表weather已经被删除!

五、主备切换

1、模拟故障

通过停止master节点上的PPAS服务或者其他方式,模拟master节点发生故障;

2、建立trigger文件将slave节点切换为主机

建立一个空文件并命名为recovery.conf文件中trigger_file参数指定的文件名;我们的recovery.conf文件中trigger_file参数的值为D://recovery_trigger,所以在D盘下建立一个空文件,命名为recovery_trigger文件;

在文件建立好时,slave节点即开始恢复动作;

经过恢复后成功的将业务切换到slave节点,这时的slave节点成为主机,同时,slave节点目录中的recovery.conf文件已经被更名为recovery.done,并且会自动删除D://recovery_trigger文件。

这时的slave节点已经是可读可写的,说明它已经且还为主机

INSERT INTO DEPT VALUES(80,'MDL','GUANGZHOU');

SELECT * FROM DEPT;

3、启用原主机(master节点)

修复出现故障的原master节点后,同样需要在原master节点的data目录中创建recovery.conf文件,之后的步骤与三(5、6、7、8、9)操作相同。

在第7小步骤配置recovery.conf文件时,因为这时的data已经存在一个recovery.done文件,所以只需要将这个文件改名为recovery.conf,并且修改文件中的host一节的ip地址即可!其他的操作都是相同的,此处不再重复。

[原创] PostgreSQL Plus Advanced Server在Windows中配置双机热备流复制的更多相关文章

  1. [原创]PostgreSQL Plus Advanced Server配合crontab实现定时维护工作

    本文要实现的目标1.PostgreSQL定时全备2.定时删除归档WAL文件3.定时删除全备文件4.删除n天之前的数据库日志文件 实验环境操作系统:RHEL 6.3数据库:PostgreSQL Plus ...

  2. [原创]PostgreSQL Plus Advanced Server监控工具PEM(四)

    四.PEM管理工具 1.编辑配置 选择进行管理的目标服务器,点击菜单Tools->Server Configuration->postgresql.conf管理服务器配置,可以看到我们经常 ...

  3. [原创]PostgreSQL Plus Advanced Server监控工具PEM(三)

    三.使用PEM Client 在PEM Client中连接PEM Server 点击上图所示的按钮或点击菜单-> 第一次连接PEM Server,会有一次导入证书的操作,点击Yes按钮. 接下来 ...

  4. [原创]PostgreSQL Plus Advanced Server监控工具PEM(二)

    2.安装PEM Client 简单两条命令,开始PEM Client的安装. 我们在SUSE 11sp2上安装PEM Client 安装结束,运行PEM Client后可以看到如下的界面: 目前我们并 ...

  5. [原创]PostgreSQL Plus Advanced Server监控工具PEM(一)

    一.概述 PEM是为数据库管理员.系统架构师和性能分析师为管理.监控和优化 PostgreSQL 和 EnterpriseDB 数据库服务器设计的图形化管理工具.旨在解决大量数据库服务器跨地域.精细化 ...

  6. [原创]PostgreSQL Plus Advanced Server批量创建分区表写入亿级别数据实例

    当前情况:大表的数据量已接近2亿条我的解决思路:为它创建n*100个分区表,将各个分区表放在不同的tablespace上这样做的优点:1.首先是对这个级别的数据表的性能会有所提升2.数据管理更科学3. ...

  7. KingbaseES V8R6集群部署案例之---Windows环境配置主备流复制(异机复制)

    案例说明: 目前KingbaseES V8R6的Windows版本不支持数据库sys_rman的物理备份,可以考虑通过建立主备流复制实现数据库的异机物理备份.本案例详细介绍了,在Windows环境下建 ...

  8. KingbaseES V8R6集群部署案例之---Windows环境配置主备流复制(同一主机)

    案例说明: 目前KingbaseES V8R6的Windows版本不支持数据库sys_rman的物理备份,可以考虑通过建立主备流复制实现数据库的异机物理备份.本案例详细介绍了,在Windows环境下建 ...

  9. [原创]使用benchmarksql和pgbench对PostgreSQL Plus Advanced Server进行性能测试

    一.测试环境 benchmarksql version:4.0.8 rhel 6.3 vmware esxi 二.理解benchmarksql性能测试原理TPC-C 1.理解TPC-C TPC-C模拟 ...

随机推荐

  1. How to deploy JAVA Application on Azure Service Fabric

    At this moment, Azure Service Fabric does not support JAVA application natively (but it's on the sup ...

  2. bzoj1003 [ZJOI2006]物流运输

    1003: [ZJOI2006]物流运输 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 6300  Solved: 2597[Submit][Stat ...

  3. 延迟jquery,ready事件触发的时间

    $.holdReady(true);//holdReady必须在ready()方法调用之前来调用,来延迟ready()方法的执行 $(document).ready(function(){ conso ...

  4. JQ仿select框

    点击[cy_title]后弹出[cy_list]层,选中里面的元素把值赋给 [cy_title] 在[cy_list] 打开的时候,点击其他地方可以关闭: HTML: <div class=&q ...

  5. repeater标签双重循环的使用

    在网站开发中,.NET中的repeater标签几乎是笔者首选,也是唯一一个不会生成多余元素的标签,所有样式都是自定义的,这点类似 struts中的<s:iterator/>标签. 在日常编 ...

  6. POJ C程序设计进阶 编程题#1:含k个3的数

    编程题#1:含k个3的数 来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 注意: 总时间限制: 1000ms 内存限制: 65536kB 描述 输 ...

  7. Mysql授权GRANT ALL PRIVILEGES

    1. 改表法. 可能是你的帐号不允许从远程登陆,只能在localhost.这个时候只要在localhost的那台电脑,登入mysql后,更改 "mysql" 数据库里的 " ...

  8. 设置ShowDialog

    1.在winform窗体中的button控件,可以直接设置DialogResult属性为OK或者Cancel来控制其他窗口中调用此窗口需要验证DialogResult结果是OK还是其他....

  9. 小菜的系统框架界面设计-数据的完美呈现(DataGridView扩展)

    背景 今天在做系统报表的过程中,我想实现批量操作DataGridView中的数据,在列中加复选框,通过一个事件触发进行全选或取消,可是在外面添加按钮,这种模式虽然能够实现,但是从系统界面设计的角度,美 ...

  10. javascript的变量,传值和传址,参数之间关系

    先把收获晾一下: 1.javascrip变量包含两种类型的值,一种为引用类型的值,一种是基本类型的值.引用类型包括:Array,Object,Function(可以这么理解,非基本类型的都是引用类型) ...