最近给PostgreSQL搞伤了,Debian 5默认PostgreSQL是8.4,本身是不支持Primary/Standby集群的。在经历尝试Slony的超级复杂配置和pgpool无法按照步骤成功的痛苦经历情况下,将PostgreSQL升级到9.0,但是根据网上一些手册还是配置不成功,经过摸索终于成功配置了,并将配置文件公布出来供参考。
安装指令如下,其中192.168.0.212作为Primary服务器,192.168.0.211作为Standby服务器
两台服务器共同执行部分:
vim /etc/apt/sources.list
在最后加入:
deb http://backports.debian.org/debian-backports lenny-backports main
deb http://backports.debian.org/debian-backports lenny-backports-sloppy main
apt-update
wget http://ftp.us.debian.org/debian/pool/main/o/ossp-uuid/libossp-uuid15_1.5.1-1.1+b1_i386.deb
wget http://ftp.us.debian.org/debian/pool/main/o/ossp-uuid/libossp-uuid-dev_1.5.1-1.1+b1_i386.deb
dpkg -i libossp-uuid*.deb
apt-get install -t lenny-backports postgresql-common
apt-get install -t lenny-backports-sloppy postgresql-9.0 postgresql-client-9.0 postgresql-contrib-9.0 postgresql-server-dev-9.0
vim /etc/postgresql/9.0/main/pg_hba.conf
最后加一行
host all all 192.168.0.0/24 md5
vim /etc/postgresql/9.0/main/postgresql.conf
修改listen_addresses = ‘localhost’为listen_addresses = ‘*’,如果前面有#号则需要删除#号
/etc/init.d/postgresql restart
212 Primary服务器配置
su – postgres
psql
create user repl superuser log in password ‘replpwd’ ;
vim /etc/postgresql/9.0/main/pg_hba.conf
最后添加以下内容
host replication repl 192.168.0.211/32 md5
vim /etc/postgresql/9.0/main/postgresql.conf
主要配置修改如下:
wal_level = hot_standby
archive_mode = on
archive_command = ‘cp -i %p /var/lib/postgresql/9.0/archivedir/%f </dev/null’
archive_timeout = 600
max_wal_senders = 5
wal_keep_segments = 32
su – postgres
mkdir /var/lib/postgresql/9.0/archivedir/
/etc/init.d/postgresql stop
/etc/init.d/postgresql start
211Standby服务器配置
vim /etc/postgresql/9.0/main/postgresql.conf
主要配置修改如下:
wal_level = hot_standby
hot_standby = on
vim /etc/postgresql/9.0/main/recovery.conf
内容如下:
restore_command = ‘cp /var/lib/postgresql/9.0/archivedir/%f %p’ archive_cleanup_command = ‘pg_archivecleanup /var/lib/postgresql/9.0/archivedir %r’
standby_mode = ‘on’
primary_conninfo = ‘host=192.168.0.212 port=5432 user=repl password=replpwd’
trigger_file = ‘/var/lib/postgresql/9.0/trigger_activestb’
cp /etc/postgresql/9.0/main/recovery.conf /var/lib/postgresql/9.0/main/
/etc/init.d/postgresql stop
su – postgres
cd /var/lib/postgresql/9.0/
rm –R –f main
mkdir main
chmod –R 700 main
传送数据文件到StandBy并启动集群
su – postgres
psql -c "SELECT pg_start_backup(‘label’,true);"
rsync -avz /var/lib/postgresql/9.0/main/* postgres@192.168.0.211:/var/lib/postgresql/9.0/main/
注意:这里rsync是没有办法执行的,需要先建立两个服务器之间关于postgres之间的ssh 密钥文件交换。
rm /var/lib/postgressql/9.0/main/postgresql.pid
/etc/init.d/postgresql restart
su – postgres
psql -c "SELECT * from pg_stop_backup();"
exit
/etc/init.d/postgresql restart
测试
在Primary服务器上建立一个数据库或者修改一个数据表,可以在StandBy数据库上看到同样的修改操作发生了。
配置参考文件
可直接使用的配置参考文件见:。注意前缀分别代表在那台服务器上的配置文件。