PostgreSQL的warm standby安装配置详解

Leave a Comment2009年08月19日 作者: 大头刚 

PostgreSQL的warm standby和Oracle的dataguard类似,简单说了就是1台主库primary,1台备库standby,standby利用primary的归档日志,使standby的数据和primary实时的同步,当primary宕机的时候,能及时的切换到standby。
当然,和oracle的dataguard技术相比,warm standby的功能没有那样完善,例如standby不提供只读,不能进行swtich,只提供failover等。相关的中文文档也是很少,PostgreSQL的路还很长呀。
下面以最新的8.4.0版本为例,介绍下如何配置PostgreSQL warm standby,简单的说就是4步。
1、安装PostgreSQL
在primary和standby的2台机器上安装配置好PostgreSQL,版本最好是一样的。安装方法可以参考我前面的文章,这里就不介绍了。
2、在primary配置WAL。
配置参数:

archive_mode = on
archive_command = ’scp %p standby_ip:/var/wal_archive/%f </dev/null’ #standby_ip是指备库的ip地址。
archive_timeout = 1200

这里注意archive_command是用的SCP,就是说归档到standby机器的指定目录,SCP不输密码配置可以去网上搜索。
archive_timeout设置根据自己的业务来把。
3、在primary进行一次全备,在恢复到standby。
3.1 在primary上进行备份,开启备份标识
echo “SELECT pg_start_backup(’mybackup’);” | psql -U postgres
3.2 将primary的数据文件备份打包,并传到standby
tar -cvf /shared/mybackup.tar /var/pgsql/data
scp /shared/mybackup.tar standby_ip:/var/pgsql
3.3 把备份解压到相对应的目录
rm -rf /var/pgsql/data
cd /var/pgsql
tar -xvf mybackup.tar
chown -R postgres:postgres data
3.4 在primary关闭备份标识
echo “SELECT pg_stop_backup();” | psql -U postgres
4、在standby配置recovery.conf,然后进行恢复。
4.1 创建recovery.conf

restore_command = ‘pg_standby -d -s 2 -t /tmp/pgsql.trigger.5442 /var/wal_archive [...]