postgresql 主从配置_Postgresql主从配置

一、简介

PostgreSql在9.0之后引入了主从的流复制机制,所谓流复制,就是从服务器通过tcp流从主服务器中同步相应的数据。这样当主服务器数据丢失时从服务器中仍有备份。

与基于文件日志传送相比,流复制允许保持从服务器更新。 从服务器连接主服务器,其产生的流WAL记录到从服务器, 而不需要等待主服务器写完WAL文件(关于Wal可以看看官方的说法https://www.postgresql.org/docs/10/static/different-replication-solutions.html)。

PostgreSQL流复制默认是异步的。在主服务器上提交事务和从服务器上变化可见之间有一个小的延迟,这个延迟远小于基于文件日志传送,通常1秒能完成。如果主服务器突然崩溃,可能会有少量数据丢失。

同步复制必须等主服务器和从服务器都写完WAL后才能提交事务。这样在一定程度上会增加事务的响应时间。

配置同步复制仅需要一个额外的配置步骤: synchronous_standby_names必须设置为一个非空值。synchronous_commit也必须设置为on。

注: 主从服务器所在节点的系统、环境等最好一致。PostgreSQL版本也最好一致,否则可能会有问题。

二、安装部署(使用Ubuntu的普通用户安装部署)

角色

IP地址

系统版本

数据库版本

主服务器

192.168.100.71

Ubuntu18.04  amd64

PostgreSQL10

从服务器

192.168.100.70

Ubuntu18.04  amd64

PostgreSQL10

注:18.04版本默认的PostgreSQL版本是10,要安装其他版本可以采用编译的方式或者apt-get 指定版本号安装

1、两台服务器都要安装PostgreSQL

sudo apt-get updatel

sudo apt-get install postgresql

sudo vi /etc/postgresql/10/main/postgresql.conf

在文件末尾添加或者找到该行,将peer改为trust

local all all trust

重启PostgreSQL服务

sudo service postgresql restartt

这样PostgreSQL就安装完毕

2、配置主服务器

切换成postgres用户

sudo su – postgres

进入数据库,创建一个普通的数据库用户用户进行主从同步(只需赋予登录和复制的权限即可)

postgres=# create role guoxm login replication encrypted password 'guoxm'

然后退出

postgres=# \q

在exit退出到原用户

然后,修改postgresql的pg_hba.conf,配置运行刚刚创建的guoxm用户可以进行连接

sudo vi /etc/postgresql/10/main/pg_hba.conf

在文件尾添加如下两行

host all all 192.168.100.70/32 trust #运行70服务器连接到本机

host replication guoxm 192.168.100.70/32 md5 #运行guoxm用户在70上复制本机数据

注:第二个的角色必须是replication

最后,再次配置postgresql.conf

sudo vi /etc/postgresql/10/main/ postgresql.conf

这次需要配置的是主机的角色

listen_addresses = ‘*’ #监听所有ip

archive_mode = on #开启归档模式

archive_command = ‘cp %p /var/lib/postgresql/10/main/%f’ #归档命令

wal_level = hot_standby #热备模式

max_wal_senders = 1 #最多有1个流复制连接

wal_sender_timeout = 60s #流复制超时时间

max_connections = 100 #最大连接时间,必须要小于从库的配置

保存退出后,重启数据库服务

sudo service postgresql restartt

3、配置从服务器

首先,先测试一下是否能连接主服务器

psql -h 192.168.100.70  -U  postgres

如果可以,说明主机配置正常,否则检查一下主机的pg_hba.conf配置

进入到postgres用户

sudo su - postgres

先清空main目录下的数据(main文件夹就是PostgreSQL数据的存储文件夹)

rm -rf 10/main/*

或者

rm -rf /var/lib/postgresql/10/main/*

因为PostgreSQL的home目录就在/var/lib/postgresql中

所以上面两条命令到达的效果是一样的

然后,开始从主服务器上copy数据到本机上,这一步叫做“基础备份”

pg_basebackup -h 192.168.100.71 -U guoxm –D 10/main/ -X stream –P

或者

pg_basebackup -F p --progress -D 10/main/ -h 192.168.100.71 -p 5432 -U guoxm --password

pg_basebackup是PostgreSQL自带的基础备份工具

这样,基础备份就完成了

然后,创建recovery.conf用于从库恢复从主库获取的数据

vi recovery.conf

然后编辑如下配置

standby_mode = on #表示该节点是从库

primary_conninfo = ‘host=192.168.100.71 post=5432 user=guoxm password=guoxm’#从机信息和连接用户

recovery_target_timelint = ‘latest’ #说明恢复到最新状态

保持并退出后,

复制或在移动到main文件夹中

cp recovery.conf   10/main/

或者

mv recovery.conf   10/main/

然后,exit退出到原用户

最后,配置从机的postgresql.conf文件

sudo vi /etc/postgresql/10/main/postgresql.conf

在文件末尾添加如下配置

wal_level = hot_standby #热备模式

max_connections = 300 #最大连接时间,必须要小于从库的配置

hot_standby = on #说明这台机器不仅用于数据归档,还可以用于数据查询

max_standby_streaming_delay = 30s #流备份的最大延迟时间

wal_receiver_status_interval = 10s #向主机汇报本机状态的间隔时间

hot_standby_feedback = on #r出现错误复制,向主机反馈

保存并退出

到这里,从机配置完成

重启数据库服务

sudo service postgresql restart

4、验证主从配置是否成功

在主机上,切换到postgres用户

sudo su – postgres

进入数据库

执行如下查询

select client_addr,sync_state from pg_stat_replication;

如果看到如下查询结果

说明192.168.100.70是从服务器,在接收流,而且是异步流复制。说明主从配置成功

注:必须切换到postgres用户下进行查询

此外,还可以查看相关进程来验证是否配置成功

在主机、从机上分别执行

ps aux | grep postgres

主机上可以看到正在向从机发送数据流

从机上可以看到正在接收数据流

到此,主从配置完成;

参考链接:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/445937.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

FFmpeg源代码简单分析-编码-av_write_trailer()

参考链接: FFmpeg源代码简单分析:av_write_trailer()_雷霄骅的博客-CSDN博客_av_malloc av_write_trailer() av_write_trailer()用于输出文件尾,它的声明位于libavformat\avformat.h,如下所示 /*** Write the stream trailer to…

科沃斯扫地机器人风扇模块_扫地机器人不能开机,不能关机,风扇不转

家庭的重要性自不必再细说,而小编今天要说的则是家庭环境的重要性。一般家庭最少居住三口人,两个大人加一个孩子,每天回到家,看到家里整洁舒适的环境,心情该是多么地惬意。要是我们每天下班回到家中,看到满…

MySQL关键字EXPLAIN的用法及其案例

文章目录概述EXPLAIN输出的列的解释实例说明select_type的说明UNIONDEPENDENT UNION与DEPENDENT SUBQUERYSUBQUERYDERIVEDtype的说明system,consteq_refrefref_or_nullindex_mergeunique_subqueryindex_subqueryrangeindexALLextra的说明DistinctNot existsRange ch…

FFmpeg源代码简单分析-其他-日志输出系统(av_log()等)

参考链接 FFmpeg源代码简单分析:日志输出系统(av_log()等)_雷霄骅的博客-CSDN博客_ffmpeg源码分析 日志输出系统(av_log()等) 本文分析一下FFmpeg的日志(Log)输出系统的源代码。日志输出部分的…

FFmpeg源代码简单分析-其他-AVClass和AVoption

参考链接 FFmpeg源代码简单分析:结构体成员管理系统-AVClass_雷霄骅的博客-CSDN博客FFmpeg源代码简单分析:结构体成员管理系统-AVOption_雷霄骅的博客-CSDN博客 概述 AVOption用于在FFmpeg中描述结构体中的成员变量。它最主要的作用可以概括为两个字&a…

oracle手工收集awr报告_oracle手工生成AWR报告方法记录-阿里云开发者社区

AWR(Automatic Workload Repository)报告是我们进行日常数据库性能评定、问题SQL发现的重要手段。熟练掌握AWR报告,是做好开发、运维DBA工作的重要基本功。AWR报告的原理是基于Oracle数据库的定时镜像功能。默认情况下,Oracle数据库后台进程会以一定间隔…

IntelliJ IDEA 默认快捷键大全

文章目录Remember these ShortcutsGeneralDebuggingSearch / ReplaceEditingRefactoringNavigationCompile and RunUsage SearchVCS / Local HistoryLive Templates参考资料Remember these Shortcuts 常用功能快捷键备注●Smart code completionCtrl Shift Space-●Search e…

python爬虫的数据如何解决乱码_写爬虫时如何解决网页乱码问题

实战讲解,文章较长,对爬虫比较熟悉的浏览翻看章节 2.3 获取新闻文本内容。写爬虫时经常对网址发起请求,结果返回的html数据除了标签能看懂,其他的全部是乱码。大家如果对爬虫感兴趣,请耐心阅读本文,我们就以…

FFmpeg源代码简单分析-其他-libswscale的sws_getContext()

参考链接 FFmpeg源代码简单分析:libswscale的sws_getContext()_雷霄骅的博客-CSDN博客 libswscale的sws_getContext() FFmpeg中类库libswsscale用于图像处理(缩放,YUV/RGB格式转换)libswscale是一个主要用于处理图片像素数据的类…

IntelliJ IDEA 学习笔记

IDEA教学视频 文章目录1.IntelliJ IDEA的介绍和优势IDEA 的主要优势2.版本介绍与安装前的准备3.IDEA的卸载4.IDEA的安装5.安装目录和设置目录结构的说明安装目录设置目录6.启动IDEA并执行HelloWorld7.Module的使用8.IDEA的常用设置9.快捷键的设置10.常用的快捷键的使用111.常用…

机器学习顶刊文献_人工智能顶刊TPAMI2019最新《多模态机器学习综述》

原标题:人工智能顶刊TPAMI2019最新《多模态机器学习综述》来源:专知摘要:”当研究问题或数据集包括多个这样的模态时,其特征在于多模态。【导读】人工智能领域最顶级国际期刊IEEE Transactions on Pattern Analysis and Machine I…

Windows上同时运行两个Tomcat

步骤 1.获得免安装包 从Tomcat官网下载免安装包。 2.解压复制 解压并创建两个副本tomcat1和tomcat2,它们的路径分别为: tomcat1:C:\tomcat\double\apache-tomcat-7.0.90-8081tomcat2:C:\tomcat\double\apache-tomcat-7.0.90-…

FFmpeg源代码简单分析-其他-libswscale的sws_scale()

参考链接 FFmpeg源代码简单分析:libswscale的sws_scale()_雷霄骅的博客-CSDN博客_bad dst image pointers libswscale的sws_scale() FFmpeg的图像处理(缩放,YUV/RGB格式转换)类库libswsscale中的sws_scale()函数。libswscale是一…

布朗桥python_MATLAB 里面有哪些加快程序运行速度的方法呢,求分享?

挖坟了…睡不着觉当个备忘录记一下用过的方法吧1. 循环向量化2. 利用函数的矩阵输入功能批量处理3. 必须用for且费时的地方改成单层parfor,要是循环次数比cpu核数还少反而会拖慢程序4. 非常大的矩阵的运算可以用gpuArray(这个在matlab 深度学习工具箱中深有体会)5. …

FFmpeg源代码简单分析-其他-libavdevice的avdevice_register_all()

参考链接 FFmpeg源代码简单分析:libavdevice的avdevice_register_all()_雷霄骅的博客-CSDN博客 libavdevice的avdevice_register_all() FFmpeg中libavdevice注册设备的函数avdevice_register_all()。avdevice_register_all()在编程中的使用示例可以参考文章&#…

Tomcat无需输入项目名,直接用域名访问项目

问题 在Tomcat上开发Web应用,通常是将应用放置Tomcat主目录下webapps,然后在浏览器地址栏输入域名应用名(如http://localhost:8080/app)对应用进行访问。 为了方便开发,打算直接用域名访问项目。例如,在浏…

蓝牙该串口设备不存在或已被占用_电脑识别不了串口设备如何解决_电脑检测不到串口怎么办...

2015-09-07 10:46:45win8.1系统USB转串口不能识别设备出现错误代码10的解决方法分享给大家,win8.1系统插入USB设备提示“指定不存在的设备”,左下角有小黄色感叹号,导致设备无法识别不能识别...2016-12-02 10:52:57一般情况下,win…

FFmpeg源代码简单分析-其他-libavdevice的gdigrab

参考链接 FFmpeg源代码简单分析:libavdevice的gdigrab_雷霄骅的博客-CSDN博客_gdigrab libavdevice的gdigrab GDIGrab用于在Windows下屏幕录像(抓屏)gdigrab的源代码位于libavdevice\gdigrab.c。关键函数的调用关系图如下图所示。图中绿色背…

分区和分片的区别_PHP: 分区和分片 - Manual

分区和分片数据库群组是由于各种各样的原因建立的,他可以提升处理能力、容忍错误,并且提升大量服务器同时工作的的性能。群组有时会组合分区和共享功能,来将大量复杂的任务分拆成更加简单的任务,更加可控的单元。插件可以支持各种…

Ubuntu安装GmSSL库适用于ubuntu18和ubuntu20版本

参考链接 编译与安装【GmSSL】GmSSL 与 OpenSSL 共存的安装方法_阿卡基YUAN的博客-CSDN博客_openssl和gmssl在Linux下安装GmSSL_百里杨的博客-CSDN博客_安装gmssl ubuntu18操作 需要超级管理员权限本人将下载的安装包master.zip和安装的位置都设定在/usr/local下创建文件夹/u…