pgsql之pg_stat_replication的使用详解

yizhihongxing

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设置生存时间或过期时间的相关命令

    一.前言    本文简单地记录一下Redis中设置key的生存时间或过期时间的方式。 二.设置key的生存时间   通过EXPIRE命令和PEXPIRE命令,可以给key设置生存时间(Time To Live,TTL),EXPIRE设置的时间单位为秒,PEXPIRE设置的时间单位为毫秒,在经过指定的生存时间后,Redis服务器会自动删除生存时间为0的key。…

    Redis 2023年4月12日
    00
  • MySQL关于sql_mode解析与设置讲解

    MySQL 关于 sql_mode 解析与设置讲解 在讲解 sql_mode 之前,我们需要先了解什么是 SQL,以及 MySQL 又是什么。 SQL 是什么 SQL 是指结构化查询语言,在关系数据库管理系统中,被广泛用于数据库的管理与操作。常用的 SQL 语法有:SELECT、INSERT、UPDATE、DELETE,以及创建表、索引等相关的语法。 在我们…

    database 2023年5月21日
    00
  • shell脚本实现ftp上传下载文件功能

    FTP上传文件功能实现 首先需要安装ftp客户端,以Centos系统为例,可以使用以下命令安装: yum install ftp -y 安装完成后,我们可以编写shell脚本实现ftp上传文件功能。 #!/bin/bash HOST=’ftp.example.com’ USER=’username’ PASSWD=’password’ ftp -n $HOS…

    database 2023年5月22日
    00
  • djano一对一、多对多、分页实例代码

    下面是一个完整的“Django一对一、多对多、分页实例代码”的攻略,包含两个实例说明。 什么是Django? Django 是一个用 Python 编写的 Web 框架,可以用于快速开发高质量的 Web 应用程序。 Django 鼓励我们开发可重用组件,使用约定优于配置的方式,最终提高开发的效率。 一对一关系的实例代码 一对一关系表示两个实体之间的关系是唯一…

    database 2023年5月22日
    00
  • 成本会计和管理会计的区别

    成本会计和管理会计是会计学中两个重要的分支。尽管它们都涉及到企业的财务信息的记录和分析,但是它们的目的和方法都不同。 成本会计 成本会计是指对企业生产成本的记录和分析,将每个产品的生产成本准确计算出来。通过成本会计,企业可以了解每个产品的成本,以此来制定产品价格和生产计划。 特点 以成本作为核心,强调成本的核算和管理 针对生产成本进行数据记录和分析 重点关注…

    database 2023年3月27日
    00
  • rails常用数据库查询操作、方法浅析

    以下是关于 “Rails 常用数据库查询操作、方法浅析” 的完整攻略。 为什么需要数据库查询操作 在 Web 应用中,很多业务需要与数据库进行交互,从而读写数据。而一个完整的 Web 应用通常需要处理大量的数据。如果不合理地操作数据库,势必会影响应用性能。因此了解数据库查询操作及其方法可以帮助我们更好地进行数据库管理,提高应用的效率。 常用的数据库查询操作 …

    database 2023年5月21日
    00
  • MySQL单表查询常见操作实例总结

    MySQL单表查询常见操作实例总结 MySQL的单表查询是数据库操作的基础,多数时候我们的操作都是围绕着单表查询来展开的。在这里,我将总结了几种常见的MySQL单表查询的操作,包括:SELECT、DISTINCT、WHERE、AND、OR、IN、BETWEEN、LIKE、ORDER BY、GROUP BY、HAVING、LIMIT等。 SELECT SELE…

    database 2023年5月22日
    00
  • MySQL DATEDIFF函数获取两个日期的时间间隔的方法

    下面是详细的MySQL DATEDIFF函数获取两个日期的时间间隔的方法攻略。 什么是MySQL DATEDIFF函数? MySQL DATEDIFF()函数用于计算两个日期之间的时间间隔,返回值是以天数为单位的整数。它的语法结构如下: DATEDIFF(end_date, start_date) 其中,start_date和end_date是两个日期参数,…

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