PostgreSQL使用pg_basebackup搭建主备流复制环境

PostgreSQL使用pg_basebackup搭建主备流复制环境,第1张

概述今天用pg_basebackup搭建了主备流复制环境, *** 作流程很简单,可在线 *** 作,相当方便。 环境均为CentOS6.6 + postgresql9.4,我用已安装的库做测试,端口不一致,不影响环境搭建,但要注意某些相关配置: 主:192.168.3.201 port:5431 备:192.168.3.202 port:5432 数据库安装过程省略。可参考 http://blog.csdn.net

今天用pg_basebackup搭建了主备流复制环境, *** 作流程很简单,可在线 *** 作,相当方便。

环境均为CentOS6.6 + postgresql9.4,我用已安装的库做测试,端口不一致,不影响环境搭建,但要注意某些相关配置:

主:192.168.3.201 port:5431

备:192.168.3.202 port:5432


数据库安装过程省略。可参考

http://blog.csdn.net/baiyinqiqi/article/details/45560229

主库参数配置postgresql.conf:

wal_level = hot_standby

checkpoint_segments = 16

checkpoint_timeout = 5min

archive_mode = on

max_wal_senders = 3

wal_keep_segments = 16

主库创建具有replication权限的用户:

create user rep replication login encrypted password 'udbac';

主库修改认证配置文件,添加rep的replication认证信息:

hostreplicationrep192.168.3.202/32md5

主库重载数据库配置信息:pg_ctl reload


从库只安装数据库软件,不进行数据库初始化。

根据主库相关路径配置,创建日志目录,表空间目录。

比如主库的表空间如下:


在从库中创建相同的目录,并授权给postgres用户:

[root@CentOS_202 postgres]# mkdir -p /pg_tablespace/pg_5431/ts_bigtable
[root@CentOS_202 postgres]# chown -R postgres.postgres /pg_tablespace
[root@CentOS_202 postgres]# chown -R postgres.postgres /pg_tablespace/pg_5431
[root@CentOS_202 postgres]# chown -R postgres.postgres /pg_tablespace/pg_5431/ts_bigtable
[root@CentOS_202 postgres]# mkdir -p /pg_tablespace/pg_5431/ts_udbac
[root@CentOS_202 postgres]# chown -R postgres.postgres /pg_tablespace/pg_5431/ts_udbac
[root@CentOS_202 postgres]# chmod 0700 /pg_tablespace
[root@CentOS_202 postgres]# chmod 0700 /pg_tablespace/pg_5431
[root@CentOS_202 postgres]# chmod 0700 /pg_tablespace/pg_5431/ts_bigtable
[root@CentOS_202 postgres]# chmod 0700 /pg_tablespace/pg_5431/ts_udbac

当然$PGDATA目录同样不可少。


配置从库无密码访问主库的密码文件:

在postgres用户home目录下创建.pgpass文件,添加如下内容:

192.168.3.201:5431:replication:rep:udbac

.pgpass文件权限为0600:chmod 0600 .pgpass

测试无密码是否可连接主库:

psql -h 192.168.3.201 -p 5431 -U rep -d postgres


使用pg_basebackup进行数据库备份恢复:

pg_basebackup -D $PGDATA -F p -X stream -v -P -h 192.168.3.201 -p 5431 -U rep


查看数据文件恢复情况:


表空间恢复情况:


配置备库参数postgresql.conf:

hot_standby=on

注意:我这里主备库所用端口不一样,需要详细修改配置文件,比如port,有些目录是以端口命名的也需要修改。第一次做就碰到找不到log日志的情况,因为我的安装目录带有端口号,所以找不到。一般情况下,尽量使用一样的端口。

配置备库recovery.conf配置文件:

cp $PGHOME/share/recovery.conf.sample $PGDATA/recovery.conf

vi$PGDATA/recovery.conf

修改下列参数:

standby_mode = on

primary_conninfo = 'host=192.168.3.201 port=5431 user=rep'

trigger_file = '/usr/local/postgresql/9.4.1/pg5432/data/postgresql.trigger.5431'

启动备库,查看服务进程,请注意有一个wal receiver progress进程,这个是接收wal日志的进程:


同样主库也多了一个wal sender process进程,用于日志发送。


测试:

在主库中新建一张表tbl6,并插入一些数据:


在从库中进行查询,从库可查询,但不可更新数据:



参考文章:

http://francs3.blog.163.com/blog/static/4057672720136210240967/

总结

以上是内存溢出为你收集整理的PostgreSQL使用pg_basebackup搭建主备流复制环境全部内容,希望文章能够帮你解决PostgreSQL使用pg_basebackup搭建主备流复制环境所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1175444.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-02
下一篇 2022-06-02

发表评论

登录后才能评论

评论列表(0条)

保存