本文主要是介绍PostgreSQL使用pg_basebackup搭建主备流复制环境,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
操作系统 redhat6.5+ postgresql9.4.4
主:192.168.100.77
备:192.168.100.100
1、主库参数配置postgresql.conf:
wal_level =hot_standby
checkpoint_segments= 16
archive_mode = on
max_wal_senders =3
wal_keep_segments= 16
2、主库创建具有replication权限的用户:
create user rep replication login encrypted password 'rep';
3、主库修改认证配置文件pg_hba.conf,添加rep的replication认证信息:
host replication rep 192.168.100.0/24 md5(host all all 192.168.100.0/24 md5)
4、主库重载数据库配置信息:pg_ctl reload
5、如果主库中有多个表空间则需要在备库中建立相关的表空间的目录,如果没有就不用建。
有表空间的方式在最下面有补充如下:
如果没有表空间如下 就不用建立
6、在备库中测试是否可连接主库:
psql -h192.168.100.77 -p 5432 -U rep -d postgres -W
7、删除备库data目录下的所有内容
rm -rf /opt/pgsql/data
8、在备库中使用pg_basebackup进行数据库备份恢复:
pg_basebackup -D$PGDATA -F p -X stream -v -P -h 192.168.100.77 -p 5432 -U rep
9、查看数据文件恢复情况:
10、配置备库参数postgresql.conf:
hot_standby=on
11、新建recovery.conf文件,配置备库recovery.conf配置文件:
Vi recovery.conf
12、修改下列参数:
standby_mode =‘on’
primary_conninfo ='host=192.168.100.77 port=5432 user=rep password=rep'
trigger_file ='/opt/pgsql /pgsql.trigger.5432'
13、启动备库,查看服务进程,请注意有一个wal receiver progress进程,这个是接收wal日志的进程:
同样主库也多了一个wal sender process进程,用于日志发送。
注:当打开启动备库时出现以下错误时
解决方法:
找到进程
lsof –i:5432
杀死进程
Kill -9 1811
重新启动数据库
14、测试:
在主库中新建一张表tb3,并插入一些数据:
在从库中进行查询,从库可查询,但不可更新数据:
另:有表空间的需要在备份前建好表空间的相关目录和日志的目录
这篇关于PostgreSQL使用pg_basebackup搭建主备流复制环境的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!