repmgr手动切换主从失败,报错‘DETAIL: local node last receive LSN‘

news/2024/7/9 19:34:33 标签: 数据库, postgresql
repmgr:5.4.0
pgsql: 14.2
OS:centos7.8

刚搭建好的repmgr主从使用命令手动进行切换失败,日志如下

postgres@db02:~$ repmgr standby switchover
NOTICE: executing switchover on node "db02" (ID: 2)
NOTICE: local node "db02" (ID: 2) will be promoted to primary; current primary "db01" (ID: 1) will be demoted to standby
NOTICE: stopping current primary node "db01" (ID: 1)
NOTICE: issuing CHECKPOINT on node "db01" (ID: 1)
DETAIL: executing server command "/usr/lib/postgresql/14/bin/pg_ctl  -D /var/lib/postgresql/14/main -W -m fast stop"
INFO: checking for primary shutdown; 1 of 60 attempts ("shutdown_check_timeout")
INFO: checking for primary shutdown; 2 of 60 attempts ("shutdown_check_timeout")
NOTICE: current primary has been cleanly shut down at location 0/4000016
NOTICE: waiting up to 30 seconds (parameter "wal_receive_check_timeout") for received WAL to flush to disk
INFO: sleeping 1 of maximum 30 seconds waiting for standby to flush received WAL to disk
INFO: sleeping 2 of maximum 30 seconds waiting for standby to flush received WAL to disk
INFO: sleeping 3 of maximum 30 seconds waiting for standby to flush received WAL to disk
[...]
INFO: sleeping 29 of maximum 30 seconds waiting for standby to flush received WAL to disk
INFO: sleeping 30 of maximum 30 seconds waiting for standby to flush received WAL to disk
WARNING: local node "db02" is behind shutdown primary "db01"
DETAIL: local node last receive LSN is 0/3D02000, primary shutdown checkpoint LSN is 0/4000016
NOTICE: aborting switchover
HINT: use --always-promote to force promotion of standby

postgresql.conf中有这样一个内容

archive_mode = on
#因为使用了repmgr,所以不需要归档,这里设置为true,禁用归档
archive_command = '/bin/true'

通过查询发现,正是archive_command 这里使用了'/bin/true',导致repmgr切换失败
将命令改为

archive_command = '{ sleep 5; true; }'

再次手动执行主从切换成功

具体原因目前没有明确解释,估计是repmgr或pg对这个参数有个超时或者时间检查之类的机制


http://www.niftyadmin.cn/n/5237942.html

相关文章

【NI-RIO入门】Real Time(实时系统解释)

1.什么是实时系统? 实时系统可以非常精确可靠的执行需要特定时许要求的系统,对于许多工程项目来说,通用操作系统,例如WINDOWS等标准PC上运行测量和控制程序是无法精确控制计时的,这些系统很容易受用户的其他程序、图像…

虚函数不能声明为static

虚函数申明为static报错 class Foo { public:Foo()default;static virtual ~Foo(){} };int main() {Foo foo;return 0; };main.cpp:10:25: error: member ‘~Foo’ cannot be declared both virtual and static static virtual ~Foo() 代码编译会报错,不允许同时声…

集成开发环境PyCharm的使用【侯小啾python基础领航计划 系列(三)】

集成开发环境 PyCharm 的使用【侯小啾python基础领航计划 系列(三)】 大家好,我是博主侯小啾, 🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹…

08 # 接口:函数类型接口

变量定义函数类型 let addFunc: (x: number, y: number) > number;接口定义函数类型 interface AddFunc1 {(x: number, y: number): number; }类型别名定义函数类型 type AddFunc2 (x: number, y: number) > number;实现具体函数 let add1: AddFunc1 (x, y) > x…

Trello软件:从功能、使用技巧到替代软件等,一文弄懂项目管理必备工具!

Trello是什么? Trello是一款基于Web的可视化项目管理工具,它旨在提供一种灵活、易于理解和使用的任务管理系统。Trello将复杂的项目管理流程简化为直观的卡片和列表,使团队成员能轻松看到整个项目的状态,并了解自己的责任和任务。…

36.位运算符

一.什么是位运算符 按照二进制位来进行运算的运算符叫做位运算符,所以要先将操作数转换成二进制(补码)的形式在运算。C语言的中的位运算符有: 运算符作用举例结果& 按位与(and) 0&00; 0&10; …

Socket和Http的通讯原理,遇到攻击会受到哪些影响以及如何解决攻击问题。

德迅云安全-领先云安全服务与解决方案提供商 Socket和HTTP通信原理: Socket通信原理: Socket是一种应用程序编程接口(API),用于在单个进程或多个进程之间进行通信。它提供了一种灵活的、异步的通信方式,使…

SQL Sever 基础知识 - 数据查询

SQL Sever 基础知识 - 一、查询数据 一、查询数据第1节 基本 SQL Server 语句SELECT第2节 SELECT语句示例2.1 SELECT - 检索表示例的某些列2.2 SELECT - 检索表的所有列2.3 SELECT - 对结果集进行筛选2.4 SELECT - 对结果集进行排序2.5 SELECT - 对结果集进行分组2.5 SELECT - …