当前位置:Gxlcms > 数据库问题 > PostgreSQL使用pg_basebackup搭建主备流复制环境

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

时间:2021-07-01 10:21:17 帮助过:30人阅读

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用户:

[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   database   备份   centos   

人气教程排行