首页 > 数据库 >PostgreSQL中的复制延迟

PostgreSQL中的复制延迟

时间:2023-11-25 19:12:25浏览次数:49  
标签:wal PostgreSQL 数据库 复制 pg 延迟

PostgreSQL 是一种流行的开源关系数据库管理系统,广泛用于存储和管理数据。PostgreSQL 中可能遇到的常见问题之一是复制滞后。

在这篇博客中,我们将讨论什么是复制延迟、它发生的原因以及如何在 PostgreSQL 中缓解它。

什么是复制滞后?

复制延迟是指数据写入主数据库的时间与复制到备用数据库的时间之间的延迟。在 PostgreSQL 中,由于各种原因,例如网络延迟、缓慢的磁盘 I/O、长时间运行的事务等,都可能会出现复制延

迟。在使用备用数据库进行故障转移的高可用性系统中,复制延迟可能会产生严重后果。如果复制延迟太高,发生故障转移时可能会导致数据丢失。最常见的方法是在主节点中运行引用此视图的查

询。

postgres=# SELECT pid,application_name,client_addr,client_hostname,state,sync_state,replay_lag
postgres-# FROM pg_stat_replication
postgres-# ;
pid | application_name | client_addr | client_hostname | state | sync_state | replay_lag
-----+------------------+-------------+-----------------+-------+------------+------------
(0 rows)
postgres=#

检查备用节点的查询:

postgres=# select pg_is_in_recovery(),pg_is_wal_replay_paused(), pg_last_wal_receive_lsn(), pg_last_wal_replay_lsn(), pg_last_xact_replay_timestamp();
pg_is_in_recovery | pg_is_wal_replay_paused | pg_last_wal_receive_lsn | pg_last_wal_replay_lsn | pg_last_xact_replay_timestamp
-------------------+-------------------------+-------------------------+------------------------+-------------------------------
t | f | D1/8000000 | D1/8000000 | 2023-03-16 11:37:57.861711+00
(1 row)
postgres=#

为什么会出现复制滞后?

复制滞后的原因有多种,例如:

网络延迟:网络延迟是指数据在主数据库和备用数据库之间传输所花费的时间造成的延迟。

有多种因素,例如数据库之间的距离、网络拥塞等,都可能导致这种延迟。

磁盘 I/O 缓慢:磁盘 I/O 缓慢可能是由多种因素引起的,例如磁盘碎片、磁盘空间不足等。缓慢的磁盘 I/O 会延迟将数据写入备用数据库。

长时间运行的事务:长时间运行的事务可能会导致复制滞后,因为这些事务所做的更改只有在提交事务后才会被复制。

配置很差,例如在处理大量事务请求时设置较低数量的 max_wal_senders

有时,服务器会在备份完成之前回收旧的 WAL 段,并且无法从主服务器中找到 WAL 段。

通常,这也是由于检查点行为,WAL段被旋转或回收。

减轻 PostgreSQL 中的复制延迟

有多种方法可以缓解 PostgreSQL 中的复制延迟,例如:

增加网络带宽:增加主数据库和备用数据库之间的网络带宽可以帮助减少由网络延迟引起的复制延迟。

使用异步复制:异步复制允许备用数据库落后于主数据库,从而有助于减少复制滞后。这意味着备用数据库不必等待主数据库提交事务即可复制数据。

调整 PostgreSQL 配置参数:调整 wal_buffersmax_wal_senders 等 PostgreSQL 配置参数可以帮助提高复制性能并减少复制延迟。

监控复制延迟:监控复制延迟可以帮助识别延迟的原因并采取适当的措施来缓解延迟。

PostgreSQL 提供了多种工具,例如 pg_stat_replicationpg_wal_receiver_stats 等,用于监控复制延迟。

结论

复制延迟是 PostgreSQL 中一个常见的问题,会严重影响高可用性系统。

了解复制滞后的原因并采取适当的措施来缓解它有助于确保数据库系统的可用性和可靠性。

通过增加网络带宽、使用异步复制、调整 PostgreSQL 配置参数以及监控复制延迟,管理员可以减轻复制延迟并确保更加稳定可靠的数据库环境。

