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

今天用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认证信息:

host replication rep 192.168.3.202/32 md5

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

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

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

比如主库的表空间如下:

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

[[email protected]_202 postgres]# mkdir -p /pg_tablespace/pg_5431/ts_bigtable

[[email protected]_202 postgres]# chown -R postgres.postgres /pg_tablespace

[[email protected]_202 postgres]# chown -R postgres.postgres /pg_tablespace/pg_5431

[[email protected]_202 postgres]# chown -R postgres.postgres /pg_tablespace/pg_5431/ts_bigtable

[[email protected]_202 postgres]# mkdir -p /pg_tablespace/pg_5431/ts_udbac

[[email protected]_202 postgres]# chown -R postgres.postgres /pg_tablespace/pg_5431/ts_udbac

[[email protected]_202 postgres]# chmod 0700 /pg_tablespace

[[email protected]_202 postgres]# chmod 0700 /pg_tablespace/pg_5431

[[email protected]_202 postgres]# chmod 0700 /pg_tablespace/pg_5431/ts_bigtable

[[email protected]_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/

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-10 00:48:38

PostgreSQL使用pg_basebackup搭建主备流复制环境的相关文章

pgpool-II主备流复制的架设

1.环境 OS: CentOS release 6.4 (Final) DB: postgresql 9.3.6 pgpool服务器: pgpool 172.16.0.240 数据库主服务器:master 172.16.0.241 数据库从服务器:slave 172.16.0.242 其中主从数据库使用的流复制,并且已经配置完毕,新配置的pgpool使用postgres用户进行管理.新架构使用的主备模式外加流复制,此架构支持流复制.负载均衡.故障恢复,不支持复制和并行查询,主库可以支持读写,从库

PostgreSQL数据库Streaming Replication流复制主备延迟测试

PostgreSQL数据库流复制主库和备库之间的延迟时间是多少,无论对HA还是负载均衡来说都应该做个评估.比如单纯的HA架构,当主库发生故障时,我们允许多少时间内的数据丢失.不废话,直接进入本次实验测试. 测试环境: 主库:内存:32G,CPU:8核,IP:192.168.122.101 备库:内存:32G,CPU:8核,IP:192.168.122.102 数据库配置:默认 测试准备: 在两台服务器上安装好PostgreSQL数据库,安装过程不清楚的可以参考文章<PostgreSQL数据库编译

PostgreSQL流复制

原理机制 参考--https://yq.aliyun.com/articles/51009 主备总体结构 PG主备流复制的核心部分由walsender,walreceiver和startup三个进程组成. walsender进程是用来发送WAL日志记录的 walreceiver进程是用来接收WAL日志记录的 startup进程是用来apply日志的 配置环境 主机名 IP地址 角色 数据目录 postgres202 192.168.1.202 primary /home/postgres/dat

【Postgresql】postgresql9.3.9版本基于流复制方式双机热备方案

系统环境:centos6.5数据库版本: postgres9.3.9虚拟机2台:Master:10.0.2.160Slave:10.0.2.69数据存储位置:/usr/local/pgsql/data/ 安装pgsql数据库 安装过程可参考我上一篇博客:http://blog.51cto.com/13632960/2117902 两台机器都需要安装完成,我在做热备的时候,Master数据库开启,Slave关闭. 创建流复制用户 Master端进入数据库并执行: CREATE USER repus

PostgreSQL数据库单机扩展为流复制

1. 在standby服务器安装postgres数据库,不需要初始化. 安装过程详见:http://www.cnblogs.com/ilifeilong/p/6979288.html 2. 在primary服务器创建具有REPLICATION权限的复制用户 postgres=# CREATE ROLE repl WITH REPLICATION PASSWORD 'repl' LOGIN; 3. 允许复制用户远程连接到primary服务器 $ grep "^host" pg_hba.c

postgresql异步流复制搭建

节点 IP 角色 citus-master 10.10.100.1 master citus-standby 10.10.100.2 standby master上创建流复制所需要的用户. CREATE ROLE replication WITH REPLICATION PASSWORD 'replication' LOGIN; 修改master的pg_hba.conf文件,设置replication用户远程访问权限 ## vim /data/pgsql/data/pg_hba.conf,追加下

postgresql同步流复制搭建

节点 IP 角色 master 10.10.100.1 master standby1 10.10.100.2 standby1 standby2 10.10.100.3 standby2 master上创建流复制所需要的用户. CREATE ROLE replication WITH REPLICATION PASSWORD 'replication' LOGIN; 修改master的pg_hba.conf文件,设置replication用户远程访问权限 ## vim /data/pgsql/

Postgresql流复制+pgpool实现高可用

pgpool 概述 pgpool-II 是一个位于 PostgreSQL 服务器和 PostgreSQL 数据库客户端之间的中间件,它提供以下功能:连接池.复制.负载均衡.限制超过限度的连接以及并行查询.文档在此. 四种模式 O 意味着“可用”, X 意味着“不可用(1) 并行查询模式需要同时打开复制和负载均衡,但是复制和负载均衡无法用于并行查询模式中的分布式表.(2) 在线恢复可以和流复制同时使用.(*3) 客户端仅仅是通过 pgpool-II 连接到 PostgreSQL服务器.这种模式仅仅

金庸武功之“”左右互搏术“”postgresql 主从异步流复制配置

一.环境准备 a.关闭selinxu b.关闭iptables c.centos6.5 d.postgresql9.4.4 master:192.168.1.211 slave:  192.168.1.212 时间同步: #同步系统时间 [[email protected] ~]#  rm  -rf  /etc/localtime [[email protected] ~]#  ln  -s   /usr/share/zoneinfo/Asia/Shanghai  /etc/localtime