暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

五种判断PostgreSQL主备角色的方法

原创 梧桐 2023-08-17
1162

背景

进行流复制主备切换之前首先得知道当前数据库的角色,这里提供五种方法判断数据库角色,测试环境为一主一备,这些方法同样适用于一主多备环境,对于级联复制或逻辑复制的场景不完全适用 但基本思想是一致的。

1、操作系统上查看WAL发送进程或WAL接收进程

之前介绍了流复制部署过程,大家知道流复制主库上有WAL发送进程,流复制备库上有WAL接收进程,根据这个思路,在数据库主机上执行以下命令

ps ef | grep "wal" | grep -v "grep"

如果输出wal sender … streaming进程则说明当前数据库为主库

如果输出wal receiver . . streaming进程则说明当前数据库为备库

2、数据库上查看WAL发送进程或WAL接收进程

在数据库层面查看WAL发送进程和WAL接收进程,例如在主库上查询问_stat_replication视图,,如下所示:

select pid, usename, application_name, client_addr , state, sync_state FROM pg_stat_replication;

如果返回记录说明是主库,备库上查询此视图无记录

同样,在备库上查看pg_stat_wal_receiver视图,如果返回记录说明是备库。

3、通过系统函数查看

登录数据库执行以函数,如下所示:

SELECT pg_is_in_recovery(); pg_is_in_recovery f (1 row)

如果返回t说明是备库,返回f说明是主库。

4、查看数据库控制信息

通过pg_controldata命令查看数据库控制信息,内容包含WAL日志信息、 checkpoint、数据块等信息,通过Database cluster state 信息可判断是主库还是备库, 如下所示:

./pg_controldata -D ../data |grep cluster Database cluster state: in production

以上查询结果返回in production表示为主库,返回in archive recovery表示是备库

5、查看配置文件

vim postgresql.conf synchronous_commit = on # synchronization level; synchronous_standby_names ='local2'

如开启如上,即为主库

最后修改时间:2023-08-24 11:42:09
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论