pgsql之pg_stat_replication的使用详解

pg_stat_replication的使用详解

什么是pg_stat_replication

pg_stat_replication是PostgreSQL的一个系统视图(View),它展示了当前所有的流复制(replication)的信息。

如何查询pg_stat_replication

直接查询pg_stat_replication即可,如下所示:

SELECT * FROM pg_stat_replication;

执行该命令后,可以获得如下信息:

  pid  | usesysid |   usename   |        application_name        | client_addr | client_hostname | client_port |         backend_start         | backend_xmin |   state   | sent_lsn  | write_lsn | flush_lsn | replay_lsn | write_lag | flush_lag | replay_lag | sync_priority | sync_state 
-------+----------+-------------+--------------------------------+-------------+-----------------+-------------+-------------------------------+--------------+-----------+-----------+-----------+-----------+------------+-----------+-----------+------------+---------------+------------
 21326 |   16384 | replication | walreceiver                      | 192.168.0.1 |                 |       44266 | 2018-06-13 23:10:15.638867+08 |              | streaming | 223528752 | 223528752 | 223528752 | 223528752  |           |           |            |             0 | async
(1 row)

pg_stat_replication的字段释义

pg_stat_replication的字段意义如下:

  • pid:流复制的进程号
  • usesysid:系统用户ID
  • usename:使用流复制的用户
  • application_name:使用流复制的应用
  • client_addr:复制数据的客户端IP地址
  • client_hostname:复制数据的客户端主机名
  • client_port:复制数据的客户端端口
  • backend_start:流复制进程启动时间
  • backend_xmin:流复制进程目前所处理的也就是最新的xid值(事实上这一列已经成为了实际使用中无用且导致误解的列,可以直接忽略掉)
  • state:流复制状态
  • sent_lsn:已发送到备库的WAL段号
  • write_lsn:主库上的WAL写入位置
  • flush_lsn:主库上已经被flush到磁盘的WAL位置
  • replay_lsn:备库已经应用到的LSN
  • write_lag:已经写入但未被备库应用的WAL段数
  • flush_lag:已经flush但未被备库应用的WAL段数
  • replay_lag:已经应用但未被备库确认的WAL段数
  • sync_priority:同步备库指数(0是异步,大于0的都是同步)
  • sync_state:同步状态(async:异步,quorum:集群同步,sync:数据完全同步)

示例1:监测备库是否与主库同步

使用pg_stat_replication可以简单并有效地检查备库是否与主库同步,操作如下:

  1. 查询pg_stat_replication:
SELECT * FROM pg_stat_replication;
  1. 检查输出中sync_state是否等于sync,如果是则备库与主库同步,否则未同步。

示例2:计算WAL延迟

pg_stat_replication也可以用于计算WAL延迟,操作如下:

  1. 查询pg_stat_replication:
SELECT * FROM pg_stat_replication;
  1. 计算主库已经写入但未被备库应用的WAL段数:
SELECT (sent_lsn - write_lsn) / 1024/ 1024 AS "write_lag(MB)" FROM pg_stat_replication;
  1. 计算主库已经flush但未被备库应用的WAL段数:
SELECT (sent_lsn - flush_lsn) / 1024/ 1024 AS "flush_lag(MB)" FROM pg_stat_replication;
  1. 计算已经应用但未被备库确认的WAL段数:
SELECT (write_lsn - replay_lsn) / 1024/ 1024 AS "replay_lag(MB)" FROM pg_stat_replication;

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:pgsql之pg_stat_replication的使用详解 - Python技术站

(0)
上一篇 2023年5月22日
下一篇 2023年5月22日

