自Postgresql 9.0开始,添加了流复制(Streaming Repulication)。流复制源于pg早期的“同步日志传送复制”(Synchronous Log Shipping Repulication)--一个高可用的(HA)解决方案。
流复制是基于事务日志传送的。热备份服务器可以通过读取WAL记录流来保持数据库的当前状态。 如果主服务器失效,那么热备份服务器将包含几乎所有主服务器的数据, 并可以迅速的将自己切换为主服务器。这可以是同步的或者异步的, 并且只能在整个数据库服务器上实施。
环境:
centos 32bit虚拟机两台;
安装配置过程:
说明:Primary_IP 表示主服务器IP地址
Standby_IP 表示备用服务器IP地址
1.准备主、备数据库
在主服务器中安装Postgresql并初始化一个数据库集合(备用服务器同理,可以不初始化数据库):
cd./root/Desktop(打开安装文件所在目录)
./configure--prefix=/opt/pgsql92
gmake-world
gmakeinstall
2.配置主库
在主库中配置../data/postgresql.conf
vipostgresql.conf
listen_address='*' wal_level=hot_standby max_wal_zenders=30(根据实际情况自己设置即可) archive_mode=on archive_command='cd'
在主库中配置../data/pg_hba_conf文件中的参数
vi pg_hba.conf
hostreplicationallStandby_IP/32trust#用户可设置为all或postgres
3.为主库做data目录基础备份
../bin/psql -U posgres
postgres#selectpg_start_backup('hot_backup');(可使用任意符号做备份标记) postgres#\q
tar -zcvf data.tar.gz data
../bin/psql-U posgres
postgres#selectpg_stop_backup();
将基础备份拷贝到备用服务器的数据库安装目录下:
scp data.tar.gz Standby_IP:/opt/pgsql922
然后解压,作为备库的data目录。
4.配置备库
在备用服务器的Postgresql中配置postgresql.conf文件中的参数
vipostgresql.conf
hot_standby=on
在备用服务器Postgresql的data目录下建立recovery.conf文件
virecovery.conf
standby_mode=true primary_conninfo='host=Primay_IPport=5432user=postgrespassword=password'
5.重启服务
至此主、备库安装配置完毕,重启主库,然后重启备库。
此时备库中的数据与主库中一致,正常情况下,此后对主库修改的内容将同步到备库。
注意:
1.一定要确保修改后的参数更新完毕,例如可以通过postgres#show wal_level来查看wal_level的参数。如果参数没有更新则服务器无法运行,所以一定要保证参数更新,方法是:关闭所有postgres服务后重新启动。 2.运行Postgresql数据库后,在priamy的任何修该都会同步到standby中,standby不能对数据库做修改只能查看。
3.一定要把防火墙关闭,否则主-备服务器无法获得连接,会出现如下问题:
FATAL:couldnotconnecttotheprimaryserver:couldnotconnecttoserver:NoroutetohostIstheserverrunningonhost"192.168.100.112"andacceptingTCP/IPconnectionsonport5432?
关闭防火墙的方法,请参考:http://my.oschina.net/liuyuanyuangogo/blog/506221。
参考资料
不同方案比较:http://www.postgresql.org/docs/9.2/static/different-replication-solutions.html
流复制:http://www.postgresql.org/docs/9.2/static/warm-standby.html#STREAMING-REPLICATION
原文链接:https://www.f2er.com/postgresql/195589.html