postgresql-9.3级联复制
环境
系统 debian-6.0.4
master:172.16.2.151
standby1:172.16.2.152
standby2:172.16.2.159
其中master和standby1已经做过流复制,现在测试standby1和standby2之间的级联复制
################################################################################
master
vi /etc/postgresql/9.3/main/pg_hba.conf
host replication postgres 172.16.2.159/32 trust
重新加载配置文件
su postgres
postgres=# select pg_reload_conf();
pg_reload_conf
----------------
t
(1 row)
vi /etc/postgresql/9.3/main/postgresql.conf
hot_standby_Feedback = on ()
################################################################################
standby1的配置 :
postgresql.conf配置与master一样
recovery.conf 配置不变
################################################################################
standby2节点配置
rm /var/lib/postgresql/9.3/main/*
使用 pg_basebackup 生成备库
root@localhost:/var/lib/postgresql/9.3/main# pg_basebackup -D /var/lib/postgresql/9.3/main -Fp -Xs -v -P -h 172.16.2.152 -p 5432 -U postgres
transaction log start point: 0/6C000028 on timeline 1
pg_basebackup: starting background WAL receiver
400749/400749 kB (100%),1/1 tablespace
transaction log end point: 0/6C0000F0
pg_basebackup: waiting for background process to finish streaming ...
pg_basebackup: base backup completed
vi postgresql.conf
设置
hot_standby = on
设置standby2 recovery.conf
cp /usr/share/postgresql/9.3/recovery.conf.sample recovery.conf
修改以下参数
standby_mode = on
primary_conninfo = 'host=172.16.2.152 port=5432 user=postgres'
#trigger_file = '/var/lib/postgresql/9.3/main/'
################################################################################
启数据库服务
su postgres
/usr/lib/postgresql/9.3/bin/./pg_ctl -D /var/lib/postgresql/9.3/main start
查看standby1
postgres@localhost:~/9.3/main$ ps aux | grep wal
postgres 3907 1.3 1.0 262248 21052 ? Ss 15:59 0:11 postgres: wal receiver process streaming 1/76124368
postgres 3908 1.6 0.2 219664 4776 ? Ss 15:59 0:13 postgres: wal sender process postgres 172.16.2.159(51650) streaming 1/76124368
可以看到wal receiver 跟wal sender两个进程
至此级联复制真个环境搭建完成
################################################################################
在主库新建一个测试表看看standby3会不会复制过去,
c=# create table t3(id int,name text);
CREATE TABLE
c=# insert into t3 select t::int,t::text from generate_series(1,1000) as t;
INSERT 0 1000
################################################################################
连接到standby2测试数据已经全部过去
postgres@localhost:~$ psql -h 172.16.2.159 -p 5432 -d c
psql (9.3.0,server 9.3.1)
SSL connection (cipher: DHE-RSA-AES256-SHA,bits: 256)
Type "help" for help.
c=# select count(*) from t3;
count
-------
1000
(1 row)
级联复制适合在异地建立多个STANDBY的环境. 可以大大降低网络带宽的开销。