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认证信息: hostreplicationrep192.168.3.202/32md5 主库重载数据库配置信息:pg_ctl reload
从库只安装数据库软件,不进行数据库初始化。 根据主库相关路径配置,创建日志目录,表空间目录。 比如主库的表空间如下:
在从库中创建相同的目录,并授权给postgres用户: [root@CentOS_202 postgres]# mkdir -p /pg_tablespace/pg_5431/ts_bigtable 当然$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/ (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |