首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >备用节点上的PostgreSQL服务在Patroni启动后一次又一次地启动和停止

备用节点上的PostgreSQL服务在Patroni启动后一次又一次地启动和停止
EN

Stack Overflow用户
提问于 2020-04-02 13:23:14
回答 1查看 714关注 0票数 1

我的PostgreSQL集群的备用节点上的PostgreSQL服务在我启动Patroni服务之后一次又一次地启动和停止。

我想在两台使用Patroni1.6.4和Etcd3.3的计算机上构建一个PostgreSQL HA集群。首先,我构建了一个etcd集群,它是健康的。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
member 230e646882873b50 is healthy: got healthy result from http://10.19.170.119:2379
member afcefe35d67a646c is healthy: got healthy result from http://10.19.170.155:2379
cluster is healthy

接下来,我在两台计算机(在端口5433上运行)上构建了一个流复制PostgreSQL集群,它工作得很好。

然后我停止了PostgreSQL集群,并在主服务器和备用服务器上启动了Patroni。

主服务器上的PostgreSQL和Patroni服务似乎工作正常。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
2020-04-02 18:17:22,402 INFO: Lock owner: pgsql_119; I am pgsql_119
2020-04-02 18:17:22,430 INFO: no action.  i am the leader with the lock
2020-04-02 18:17:26,402 INFO: Lock owner: pgsql_119; I am pgsql_119
2020-04-02 18:17:26,430 INFO: no action.  i am the leader with the lock

但是在备用服务器上出现了问题。备用服务器上的Patroni打印消息如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
2020-04-02 18:45:25,995 INFO: no action.  i am a secondary and i am following aleader
2020-04-02 18:45:27,285 INFO: closed patroni connection to the postgresql cluster
2020-04-02 18:45:27,722 INFO: postmaster pid=7448
2020-04-02 18:45:27.832 HKT [7448] LOG:  listening on IPv4 address "0.0.0.0", port 5433
2020-04-02 18:45:27.994 HKT [7448] LOG:  redirecting log output to logging collector process
2020-04-02 18:45:27.994 HKT [7448] HINT:  Future log output will appear in directory "log".
2020-04-02 18:45:30,058 INFO: Lock owner: pgsql_node119; I am pgsql_node155
2020-04-02 18:45:30,058 INFO: does not have lock
2020-04-02 18:45:30,058 INFO: establishing a new patroni connection to the postgres cluster
2020-04-02 18:45:31,162 INFO: no action.  i am a secondary and i am following aleader
2020-04-02 18:45:32,460 INFO: closed patroni connection to the postgresql cluster
2020-04-02 18:45:32,875 INFO: postmaster pid=8820
2020-04-02 18:45:32.996 HKT [8820] LOG:  listening on IPv4 address "0.0.0.0", port 5433
2020-04-02 18:45:33.161 HKT [8820] LOG:  redirecting log output to logging collector process
2020-04-02 18:45:33.161 HKT [8820] HINT:  Future log output will appear in directory "log".
2020-04-02 18:45:35,211 INFO: Lock owner: pgsql_node119; I am pgsql_node155
2020-04-02 18:45:35,211 INFO: does not have lock
2020-04-02 18:45:35,211 INFO: establishing a new patroni connection to the postgres cluster
2020-04-02 18:45:37,215 INFO: establishing a new patroni connection to the postgres cluster

postgresql日志内容重复如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
FATAL:  the database system is starting up
LOG:  redo starts at 0/3A000060
LOG:  consistent recovery state reached at 0/3A000140
LOG:  invalid record length at 0/3A000140: wanted 24, got 0
LOG:  database system is ready to accept read only connections
LOG:  started streaming WAL from primary at 0/3A000000 on timeline 40
LOG:  received fast shutdown request
LOG:  aborting any active transactions
FATAL:  terminating connection due to administrator command
FATAL:  terminating walreceiver process due to administrator command
LOG:  shutting down
LOG:  database system is shut down
LOG:  database system was shut down in recovery at 2020-04-02 18:50:20 CST

这意味着备用服务器上的PostgreSQL每5秒重新启动一次!

这是我的一个patroni.yml。除了ip地址之外,另一个是相同的。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
scope: pgsql
namespace: /pgsql/
name: pgsql_node119

