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日

相关文章

  • redis 参数详解

    #是否作为守护进程运行 yes 或者 no daemonize yes #监听IP,redis一般监听127.0.0.1 网段访问,集群模式需要指定IP地址。 bind 192.168.1.115 # 当 Redis 以守护进程的方式运行的时候,Redis 默认会把 pid 文件放在/var/run/redis.pid # 可配置到其他地址,当运行多个 re…

    Redis 2023年4月13日
    00
  • SQL Server与Excel、Access数据之间互导操作教程

    下面是详细讲解SQL Server与Excel、Access数据之间互导操作教程的完整攻略,过程中包含两条示例说明。 SQL Server与Excel数据之间互导教程 导出数据 在SQL Server中导出数据到Excel有以下几种方法: 1. 通过导出向导导出数据 这是一种基本的方法,可以通过SQL Server Management Studio中的导出…

    database 2023年5月21日
    00
  • Navicat运行sql文件导入数据不全或导入失败的解决方案

    下面是详细讲解“Navicat运行sql文件导入数据不全或导入失败的解决方案”的完整攻略。 问题的背景 在使用Navicat工具进行sql文件导入时,可能会出现数据导入不全或导入失败的情况,这给数据导入带来了很大的麻烦。因此,我们需要找到解决这种情况的方法。 解决方案 方案一:增加sql文件导入参数 可以通过增加sql文件导入的参数来解决问题。具体操作如下:…

    database 2023年5月18日
    00
  • SQL – 别名

    SQL-别名的完整攻略 在SQL中,别名(Alias)是给一个表或一个列起一个别名,以便于提高查询语句的可读性。下面介绍SQL别名的具体用法及实例。 用法 SQL别名的使用方法为,使用AS关键字来为表或列起一个别名。语法如下: SELECT column_name AS alias_name FROM table_name; 实例 实例一 现有一张订单表,需…

    database 2023年3月27日
    00
  • android中SQLite使用及特点

    Android 中 SQLite 使用及特点 SQLite 简介 SQLite 是一个软件库,实现了关系数据库管理系统的功能。SQLite 的特点是轻量级的、无需独立的服务器进程和系统,以及易于理解和使用。在 Android 中,SQLite 是默认的数据库,用于本地存储数据。 SQLite 使用步骤 1. 导入库依赖 在 Android 项目中,需要在 a…

    database 2023年5月21日
    00
  • 浅谈一下mysql数据库底层原理

    浅谈一下MySQL数据库底层原理 1. MySQL基础知识 1.1 MySQL简介 MySQL是一个关系型数据库管理系统,广泛用于Web应用程序的后台数据管理。MySQL是开源的,符合标准SQL,支持多种操作系统,包括Linux、Windows和Mac OS等。 1.2 MySQL的体系结构 MySQL的体系结构由许多不同的模块组成,主要包括连接器、管理器、…

    database 2023年5月19日
    00
  • 几种MySQL中的联接查询操作方法总结

    几种MySQL中的联接查询操作方法总结 在MySQL中,联接查询是非常常见的操作,它可以将多个数据表中的数据合并在一起,能够满足复杂查询的需求。本文总结了几种MySQL中的联接查询操作方法,希望能为读者提供一些参考。 内连接查询(INNER JOIN) 内连接查询是联接操作中最常用的一种方法。它会将多个表中共有的数据记录连接在一起,只输出同时存在于这些表中的…

    database 2023年5月22日
    00
  • Oracle date 和 timestamp 区别详解

    Oracle Date 和 Timestamp 区别详解 在Oracle数据库中,日期和时间数据类型有两种,分别是DATE和TIMESTAMP。下面详细讲解这两种类型的区别。 DATE DATE类型用于存储日期和时间的值,精度到秒级别。它的格式为:YYYY-MM-DD HH24:MI:SS。其中,YYYY表示年份,MM表示月份,DD表示日期,HH24表示小时…

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