一、系统环境

操作系统: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. OpenJudge 取数游戏

    描述 我们来玩一个游戏:自然数1到N,按顺序列成一排,你可以从中取走任意个数,但是相邻的两个不可以同时被取走.如果你能算出一共有多少种取法,那么你会被天神Lijiganjun奖励. 输入 仅包含一个数 ...

  2. [前端 4] 使用Js实现图片上传预览

    导读:今天做图片上传预览,刚开始的做法是,先将图片上传到Nginx,然后重新加载页面才能看到这个图片.在这个过程中,用户一直都看不到自己上传的文件是什么样子.Ps:我发现我真的有强迫症了,都告诉我说不 ...

  3. C++学了这么多年,你仍不知道的事

    C++学了这么多年你知道为什么定义类时,类的定义放在.h文件中,而类的实现放在cpp文件中.它们为什么能够关联到一起呢?你知道什么东西可以放在.h文件中,什么不能.什么东西又可以放在cpp文件中.如果 ...

  4. HTTP CHUNKED C实现

    C语言不像C#一样有很多很多高度的模块化的东西可以使用,在通讯过程中特别是与http相关的通讯过程中可能要对网站返回的数据做一定处理,而且有不少网站的回应是强制性的,例如向网站请求deflate有个能 ...

  5. c++ builder TreeView控件节点遍历

    void __fastcall TForm1::GetRootNodes(TTreeView *DestTreeView)//得到所有根节点 { TTreeNode *vNode = NULL; vN ...

  6. CentOS下通过rdesktop连接Windows远程桌面

    众所周知,微软的Windows提供了一种远程桌面系统(Remote Desktop),该服务的默认端口是3389,可使用户远程登录进行系统管理或作为终端服务器运行各种应用软件. 而要连接Windows ...

  7. Distant Supervision for relation extraction without labeled data

    Distant Supervision for relation extraction without labeled data 远程监督:使用未标注语料做关系抽取 1. 背景: 关系抽取(某个人是否 ...

  8. CentOS安装rpm包时error:Failed dependencies

    CentOS6.5安装rpm包时报错,error:Failed dependencies,解决方法如下: 在安装命令后加两个参数 --nodeps --force ,即安装时不再分析包之间的依赖关系而 ...

  9. 开发iOS应用程序需要的工具和编程技术

    似乎每个iOS应用开发学习者都是从这篇文章开始写博客的,我也不例外,也从这里写吧,内容雷同,但绝对是原创.因为一直相信,通过自己的理解写出来,是掌握技术一个很好的途径. Xcode苹果最为优秀的集成开 ...

  10. Linux Direct 文件读写(文件DIO)

    有时候,读写文件并不想要使用系统缓存(page cache),此时 direct 文件读写就派上了用场,使用方法: (1)打开文件时,添加O_DIRECT参数: 需要定义_GNU_SOURCE,否则找 ...