系统版本: CentOS Linux release 7.5.1804 (Core)

数据库 psql (PostgreSQL) 10.5

2台机器ip : 172.17.0.3 /172.17.0.4

具体步骤:
一.
首先先在这两台机器上把postgres这2个机器的基础数据库都装好。具体就不解释了。
9之后的版本安装有4个包,按照lib,PGDG, server ,contrib这样的顺序安装。

二.
主库环境:

1.创建一个用户复制的用户replica

CREATE ROLE replica login replication encrypted password 'replica';

2.修改hba.conf文件,指定replica登录网络

host replication replica 172.17.0.4/32 trust

就是允许来自0.14的replica用户访问replication数据库,同时是trust的。
因为是新学postgres ,会觉得应该创建一个叫replication的数据库,其实replication数据库是系统默认存在的。

3.修改postgresql.conf 文件

listen_addresses = '*"
port = 5432
wal_level = hot_standby
max_wal_senders = 2
wal_keep_segments = 32
wal_sender_timeout =60s
max_connections =100

之后重启主库 。如果遇到什么报错,到log里去查,我这里就遇到过把hot 拼写成host的问题。

从库环境:
1.
这里首先要把主库的data全部拷贝到备库。保证2个库的开始是一致的,之后才方便做同步。我这里设置的数据文件夹为 /data/postgres/. 因为开始安装pg的时候分别在主库和备库做了一些不同的设置。有点存在侥幸心理,尝试没有删除备库的同样的/data/postgres文件夹,结果主从失败。。

所以这里强制第一步先把备库的数据文件夹目录清空。(如果以前有过数据,一定要清空。或者是想把2个不相关的PG库做成主从模式,那么从库一定要清空数据文件夹下的所有文件)

开始备份主库数据并传输到备库,这里有2种方法:
第一种:

在备库上运行:

pg_basebackup -F p --progress -D /data/postgres -h 172.17.0.3 -p 5432 -U replica --password

第二种:

select pg_start_backup('/data/postgres');
之后把数据目录下的文件SCP /rsync 到备库的相同目录。这里记得要把postmaster.pid文件删除,不然备库启动时候会报错。
然后主库结束备份:

select pg_stop_backup();
3.创建recovery.cnf 文件

把/usr/local/postgres/share/recovery.conf.sample 模板文件拷贝到 数据目录下。

cp /usr/local/postgres/share/recovery.conf.sample /data/postgres/recovery.conf
vi recovery.conf

standby_mode = on
primary_conninfo = 'host=172.17.0.3 port=5432 user=replica password=replica'
recovery_target_timeline = 'latest'
trigger_file = '/var/postgres/data/trigger_activestb'

4 . 再修改 postgresql.conf

listen_addresses = '*'
port = 5432
wal_level = minimal
max_wal_senders = 0
wal_keep_segments = 0
max_connections = 1000

synchronous_commit = off
synchronous_standby_names = ''
hot_standby = on
max_standby_streaming_delay = 30
wal_receiver_status_interval = 1s
hot_standby_feedback = on

之后重启备库。

我做的过程中重启备库报错找不到 postmaster.opts ,我直接把主库的文件单独又拷贝到备库,重启成功。

三· 验证同步

select * from pg_stat_replication;
最好也可以创建个表,插入几条数据,然后从库验证。

其中还有很多需要学习的地方,每个参数具体代表的意义,主从同步的其它模式
都要认真学习。

参考文档:
http://www.cnblogs.com/yjf512/p/4499547.html
http://blog.163.com/czg_e/blog/static/4610456120111190240888/
http://www.cnblogs.com/marsprj/archive/2013/03/04/2943373.html

