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地址即可!其他的操作都是相同的,此处不再重复。

  • 相关阅读:
    398. Random Pick Index
    382. Linked List Random Node
    645. Set Mismatch
    174. Dungeon Game
    264. Ugly Number II
    115. Distinct Subsequences
    372. Super Pow
    LeetCode 242 有效的字母异位词
    LeetCode 78 子集
    LeetCode 404 左叶子之和
  • 原文地址:https://www.cnblogs.com/ode/p/3299513.html
Copyright © 2011-2022 走看看