zoukankan      html  css  js  c++  java
  • [原创] PostgreSQL Plus Advanced Server在Windows中配置双机热备流复制

    一、系统环境

    操作系统: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:PostgresPlus9.2ASin",这样可以在命令行中方便运行psql命令。

    三、配置PPAS流复制

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

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

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

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

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

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

    将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:PostgresPlus9.2ASdata"目录下。以下为修改的内容:

    增加以下行

    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:PostgresPlus9.2ASin目录中,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地址即可!其他的操作都是相同的,此处不再重复。

  • 相关阅读:
    intelliJ idea 9设置
    Ibatis的cache使用
    发现个漂亮的eclipse插件
    Java compiler level does not match the version of the installed Java project facet
    ajax servlet端小问题
    Annotation学习小结
    杯具的webservice,杯具的axis和xfire
    idea 9
    aptana 注释快捷键失效
    javascript深入理解js闭包
  • 原文地址:https://www.cnblogs.com/ode/p/3299513.html
Copyright © 2011-2022 走看看