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 缓存验证码 步骤

    1. 安装redis https://redis.io/download 根据官网的教程就行操作: $ wget http://download.redis.io/releases/redis-3.2.9.tar.gz $ tar xzf redis-3.2.9.tar.gz $ cd redis-3.2.9 $ make可能会遇到的问题是你的服务器上没有装…

    Redis 2023年4月11日
    00
  • sqlserver 禁用触发器和启用触发器的语句

    禁用SQL Server触发器可以暂时停止触发器的运行,以便执行某些操作而不触发触发器。启用触发器则可以重新启用先前禁用的触发器。 下面是禁用和启用SQL Server触发器的语法: 禁用触发器 DISABLE TRIGGER trigger_name ON table_name 其中,trigger_name为将要禁用的触发器名称,table_name为要…

    database 2023年5月21日
    00
  • Redis面试总结

    (1)什么是redis? Redis 是一个基于内存的高性能key-value数据库。 (有空再补充,有理解错误或不足欢迎指正) (2)Reids的特点 Redis本质上是一个Key-Value类型的内存数据库,很像memcached,整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据flush到硬盘上进行保存。因为是纯内存操作,Redis的…

    Redis 2023年4月12日
    00
  • MySQL的视图和索引用法与区别详解

    MySQL的视图和索引是数据库的两个重要组成部分,它们在数据库查询和性能优化方面发挥着重要的作用。本文将详细讲解MySQL的视图和索引的用法和区别,并提供两个示例帮助你更好地理解。 一、MySQL的视图 1.1 什么是视图 视图是一个虚拟的表,它是从一个或多个表中派生出来的。视图并不在数据库中实际存在,它只是一个预定义的查询,对于用户而言,它看起来像是一张表…

    database 2023年5月22日
    00
  • JDK常用命令jps jinfo jstat的具体说明与示例

    下面是 JDK 常用命令 jps jinfo jstat 的具体说明与示例攻略: jps jps 命令用于列出指定主机上的所有 Java 进程,以及对应进程的 PID(进程 ID)和启动时的参数信息。这个命令通常用于快速查看当前系统中 Java 进程的情况。 使用 jps 命令的一般格式为: jps [options] 其中,可用的选项包括: -q:只输出进…

    database 2023年5月21日
    00
  • JMeter对数据库的查询操作步骤详解

    我来详细讲解一下“JMeter对数据库的查询操作步骤详解”。 概述 在进行动态网站的性能测试中,经常需要对数据库进行查询操作,JMeter 是轻量级的性能测试工具,能够对数据库进行查询测试。 本文主要介绍以下几个步骤: 配置 JDBC 连接池 配置 JDBC 请求 配置结果断言 步骤详解 步骤一:配置 JDBC 连接池 在 JMeter 中使用 JDBC 请…

    database 2023年5月21日
    00
  • SpringBoot项目部署到阿里云服务器的实现步骤

    下面是Spring Boot项目部署到阿里云服务器的实现步骤的完整攻略: 1. 购买阿里云服务器 首先需要购买一台阿里云服务器,推荐选择云服务器ECS。购买时需要选择操作系统,推荐选择CentOS 7.x。购买完成后,需要获取服务器的IP地址和登录密码。 2. 安装Java环境 接下来需要在服务器上安装Java环境,可以通过以下命令安装: yum insta…

    database 2023年5月21日
    00
  • Oracle 11g如何清理数据库的历史日志详解

    Oracle 11g如何清理数据库的历史日志详解 Oracle 11g数据库中包含大量的历史日志文件,这些文件会占用磁盘空间并降低系统的性能。因此,定期清理历史日志是数据库管理中的一个重要任务。在本文中,我们将详细介绍如何清理Oracle 11g数据库的历史日志。 步骤一:停止数据库 在清理历史日志之前,必须先停止数据库。在命令行窗口中输入以下命令停止Ora…

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