PostgreSQL的流复制配置(基于事务日志传送)

一世执手 提交于 2019-11-26 14:18:34

  自PostgreSQL 9.0开始,添加了流复制(Streaming Repulication)。流复制源于pg早期的“同步日志传送复制”(Synchronous Log Shipping Repulication)--一个高可用的(HA)解决方案。

  流复制是基于事务日志传送的。热备份服务器可以通过读取WAL记录流来保持数据库的当前状态。 如果主服务器失效,那么热备份服务器将包含几乎所有主服务器的数据, 并可以迅速的将自己切换为主服务器。这可以是同步的或者异步的, 并且只能在整个数据库服务器上实施。 

环境:

centos 32bit虚拟机两台;

安装配置过程:

说明:Primary_IP 表示主服务器IP地址

    Standby_IP 表示备用服务器IP地址

1.准备主、备数据库

主、备库数据库版本:PostgreSQL9.2.13

在主服务器中安装PostgreSQL并初始化一个数据库集合(备用服务器同理,可以不初始化数据库):

cd ./root/Desktop (打开安装文件所在目录)
./configure --prefix=/opt/pgsql92
gmake -world
gmake install

2.配置主库

 在主库中配置../data/postgresql.conf

 vi postgresql.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

 host replication all Standby_IP/32 trust   #用户可设置为all或postgres

3.为主库做data目录基础备份

 启动主服务器中的PostgreSQL数据库,执行基础备份:

 ../bin/psql -U posgres

  postgres#select pg_start_backup('hot_backup'); (可使用任意符号做备份标记)
  postgres#\q

 tar -zcvf data.tar.gz data        

 ../bin/psql -U posgres

 postgres# select pg_stop_backup();

 将基础备份拷贝到备用服务器的数据库安装目录下:

 scp data.tar.gz  Standby_IP:/opt/pgsql922

 然后解压,作为备库的data目录。

4.配置备库

 在备用服务器的PostgreSQL中配置postgresql.conf文件中的参数

 vi postgresql.conf

 hot_standby = on

 在备用服务器PostgreSQL的data目录下建立recovery.conf文件

 vi recovery.conf

 standby_mode = true
 primary_conninfo = 'host=Primay_IP  port=5432 user=postgres password=password'

5.重启服务

 至此主、备库安装配置完毕,重启主库,然后重启备库。    

 此时备库中的数据与主库中一致,正常情况下,此后对主库修改的内容将同步到备库。

注意:

1.一定要确保修改后的参数更新完毕,例如可以通过postgres#show wal_level来查看wal_level的参数。如果参数没有更新则服务器无法运行,所以一定要保证参数更新,方法是:关闭所有postgres服务后重新启动。     2.运行PostgreSQL数据库后,在priamy的任何修该都会同步到standby中,standby不能对数据库做修改只能查看。

3.一定要把防火墙关闭,否则主-备服务器无法获得连接,会出现如下问题:               

 FATAL: could not connect to the primary server: could not connect to server: No route to host  Is the server running on host "192.168.100.112" and accepting  TCP/IP connections on port 5432?

 关闭防火墙的方法,请参考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


易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!