Postgres 主从复制搭建步骤的更多相关文章

  1. mha的搭建步骤(一主一从架构)

    所需脚本文件到这里下载:http://note.youdao.com/share/web/file.html?id=ae8b11a61f7a8aa7b52aac3fcf0c4b83&type= ...

  2. mysql 5.7 主从复制搭建及原理

    1. 主从复制搭建 1.1 环境准备 OS: Ubuntu 18.04 master: 192.168.0.3 slave: 192.168.0.6 1.2 安装依赖包 # Ubuntu apt-ge ...

  3. Java Web 环境搭建步骤(超详细,包括前期安装步骤)

    Java Web 环境搭建步骤 安装对应版本的JDK 配置环境变量 本人安装的路径是C盘,在path中加入C:\Program Files\Java\jdk1.8.0_65\bin 测试配置成功,cm ...

  4. Linux vagrant+virtualbox环境搭建步骤

    Linux vagrant+virtualbox环境搭建步骤 Vagrant 是一款用来构建虚拟开发环境的工具,非常适合 php/python/ruby/java 这类语言开发 web 应用. 我们可 ...

  5. SSH三大框架合辑的搭建步骤

    v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VM ...

  6. cocos2d-lua 3.5 android搭建步骤

    cocos2d-lua 3.5 android搭建步骤 如何安装eclipse,jdk,android sdk,ndk这里都不说了,资料很多,而且以前用eclipse搭建cocos2d-x-c++的时 ...

  7. IIS HTTP文件服务器搭建步骤

    利用IIS搭建HTTP文件服务器,可下载.上传(用户名验证) 1.右键网站,添加应用程序 2.物理路径,选择系统的目录配置,上一层 别名:CAPI3FileService 3.效果如下: 4.(以下步 ...

  8. [转]MonkeyRunner在Windows下的Eclipse开发环境搭建步骤(兼解决网上Jython配置出错的问题)

    MonkeyRunner在Windows下的Eclipse开发环境搭建步骤(兼解决网上Jython配置出错的问题)   网上有一篇shangdong_chu网友写的文章介绍如何在Eclipse上配置M ...

  9. mysql 主从搭建步骤

    mysql 主从搭建步骤 1:主库开启master端bin-log 2:主库创建备份用户 3:主库全备 4:从库导入全备数据 5:从库修改change master to信息 6:从库slave st ...

随机推荐

  1. root用户登录mysql后新建用户提示1045错误

    执行以下命令查看root权限 show grants for 'root'@'localhost'; 如果没有显示with grant option,说明是root没有拥有新建授权用户的权限(为什么会 ...

  2. 使用netlify-statuskit 进行系统业务状态报告

    netlify-statuskit 是netlify 团队开源的一款类似github status 的脚手架website,使用此工具 我们可以对于我们系统模块进行报告,同时对于故障时,我们可以进行故 ...

  3. Spring事务传播属性和隔离

     1 事务的传播属性(Propagation)  1) REQUIRED ,这个是默认的属性 Support a current transaction, create a new one if no ...

  4. python之路---08 文件操作

    二十六.   文件 f = open(文件路径,mode = '模式',encoding = '编码格式') 1.基础 ① 读写时,主要看光标的位置 ②操作完成要写    f.close( ) f.f ...

  5. tensorflow object detection

    Follow guidelin from https://github.com/tensorflow/models/blob/master/research/object_detection/g3do ...

  6. 混合pyqt和qtcreator

    目的:测试能否用qtcreator编辑ui资源,而用python编写代码逻辑 import sysfrom PyQt4 import QtGui, uic class MyWindow(QtGui.Q ...

  7. java-shiro登录验证

    登录验证: LoginController:(LoginController.java) @ResponseBody @RequestMapping(value="/login", ...

  8. Spring Cloud(Dalston.SR5)--Hystrix 断路器-缓存

    在 Spring Cloud 中可以使用注解的方式来支持 Hystrix 的缓存,缓存与合并请求功能需要先初始化请求上下文才能实现,因此,必须实现 javax.servlet.Filter 用于创建和 ...

  9. redis常用客户端命令

    sentinel操作: 1.查询主节点:redis-cli -h 172.16.4.220 -p 46379 SENTINEL get-master-addr-by-name mymaster 2.查 ...

  10. CentOS6.5_64位系统下安装配置postfix邮件系统 启用并配置SMTP虚拟账户

    http://blog.jjonline.cn/linux/185.html http://www.cnblogs.com/apexchu/p/4271264.html 用户新增和删除 http:// ...