--传统的搭建流复制备库步骤为以下:
1 select pg_start_backup();
2 复制数据文件;
3 select pg_stop_backup();
--而 pg_basebackup 则省略以上步骤,一步搞定
--主库上操作
--创建复制用户
CREATE USER repuser REPLICATION LOGIN CONNECTION LIMIT 2 ENCRYPTED PASSWORD '123456';
--设置 pg_hba.conf,添加以下
host replication repuser 192.168.174.0/24 md5
--设置主库 postgresql.conf
checkpoint_segments = 16
archive_mode = on
archive_command = 'cd ./'
max_wal_senders = 3
wal_keep_segments = 16
wal_level=hot_standby
hot_standby = on
--重载配置文件
pg_ctl reload -D $PGDATA
--先查看表空间目录和数据目录,因为这些目录需要在备库主机上手工创建
--查看表空间目录
postgres=# \db
--查看数据目录
echo $PGDATA
--备库操作
--创建目录并赋权
mkdir -p /usr/local/postgresql/9.3.4/data
chown -R postgres.postgres /usr/local/postgresql/9.3.4/data
--创建 .pgpass
192.168.174.132:5432:replication:repuser:123456
--注意 .pgpass文件权限为 0600
chmod 0600 .pgpass
--使用 pg_basebackup 生成备库
--这时表空间目录,$PGDATA 目录已经复制过来了,这里使用了 -X 参数,在备份完成之后,会到主库上收集 pg_basebackup 执行期间产生的 WAL 日志,在 9.2 版本之后支持
-- -Xs 即,stream 形式,这种模式不需要收集主库的 WAL 文件,而能以 stream 复制方式直接追赶主库
pg_basebackup -D /usr/local/postgresql/9.3.4/data -Fp -Xs -v -P -h 192.168.174.132 -p 5432 -U repuser
--设置从库 postgresql.conf
hot_standby = on
--设置从库 recovery.conf
[postgres@rudy_01 data]$ cp /usr/local/postgresql/9.3.4/share/postgresql/recovery.conf.sample recovery.conf
--修改以下参数
standby_mode = on
primary_conninfo = 'host=192.168.174.132 port=5432 user=repuser'
trigger_file = '/usr/local/postgresql/9.3.4/data/postgresql.trigger.5432'
--重启服务
pg_ctl restart -D $PGDATA
pg_ctl stop -m fast
-- 查看备库进程
ps -ef | grep postgres
--测试主库
create table test_3 (id int4,create_time timestamp(0) without time zone);
insert into test_3 values (1,now());
select * from test_3;
1 select pg_start_backup();
2 复制数据文件;
3 select pg_stop_backup();
--而 pg_basebackup 则省略以上步骤,一步搞定
--主库上操作
--创建复制用户
CREATE USER repuser REPLICATION LOGIN CONNECTION LIMIT 2 ENCRYPTED PASSWORD '123456';
--设置 pg_hba.conf,添加以下
host replication repuser 192.168.174.0/24 md5
--设置主库 postgresql.conf
checkpoint_segments = 16
archive_mode = on
archive_command = 'cd ./'
max_wal_senders = 3
wal_keep_segments = 16
wal_level=hot_standby
hot_standby = on
--重载配置文件
pg_ctl reload -D $PGDATA
--先查看表空间目录和数据目录,因为这些目录需要在备库主机上手工创建
--查看表空间目录
postgres=# \db
--查看数据目录
echo $PGDATA
--备库操作
--创建目录并赋权
mkdir -p /usr/local/postgresql/9.3.4/data
chown -R postgres.postgres /usr/local/postgresql/9.3.4/data
--创建 .pgpass
192.168.174.132:5432:replication:repuser:123456
--注意 .pgpass文件权限为 0600
chmod 0600 .pgpass
--使用 pg_basebackup 生成备库
--这时表空间目录,$PGDATA 目录已经复制过来了,这里使用了 -X 参数,在备份完成之后,会到主库上收集 pg_basebackup 执行期间产生的 WAL 日志,在 9.2 版本之后支持
-- -Xs 即,stream 形式,这种模式不需要收集主库的 WAL 文件,而能以 stream 复制方式直接追赶主库
pg_basebackup -D /usr/local/postgresql/9.3.4/data -Fp -Xs -v -P -h 192.168.174.132 -p 5432 -U repuser
--设置从库 postgresql.conf
hot_standby = on
--设置从库 recovery.conf
[postgres@rudy_01 data]$ cp /usr/local/postgresql/9.3.4/share/postgresql/recovery.conf.sample recovery.conf
--修改以下参数
standby_mode = on
primary_conninfo = 'host=192.168.174.132 port=5432 user=repuser'
trigger_file = '/usr/local/postgresql/9.3.4/data/postgresql.trigger.5432'
--重启服务
pg_ctl restart -D $PGDATA
pg_ctl stop -m fast
-- 查看备库进程
ps -ef | grep postgres
--测试主库
create table test_3 (id int4,create_time timestamp(0) without time zone);
insert into test_3 values (1,now());
select * from test_3;