restapi:
  listen: 10.19.170.119:8008
  connect_address: 10.19.170.119:8008
 
etcd:
  host: 10.19.170.119:2379
 
bootstrap:
  # this section will be written into Etcd:/<namespace>/<scope>/config after initializing new cluster
  # and all other cluster members will use it as a `global configuration`
  dcs:
    ttl: 30
    loop_wait: 10
    retry_timeout: 10
    maximum_lag_on_failover: 1048576
    master_start_timeout: 300
    synchronous_mode: false
    # check_timeline: true
    postgresql:
      use_pg_rewind: true
      use_slots: true
 
postgresql:
  listen: 0.0.0.0:5433
  connect_address: 10.19.170.119:5433
  data_dir: "/opt/postgresql-11/data"
  bin_dir: "/opt/postgresql-11/bin"
#  config_dir: /etc/postgresql/9.6/main
  authentication:
    replication:
      username: repuser
      password: repuserpwd
    superuser:
      username: postgres
      password: postgrespwd
 
#watchdog:
#  mode: automatic # Allowed values: off, automatic, required
#  device: /dev/watchdog
#  safety_margin: 5
 
tags:
    nofailover: false
    noloadbalance: false
    clonefrom: false
    nosync: false

你知道为什么会发生这种情况吗?或者如何解决这个问题?谢谢。

EN

回答 1

Stack Overflow用户

发布于 2021-05-20 12:31:30

我在github上的Patroni的issue中发现了类似的问题。

备用服务器上的Patroni如此频繁地重新启动PostgreSQL的问题的直接原因是Patroni所需的密码文件被另一个进程修改。我的patroni.yml中没有配置postgresql的一个重要参数pgpass。默认值为$HOME/.pgpass($HOME是用户“postgres”的主目录)。

但是,文件"$HOME/.pgpass“可能会被其他应用程序修改。这将使Patroni服务异常。

解决方案是将pgpass设置为仅由Patroni访问的.pgpass的路径。例如,

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pgpass: /etc/patroni/.pgpass
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60992603

