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
Postgres 主从复制搭建步骤的更多相关文章
- mha的搭建步骤(一主一从架构)
所需脚本文件到这里下载:http://note.youdao.com/share/web/file.html?id=ae8b11a61f7a8aa7b52aac3fcf0c4b83&type= ...
- 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 ...
- Java Web 环境搭建步骤(超详细,包括前期安装步骤)
Java Web 环境搭建步骤 安装对应版本的JDK 配置环境变量 本人安装的路径是C盘,在path中加入C:\Program Files\Java\jdk1.8.0_65\bin 测试配置成功,cm ...
- Linux vagrant+virtualbox环境搭建步骤
Linux vagrant+virtualbox环境搭建步骤 Vagrant 是一款用来构建虚拟开发环境的工具,非常适合 php/python/ruby/java 这类语言开发 web 应用. 我们可 ...
- SSH三大框架合辑的搭建步骤
v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VM ...
- cocos2d-lua 3.5 android搭建步骤
cocos2d-lua 3.5 android搭建步骤 如何安装eclipse,jdk,android sdk,ndk这里都不说了,资料很多,而且以前用eclipse搭建cocos2d-x-c++的时 ...
- IIS HTTP文件服务器搭建步骤
利用IIS搭建HTTP文件服务器,可下载.上传(用户名验证) 1.右键网站,添加应用程序 2.物理路径,选择系统的目录配置,上一层 别名:CAPI3FileService 3.效果如下: 4.(以下步 ...
- [转]MonkeyRunner在Windows下的Eclipse开发环境搭建步骤(兼解决网上Jython配置出错的问题)
MonkeyRunner在Windows下的Eclipse开发环境搭建步骤(兼解决网上Jython配置出错的问题) 网上有一篇shangdong_chu网友写的文章介绍如何在Eclipse上配置M ...
- mysql 主从搭建步骤
mysql 主从搭建步骤 1:主库开启master端bin-log 2:主库创建备份用户 3:主库全备 4:从库导入全备数据 5:从库修改change master to信息 6:从库slave st ...
随机推荐
- 远程连接mysql数据库碰到的问题及解决方案
直接用SecureCRT登录到我的linux服务器,连接mysql后出现以下错误 然后我用root用户登录到mysql查看了我的用户信息,如下 出现问题1的原因有很多种,我这里是因为用错了yangli ...
- Spring中时间格式注解@DateTimeFormat
在SpringMVC中Controller中方法参数为Date类型想要限定请求传入时间格式时,可以通过@DateTimeFormat来指定,但请求传入参数与指定格式不符时,会返回400错误. 如果在B ...
- ML(附录3)——过拟合与欠拟合
过拟合与欠拟合 我们希望机器学习得到好的模型,该模型能够从训练样本中找到一个能够适应潜在样本的普遍规律.然而,如果机器学习学的“太好”了,以至把样本的自身特点当作潜在样本的一般特性,这就使得模型的泛化 ...
- 【转】OPPO A77保持应用后台运行方法
原文网址:http://www.3533.com/news/16/201708/163086/1.htm OPPO A77保持应用后台运行方法.手机的运行内存大小有限,因此在出现运行应用过多时,系统就 ...
- taro 组件的外部样式和全局样式
自定义组件对应的样式文件,只对该组件内的节点生效. 编写组件样式时,需要注意以下几点: 组件和引用组件的页面不能使用 id 选择器(#a).属性选择器([a])和标签名选择器,请改用 class 选择 ...
- 安装mysql时包冲突解决方法
报错信息如下: 解决办法: 在卸载代码上加上不检查关联信息即可(rpm -ev mysql-libs-5.1.73-7.el6.x86_64 --nodeps) 检查服务器是否还有mysql安装包:r ...
- STM32的SPI2操作Flash
关于STM32F107的SPI标志 SPI_I2S_FLAG_BSY和SPI_I2S_FLAG_TXE的疑问 http://www.openedv.com/posts/list/23579.htm ...
- 静态Map类型变量赋初始值
private static Map<String,String> sysTypeList = new HashMap<String, String>(); static { ...
- Jmeter -- 属性和变量
一.Jmeter中的属性: 1.JMeter属性统一定义在jmeter.properties文件中,我们可以在该文件中添加自定义的属性 2.JMeter属性在测试脚本的任何地方都是可见的(全局),通常 ...
- tornado请求头/状态码/接口 笔记
set_header()/set_default_headers() set_header():设置请求头数据 set_default_headers():设置默认请求头数据 import torna ...