标签:wal,PostgreSQL,数据库,复制,pg,延迟
From: https://www.cnblogs.com/jl1771/p/17855908.html

相关文章

  • Linux 中 一次同时复制多个文件到一个目录
     001、测试目录及文件(base)[root@pc1test01]#lsa.txtb.txtc.txt(base)[root@pc1test01]#pwd/home/test/test01 002、同时复制a.txt和b.txt到/home/test/test02目录中(base)[root@pc1test01]#lsa.txtb.txtc.txt(base)[root@pc1test01]#pwd......
  • 主从复制存在哪些问题
    主从复制虽好,但也存在一些问题:一旦主节点出现故障,需要手动将一个从节点晋升为主节点,同时需要修改应用方的主节点地址,还需要命令其他从节点去复制新的主节点,整个过程都需要人工干预。主节点的写能力受到单机的限制。主节点的存储能力受到单机的限制。第一个问题是Redis的高可用......
  • 从wsl复制文件到windows立刻读报错Permission denied
    因为是在windows使用IDE开发,但用到了ubuntu下抓的pcap文件,我直接从wsl把文件复制到windows目录下,使用WatchService监视目录。第一次正常,第二次以后一直报错org.pcap4j.core.PcapNativeException:E:\input_test\xxx.pcap:Permissiondenied。起初以为是其他程序也开了文件没正常......
  • postgresql从入门到精通 - 第35讲:中间件PgBouncer部署|PostgreSQL教程
     PostgreSQL从小白到专家,是从入门逐渐能力提升的一个系列教程,内容包括对PG基础的认知、包括安装使用、包括角色权限、包括维护管理、、等内容,希望对热爱PG、学习PG的同学们有帮助,欢迎持续关注CUUGPG技术大讲堂。 第35讲:中间件PgBouncer部署11月25日(周六)19:30-20:30,往期......
  • 从word复制内容到wangEditor富文本框的时候会把html标签也复制过来,如果只想实现直接复
    从word复制内容到wangEditor富文本框的时候会把html标签也复制过来,如果只想实现直接复制纯文本,有什么好的实现方式?将Word中的内容复制到富文本编辑器时,常常会带有大量的HTML标签和样式,这可能导致不必要的格式混乱。要实现纯文本的粘贴,你可以尝试以下方法:1.使用纯文本粘贴快捷......
  • 流量复制工具
    一、tcpcopyhttps://github.com/session-replay-tools/tcpcopy二、goreplayhttps://github.com/buger/goreplay......
  • Vue + Element UI 实现复制当前行数据功能(复制到新增页面组件值不能更新等问题解决)
    1、需求使用Vue+ElementUI实现在列表的操作栏新增一个复制按钮,复制当前行的数据可以打开新增弹窗后亦可以跳转到新增页面,本文实现为跳转到新增页面。2、实现1)列表页index.vue<el-table><!--其他列--><el-table-columnlabel="操作"width="150"><templateslot-s......
  • Vue + Element UI 实现复制当前行数据功能(复制到新增页面组件值不能更新等问题解决)
    1、需求使用Vue+ElementUI实现在列表的操作栏新增一个复制按钮,复制当前行的数据可以打开新增弹窗后亦可以跳转到新增页面,本文实现为跳转到新增页面。2、实现1)列表页index.vue<el-table><!--其他列--><el-table-columnlabel="操作"width="150"><templateslot-scope=......
  • litestream sqlite流式复制工具
    litestream是基于golang开发的sqlite流式复制工具,可以方便的复制数据到s3或者一些共享存储中说明litestream使用简单,对于一些基于sqlite的db存储的应用备份,是一个很不错的选择(比如默认的grafana,proxysql)同时litestream对于s3兼容的存储支持也很不错(minio)值得试用下参考资料......
  • postgresql中执行select查询语句卡住问题的处理
     1、问题描述 研发环境搭建的分布式的数据库Tbase。Tbase本质上是基于postgresql-xl创建的分布式数据库。昨天,研发的同事反馈,这个数据库中,对某个表执行select查询的时候,都是卡住的。客户端一直没有影响。 2、问题分析 我这边通过pg的客户端进行连接,发现除了这个......