复制
相关文章
解决 Mac和Idea 终端关闭后,环境变量失效,每次都需source ~/.bash_profile 问题
问题 ll 命令可以查看该文件夹下的所有文件信息,包括隐藏的文件, 但当使用此命令时却出现报错
全栈程序员站长
2022/07/19
2.1K0
解决 Mac和Idea 终端关闭后,环境变量失效,每次都需source ~/.bash_profile 问题
如何让Git记住你的GitHub Token,避免每次都要重复输入?
从2021.08.13开始, GitHub不再支持账号和密码的方式来pull和push代码了,取而代之的是官方推出的Token。
marsggbo
2021/10/09
5.5K0
如何避免 IDEA 每次重启都index
在 IntelliJ IDEA 中,可以通过以下几个步骤来避免每次重启时索引: 打开 File -> Settings 菜单。在左侧的菜单栏中选择 “Appearance & Behavior” -> “System Settings” -> “Synchronization”。
JavaEdge
2023/04/26
4.1K0
如何避免 IDEA 每次重启都index
git生成ssh key 避免每次push都要输入账号密码。
将id_rsa.pub文件中的内容添加到github上的Add SSH key页面即可
陈黎栋
2020/02/18
1.8K0
gradle 打包命令(怎么在mac终端输入命令)
估计好多兄弟们都习惯了用AndroidStudio和Eclipse的build直接对app进行打包,但是其实打包更应该用Gradle打包,我来附上方法:
全栈程序员站长
2022/07/31
2.3K0
git生成ssh key 避免每次push都要输入账号密码
第一步:生成public/private rsa key pair 在git的安装目录下,双击bash.exe,在命令行中输入ssh-keygen -t rsa -C "your_email@example.com"
全栈程序员站长
2022/07/08
6580
git生成ssh key 避免每次push都要输入账号密码
为了避免登录每次需要输入密码,配置成SSH免密登录。
1、点击[命令行窗口] 2、按<Enter>键 3、点击[命令行窗口] 4、按<Enter>键 5、点击[命令行窗口] 6、按<Enter>键 7、按<Enter>键 8、按<Enter>键 9、点击[命令行窗口] 10、按<Enter>键 11、点击[命令行窗口] 12、按<Enter>键 13、点击[命令行窗口] 14、按<Enter>键 15、按<Enter>键 16、点击[命令行窗口] 17、按<Enter>键
裴来凡
2022/05/28
1K0
为了避免登录每次需要输入密码,配置成SSH免密登录。
source命令
source命令,之前一直用来加载环境变量的,source一下然后执行某个sh,使其环境变量生效,但对细节没有追究;
千往
2019/07/10
1.9K0
scp上传文件到远程服务器,如何避免每次都要输入远程服务器的密码
在本地机器上使用ssh-keygen命令生成SSH密钥对。默认情况下,公钥和私钥会被存储在~/.ssh目录下。
JavaEdge
2023/06/10
1.6K0
如何在idea中配置git环境,使终端可以输入git命令
1.找到git目录,为它配置一个path 然后就像当初配置JAVA_HOME一样,新建一个,再加到path中
2020/10/23
1.7K0
如何在idea中配置git环境,使终端可以输入git命令
利用Python提升终端输入命令的准确性
终端输入一个命令,相当于一个字符串。如何检查输入是否正确,需要平时多练习,这里提供一个思路。利用python写一个函数来判断。利用python的切片功能,很方便的从字符串中遍历单个字符,并利用ord()函数获取其对应的ASCII 数值,或者 Unicode 数值。具体代码如下:
fem178
2022/05/05
3660
【Linux】Source 命令解释
source filename 与 sh filename 及./filename执行脚本的区别:
杨丝儿
2022/03/01
1.9K0
MySQL之source命令
今天上班的时候,开发的同事拿过来一个.zip的压缩包文件,说是要把里面的数据倒入到数据库里面,本来想着是成型的SQL,只需要复制粘贴一下,倒入到数据库中就可以了。拿到的时候,才发现问题没我想的那么简单,我首先看到的是一个压缩包,大概30多M,解压之后,发现里面的内容是个.sql的数据文件,文件的大小是645M左右,这么大的文件,要是手动粘贴上去,那简直太变态了。第一反应这个是不是mysqldump出来的备份数据,要是这样的话,就可以直接在命令行中进行恢复了。于是打开看了一下里面的内容,发现这是一个标准的Navicat导出的sql文件,里面全都是各种的插入语句,到这里,一下子释然了,因为这样的就sql文件可以直接通过MySQL的source命令来倒入到数据库中,因为数据量很大,为了避免出错,我重新看了看source的语法,这里简单说明下。
AsiaYe
2019/11/06
11K0
Linux下.bashrc文件探索~
先骂人,再逼逼~上个环境还没有配置好,我就来写这个了.我不服!!!谁让咱们东西学的不系统呢~记录一下.bashrc文件的用途.毕竟zsh也得用不是~
云深无际
2021/04/14
12.6K0
Linux下.bashrc文件探索~
git每次push和pull都要输入密码
然后你使用上述的命令配置好之后,再操作一次git pull,然后它会提示你输入账号密码,这一次之后就不需要再次输入密码了。
全栈程序员站长
2022/07/19
1.4K0
Source Insight集成svn命令
option->Custom Commands 添加一个命令 名字:SVN Log (随便自己写) 运行:”C:\Program Files\TortoiseSVN\bin\TortoiseProc.exe” /command:log /path:%f /notempfile /closeonend 其中TortoiseProc.exe的目录以自己电脑上的为准。
coderhuo
2023/10/21
2640
nvm管理node 原
(adsbygoogle = window.adsbygoogle || []).push({});
阿dai学长
2019/04/03
4260
windows终端输入pip insta
emmm这个问题我也不太懂,后来让他pip install requests这样操作,,
py3study
2020/01/16
6020
Linux终端输入设备tty
在Linux操作系统中,所有外围设备都有其名称与代号,这些名称代号以特殊文件的类型存放于/dev目录下。你可以执行tty(teletypewriter)指令查询目前使用的终端机的文件名称。
问天丶天问
2023/10/17
2360
点击加载更多

相似问题

预放大Audio OS X

12

Python中的os模块使用什么os?

12

OS :与图像相比,使用所有处理器

13

在Python中预填充输入

20

预优点预处理器不编译混合处理器

17
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文