如何在PostgreSQL 9.1中设置两个相同的服务器以进行自动故障转移。
操作系统
从源代码编译的Centos 5 PostgreSQL 9.1
postgres用户帐户在两台机器上都存在,并且具有ssh无密码密钥来连接到两台机器。
我当前的设置:
主服务器配置:
postgresql.conf:
listen_address = '*'
wal_level = hot_standby
max_wal_senders = 3
checkpoint_segments = 16
wal_keep_segments = 8
archive_mode = on
archive_command = 'cp "%p" /opt/pgsql91/archive/"%f"'
pg_hba.conf:
host replication all 10.0.66.1/32 trust
host replication all 10.0.66.2/32 trust
备用服务器
postgresql.conf和pg_hba.conf与主服务器上配置的相同。
recovery.conf:
standby_mode = 'on'
primary_conninfo = 'host=10.0.66.1'
trigger_file = '/opt/pgsql91/data/trigger.txt'
多亏了hzRoot,我现在了解了如何将服务器从备用服务器切换到主服务器。
使用以下命令,我可以将新的从属服务器与新的主服务器同步,然后获得复制备份并运行。
在新的主服务器上(10.0.66.2)
- su-postgres
- 触摸/ opt / pgsql91 / data /中的trigger.txt
- recovery.conf变为recovery.done
- psql -c“; SELECT pg_start_backup('backup',true)”;
- rsync -a -v -e ssh / opt / pgsql91 / data / 10.0.66.1:/opt/pgsql91/data/-排除postmaster.pid
- psql -c“; SELECT pg_stop_backup()”;
在新的从属服务器上(10.0.66.1)
- 创建recovery.conf:cp recovery.done至recovery.conf
- vi recovery.conf更改IP地址:primary_conninfo ='host = 10.0.66.2'
- 开始PostgreSQL
所以我的问题是:
- 这是切换角色的正确方法吗?
- 是否有人自动化了此过程,如果是,您做了什么?
- 如果启用了同步复制,我注意到新的主服务器将不会提交任何事务,因为它正在等待从属服务器响应。但是没有从属服务器,因为另一个服务器旧的主服务器已关闭。这是正确的还是我需要在新的从属服务器关闭时临时禁用同步复制?