蘇's 发表于 2013-1-4 02:28:18

PostgreSQL Hot Standby

<div id="cnblogs_post_body">一、简介

   PostgreSQL数据库提供了类似Oracle的standby数据库的功能。PostgreSQL9.0 standby数据库在应用WAL日志的同时,也可以提供只读服务,这是PostgreSQL9.0中最激动人心的功能,这个功能在oracle数据库中也只是最新版本11g中才有的新功能。这个功能在oracle中叫active dataguard,在PostgreSQL中称为hot standby。在利用日志恢复数据的同时可以用只读的方式打开数据库,用户可以在备用数据库上进行查询、报表等操作,也可用做读写分离。在PostgreSQL9.0之前,也可以搭建standby数据库,但standby数据库只能处于恢复状态中,不能打开,也不支持只读打开。而这种情况在9.0之后彻底改变了。
   PostgreSQL 9.0中日志传送的方法有两种:
   基于文件(base-file)的传送方式,这种方式是PostgreSQL9.0之前就提供的方法。也就是服务器写完一个WAL日志文件后,才把WAL日志文件拷贝到standby数据库上去应用。
   流复制(streaming replication)的方法,这是PostgreSQL9.0才提供的新方法。这个方法就是事务提交后,就会把生成的日志异步的传送到standby数据库上应用,这比基本文件的日志传送方法有更低的数据延迟。
二、设置步骤

   基于文件(base-file)的传送方式在PostgreSQL8.X中就有的方式,这里不就介绍了,这里主要介绍流复制的standby的搭建方法,设置步骤如下:
   对主数据库做一个基础备份,然后把基础备份拷贝到standby机器,把基础备份恢复到standby机器上。
   1、在主库上设置wal_level = hot_standby。
   2、在主数据库上设置wal_keep_segments为一个足够大的值,以防止主库生成WAL日志太快,日志还没有来得及传送到standby,就会循环覆盖了;
   3、在主数据库上设置max_wal_sender参数,这个参数是控制主库可以最多有多少个并发的standby数据库;
   4、在主数据库上建一个超级用户,standby数据库会使用这个用户连接到主库上拖WAL日志。
   5、在主数据库上的pg_hba.conf中设置listen_addresses和连接验证选项,允许standby数据库连接到主库上来拖WAL日志数据,如下所示:
<div class="cnblogs_code">   # TYPE DATABASE USER CIDR-ADDRESS METHOD   host    replication   postgres      10.0.0.136/8            md5
页: [1]
查看完整版本: PostgreSQL Hot Standby