相关文章

  • Mysql的增删改查语句简单实现

    针对“Mysql的增删改查语句简单实现”的完整攻略,一般来说会包含以下内容: 环境搭建 在进行Mysql的增删改查操作之前,我们需要先搭建一个Mysql环境。这里建议使用XAMPP来搭建环境,因为它是跨平台的且安装配置也较为简单。 数据库操作 创建数据库 要操作Mysql,首先要先创建一个数据库。在Mysql中,使用CREATE DATABASE语句来创建数…

    database 2023年5月21日
    00
  • MybatisPlus批量保存原理及失效原因排查全过程

    针对“MybatisPlus批量保存原理及失效原因排查全过程”的完整攻略,我将依次进行讲解。 1. Mybatis Plus 批量保存原理 Mybatis Plus 实现 Mybatis 的批量操作比起原始的 SqlSessionFactory,是原生支持批量插入、更新和删除的,而且你无需再考虑对数据层相关的代码进行批量包装处理。 具体的实现方式是,在执行批…

    database 2023年5月21日
    00
  • 使用达思SQL数据库修复软件修复中了勒索病毒加密的数据库教程

    使用达思SQL数据库修复软件修复中了勒索病毒加密的数据库是一个比较复杂的过程,需要掌握一些基本的技能和步骤。下面我们将详细介绍如何操作: 1. 下载并安装达思SQL数据库修复软件 首先,需要在官方网站下载并安装达思SQL数据库修复软件。该软件可以修复各种类型的数据库,包括SQL Server、Oracle、Access等。建议下载并安装最新版本,以便获得更好…

    database 2023年5月21日
    00
  • springCloud集成nacos启动时报错原因排查

    这里是“springCloud集成nacos启动时报错原因排查”的完整攻略。 1. 确认nacos服务是否正常启动 在使用nacos作为注册中心时,首先要确认的是nacos服务是否正常启动。可以通过访问nacos的管理页面,在“Server Status”页面查看是否“Server Status”为“UP”,如果不是则需要确认服务配置和启动是否正确。 2. …

    database 2023年5月18日
    00
  • awk基础知识小结

    AWK基础知识小结 AWK是一个强大的文本处理工具,它支持文本搜素、文本提取、文本处理、文本格式化等文本处理功能,被广泛应用于Linux下的文本处理和数据分析中。下面我们来详细讲解AWK的基础知识。 AWK执行过程 awk执行过程是先按照指定分隔符把每行数据解析成多个字段,然后对每一个字段执行指定操作,最后输出结果。其基本格式为: awk [options]…

    database 2023年5月22日
    00
  • Redis分布式锁如何实现续期

    在 Redis 分布式锁中,为了避免锁超时导致其他进程获取到锁,需要对锁进行续期操作。实现 Redis 分布式锁的续期可通过以下几个步骤来完成: 在获取锁时,设置锁的过期时间,例如 60 秒。 在获取锁成功之后,启动一个协程或者开启一个定时任务,每隔一段时间(例如 30 秒)对锁进行续期操作。可以通过设置一个新的过期时间来实现续期,例如 60 秒。 锁的续期…

    database 2023年5月22日
    00
  • sql语句查询数据库中的表名/列名/主键/自动增长值实例

    查询表名 可以使用以下SQL语句查询数据库中的所有表名: SHOW TABLES; 该语句将返回所有表名的列表。 如果你想查询特定数据库中的表名,可以使用以下语句: SHOW TABLES FROM [DATABASE NAME]; 将以上语句中的“[DATABASE NAME]”替换为你要查询的数据库的名称。 查询列名 针对特定的表名,可以使用以下SQL语…

    database 2023年5月21日
    00
  • Linux中dd命令使用实例教程

    Linux中dd命令使用实例教程 dd是 Linux 操作系统中的一个非常强大且常用的命令行工具,它可以在不加安装的情况下被Linux操作系统直接调用,用于将数据位一段文件复制到另一个文件或设备上。下面将介绍 dd 命令的语法、选项以及两个实际的示例。 dd命令语法 dd命令的语法格式如下: dd [选项] 其中 [选项] 是可选项,不同的选项可以控制 dd…

    database 2023年5月22日
    00
合作推广
合作推广
分享本页
返回顶部