首页 > 其他分享 >pg_wal文件过多过大清理方式

pg_wal文件过多过大清理方式

时间:2023-08-07 18:24:39浏览次数:35  
标签:文件 WAL 过多过 备份 wal pg 数据库

  • pg_wal文件过多过大
    
  • 如果 PostgreSQL 中的 pg_wal 文件过多或过大,可能是由于以下原因:

    1. 数据库写入负载过大:如果你的数据库有大量的写入操作,会导致 pg_wal 文件的增长速度很快。
    2. 备份和复制延迟:如果你的数据库设置了基于 WAL 的备份或复制,但备份或复制操作无法及时进行, pg_wal 文件可能会被积累。

    下面是一些处理 pg_wal 文件过多或过大的方法:

    1. 检查数据库写入负载:如果写入负载过高,可能需要优化数据库操作和查询。优化查询可以减少写入操作和 WAL 日志的生成。
    2. 备份和复制:确保备份和复制操作正常运行,当备份或复制操作延迟时, pg_wal 文件可能会增长过快。如果备份或复制操作无法及时进行,可以考虑调整备份策略或增加备份和复制的资源。
    3. 增加磁盘空间:如果 pg_wal 文件过多导致磁盘空间不足,可以考虑增加磁盘空间。
    4. 调整 WAL 日志的相关设置:你可以通过调整 WAL 相关的设置来限制 pg_wal 文件的大小和数量。例如,max_wal_sizemin_wal_size 参数用于调整 WAL 日志分段的大小,max_wal_keep_size 参数用于限制保存的 WAL 日志段数。
    5. 压缩和归档旧的 WAL 日志:可以考虑使用 pg_repack 工具对 WAL 日志进行压缩和归档,以释放磁盘空间。

    请注意,在处理 pg_wal 文件之前,建议先备份数据库以防意外发生。

  • PostgreSQL版本为13.5,如何高效安全的清理一些不必要的pg_wal中的文件
    
  • 在 PostgreSQL 13.5 中,为了高效且安全地清理不必要的 pg_wal 文件,你可以执行以下步骤:

    1. 确认数据库和备份的完整性:在清理 WAL 文件之前,确保数据库和备份是完整和可用的,以防需要进行恢复。

    2. 检查当前 WAL 文件的使用情况:运行以下查询来检查当前 WAL 文件使用的情况:

      SELECT * FROM pg_stat_bgwriter;
      

      注意关注 buffers_allocbuffers_backendbuffers_backend_fsync 字段,这些字段显示了 WAL 缓冲区的使用情况。

    3. 停止写入操作:在清理 WAL 文件之前,最好先停止写入操作,以确保不会有新的 WAL 文件生成。

    4. 备份并测试恢复:在进行任何修改之前,请先备份数据库,并测试能够成功恢复到备份点。

    5. 设置合适的参数:根据你的需求,可以设置以下参数来控制 WAL 文件的大小和保留数量。

      • max_wal_size:这是一个动态参数,用于设置 WAL 日志分段的大小。可以根据数据库写入负载和可用磁盘空间来适当调整该参数。
      • min_wal_size:这是一个动态参数,用于控制 WAL 日志分段的最小大小。设置一个合适的值可以确保保留足够的 WAL 文件供应急恢复使用。
      • archive_command:这是一个用于归档 WAL 文件的命令。可以根据需要配置以将旧的 WAL 文件归档到其他位置。
    6. 清理 WAL 文件:执行以下操作清理不必要的 WAL 文件。

      • 使用 pg_archivecleanup 工具:如果你在 archive_command 中设置了归档命令,并将旧的 WAL 文件归档到其他位置,可以使用 pg_archivecleanup 工具清理掉不再需要的旧文件。例如:

        pg_archivecleanup <归档目录路径> <开始清理的 WAL 文件名>
        

        其中 <归档目录路径> 是归档目录的路径,<开始清理的 WAL 文件名> 是要保留的最新 WAL 文件的名称。

      • 手动删除 WAL 文件:如果你没有设置归档命令,或者想要手动删除一些 WAL 文件,可以按以下步骤进行:

        • 停止 PostgreSQL 实例。
        • $PGDATA/pg_wal/ 目录中删除不再需要的 WAL 文件。请谨慎删除,确保不删除正在使用的文件和必要的历史文件。
        • 启动 PostgreSQL 实例。

    请注意,在进行任何修改之前,请务必备份数据库并测试恢复过程。清理 WAL 文件具有一定的风险,所以请务必小心操作。

PostgreSQL的循环覆盖写是通过把旧的WAL日志“重命名”来实现的。发生一次Checkpoint之后,此Checkpoint点之前的WAL日志文件都可以删除,而PostgreSQL中一般并不会将其删除,而是“重命名”旧的WAL文件使之成为一个新的WAL文件。所以WAL文件目录下文件序号最大的那个WAL文件并不是当前正在写的WAL文件,因为这个WAL文件有可能是前一次Checkpoint时重命名旧文件产生的。我们用一个示例来说明这种情况。

