Postgres 主从复制搭建步骤

系统版本: 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

原文地址:https://www.cnblogs.com/EikiXu/p/9698753.html

时间: 2024-08-06 11:57:55

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

基于Docker的MySQL主从复制搭建及原理

为什么基于Docker搭建? 资源有限 虚拟机搭建对机器配置有要求,并且安装mysql步骤繁琐 一台机器上可以运行多个Docker容器 Docker容器之间相互独立,有独立ip,互不冲突 Docker使用步骤简便,启动容器在秒级别 利用Docker搭建主从服务器 首先拉取docker镜像,我们这里使用5.7版本的mysql: docker pull mysql:5.7 然后使用此镜像启动容器,这里需要分别启动主从两个容器 Master(主): docker run -p 3339:3306 --

Samba 服务搭建步骤

Samba 服务搭建步骤,客户端自动挂载服务端1.通过yum安装samba ,samba-client ,cifs 软件包2.创建共享目录mkdir /x3,设置共享目录的selinux 安全上下文4,修改samba 配置文件,并保存,文件路径/etc/samba/smb.conf [共享目录名称]path = /xhosts allow = xxx.xxx.xxx.5,创建一个用户useradd x6,将好好创建的用户加入samba 用户域,并赋予密码smbpasswd -a x7,重启&加入

Linux vagrant+virtualbox环境搭建步骤

Linux vagrant+virtualbox环境搭建步骤 Vagrant 是一款用来构建虚拟开发环境的工具,非常适合 php/python/ruby/java 这类语言开发 web 应用. 我们可以通过 Vagrant 封装一个 Linux 的开发环境,分发给团队成员.成员可以在自己喜欢的桌面系统(Mac/Windows/Linux)上开发程序,代码却能统一在封装好的环境里运行,非常霸气. 1. 安装 VirtualBox 虚拟机还是得依靠 VirtualBox 来搭建,免费小巧.虽然 Va

Hadoop集群搭建步骤

实验性操作是在虚拟机里进行的,除了搭建hadoop本身的操作之外,遇到的其它问题总结如下: 1. 虚拟机挂载windows磁盘: 添加硬件,要保证该硬件此时没有被读写访问等,因为挂载后,该磁盘在宿主机上就不能用了.启动虚拟机linux,执行 fdisk –l 查看windows磁盘的分区,如/dev/sdb2,然后执行挂载命令: mount /dev/sdb2 /mnt/win/ 然后就可以到/mnt/win目录下访问磁盘上的内容了 2. hadoop启动时如果报错,提示JAVA_HOME is

mongodb集群搭建步骤

搭建mongodb集群很多次,每次都会或多.或少出现一些见鬼的问题,写这边博客供以后参考. 本次是基于mongodb3.0进行集群的搭建:搭建步骤如下: 1.设置操作系统的环境 echo "never">"/sys/kernel/mm/transparent_hugepage/enabled" echo "never">"/sys/kernel/mm/transparent_hugepage/defrag" uli

MySQL5.1版本的主从复制搭建

MySQL5.1版本的主从复制搭建         [备注]: 主机192.168.250.20 备机192.168.250.40 主从复制 1主机上面已经有了MySQL5.1.53-log版. 2备机上没有mysql数据库,需要在备机上安装MySQL5.1.53-log软件,具体参考svn文档"system\mysql\document\IT_SYS_MySQL_Installation.docx". 3再次确定主服务器与从服务器的MySQL版本一致 Showvariables li

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

Java Web 环境搭建步骤 安装对应版本的JDK 配置环境变量 本人安装的路径是C盘,在path中加入C:\Program Files\Java\jdk1.8.0_65\bin 测试配置成功,cmd中输入javac,显示如下界面: 安装Tomcat 本人安装的版本是7.0.版本 测试是否安装成功,在浏览器中输入http://localhost:8080/ 显示如下图,表示安装成功. 5.  在Eclipse中启动Tomcat服务器 1)首先,选择window下面的Preferences 2)

CDH集群搭建步骤

CDH集群搭建步骤详细文档 一.关于CDH和Cloudera Manager CDH (Cloudera's Distribution,including Apache Hadoop),是Hadoop众多分支中的一种,由Cloudera维护,基于稳定版本的Apache Hadoop构建,并集成了很多补丁,可直接用于生产环境. Cloudera Manager则是为了便于在集群中进行Hadoop等大数据处理相关的服务安装和监控管理的组件,对集群中主机.Hadoop.Hive.Spark等服务的安装

ubuntu12.04下lamp环境搭建步骤

1 .安装apache2:sudo apt-get install apache2 安装完成后,运行如下命令重启apache:sudo /etc/init.d/apache2 restart,在浏览器中输入http://localhost或者http://127.0.0.1,会看到"It works!"说明apache安装成功. 2.安装php: sudo apt-get install libapache2-mod-php5 php5; 安装扩展php5-gd:sudo apt-ge