序号最大的文件名为“00000001000000000000002B”,接下来我们进到数据库中,查看当前正在写的文件是哪一个:

select pg_walfile_name(pg_current_wal_lsn());
pg_walfile_name
--------------------------
  000000010000000000000027
(1 row)

上面的SQL语句中先用函数“pg_current_wal_lsn”获得当前正在写的LSN号,然后用函数“pg_walfile_name”找出当前LSN号对应的WAL文件,发现是“000000010000000000000027”说明这时“000000010000000000000028”“000000010000000000000029”“00000001000000000000002A”“00000001000000000000002B”都是以前的WAL文件。

标签:文件,WAL,过多过,备份,wal,pg,数据库
From: https://www.cnblogs.com/lehoso/p/17612149.html

相关文章

  • Linux:防火墙iptables与firewalld的启停
    Linux关闭防火墙firewall和iptables命令_永久关闭iptables防火墙_红烧柯基的博客-CSDN博客Linux防火墙——iptables以及firewalld的使用介绍_树下一少年的博客-CSDN博客干货!Linux防火墙配置(iptables和firewalld)_数据包_规则_进行 iptables与firewalld1、状态syste......
  • ubuntu系统升级软件sudo apt upgrade后GPU崩溃报错,显示驱动版本不匹配——ubuntu系统
     ubuntu系统升级软件(sudoaptupgrade)后,GPU崩溃报错,查看系统日志: Aug206:25:02lcwtrsyslogd:[originsoftware="rsyslogd"swVersion="8.32.0"x-pid="2059"x-info="http://www.rsyslog.com"]rsyslogdwasHUPedAug207:17:01lcwtCRON......
  • 【我和openGauss的故事】使用Ora2Pg迁移oracle数据到openGauss
    【我和openGauss的故事】使用Ora2Pg迁移oracle数据到openGaussDemonCharm[openGauss](javascript:void(0);)2023-08-0418:01发表于四川前言本博客介绍了使用Ora2Pg迁移oracle数据到openGauss1、下载及安装Ora2Pg1.1、下载说明:PerlDBD:http://search.CPAN.org#只需在搜索......
  • Random Walk Problem
    Notice:ThisarticleisjustashortdiscussiononRandomWalkproblem,Icompute\(E(X^2)\)inthisarticle.AfterIreadsomematerials,fromaprogrammer'sperspective,IhavefoundthatthisproblemisnotjustsimpleasIthink,andit's......
  • m基于FFT傅里叶变换的QPSK基带信号频偏估计和补偿算法FPGA实现,包含testbench和matlab
    1.算法仿真效果本系统进行了Vivado2019.2平台的开发,并使用matlab2022a对结果进行星座图的显示:将FPGA的频偏基带QPSK信号和频偏补偿后的QPSK基带信号使用matlab显示星座图,结果如下:2.算法涉及理论知识概要QPSK(QuadraturePhaseShiftKeying)是一种常用的调制方式,它可以在相位和......
  • m基于FFT傅里叶变换的QPSK基带信号频偏估计和补偿算法FPGA实现,包含testbench和matlab
    1.算法仿真效果本系统进行了Vivado2019.2平台的开发,并使用matlab2022a对结果进行星座图的显示:   将FPGA的频偏基带QPSK信号和频偏补偿后的QPSK基带信号使用matlab显示星座图,结果如下:   2.算法涉及理论知识概要       QPSK(QuadraturePhaseShiftKeying)......
  • SnapGene - DNA序列生物分析 5.3.1 mac/win版
    SnapGene是一款用于DNA序列分析和生物学实验设计的专业软件。它提供了强大的功能和直观的界面,帮助科学家和研究人员在分子生物学领域进行高效的实验规划和分析。下面将为您详细介绍SnapGene的特点和功能。点击获取SnapGenemac/win版 DNA序列编辑:SnapGene提供了易于......
  • [转]Linux下系统防火墙的发展历程和怎样学好防火墙(iptalbes和firewalld)
    原文地址:Linux下系统防火墙的发展历程和怎样学好防火墙(iptalbes和firewalld)-Repetition_Maximum-博客园有关firewalld和iptables详细使用的文章iptables详解firewalld详解=====================================华丽的分割线===================================== 1.......
  • 开启firewalld或iptables的日志记录
    文件名:ip_fire.sh内容:#!/bin/bash#iptablesiptables_run(){#修改日志文件grep-e"^kern.*"/etc/rsyslog.confflag_k=$?if[$flag_k-eq0]thenecho"rsyslog日志指定文件已存在"elsesed-i'/#kern.*......
  • golang用pgx查询数据时如何将查询结果方便的放入Map中
    pgx库简介下面是来自官网的简介:pgx-PostgreSQL驱动和工具包pgx是一个用于PostgreSQL的纯Go语言驱动和工具包。pgx驱动是一个底层的高性能接口,暴露了PostgreSQL特有的功能,如LISTEN/NOTIFY和COPY。它还包含一个标准database/sql接口的适配器。工具包组件是一组相关的包,实......