首页 > 其他分享 >KingbaseES 避免wal日志占用大量磁盘空间

KingbaseES 避免wal日志占用大量磁盘空间

时间:2024-03-29 18:46:25浏览次数:12  
标签:wal 磁盘空间 参数 检查点 归档 日志 KingbaseES

背景

wal日志一直增长很快,查看归档目录也在执行归档,归档无异常,是归档执行太慢的原因吗?还是wal 日志生成的太快了的原因呢?现场环境wal日志的磁盘空间比较小。

分析

首先我们分析可否加速归档速度呢,因为如果能加快归档速度就可以缓解wal日志所在磁盘空间紧张的问题,答案是不可以。archive_command指定外部shell命令来进行归档,判定归档是否正常的方法,ps -ef 查看archiver 归档进程,查看archive_status目录下是否存在.ready的待归档wal文件,如果没有,只查看到.done结尾的文件,代表归档正常。我们没有办法通过增加归档进程或其他方式加快归档的速度。

那么,接下来,我们只能通过减少wal日志单位时间内的生成量或扩充磁盘空间来解决wal日志增长过快导致的磁盘空间紧张的问题。

wal日志保留数量和以下参数有关:
1、wal_keep_segments
2、max_wal_size
3、checkpoint的频度
4、复制槽

max_wal_size这个参数的意义是,当wal日志增长到这个参数的设定值就会触发检查点,也就意味着wal日志只能增长到这个参数设定值。但是,这个参数是个软限制,有些场景可能会超过这个参数的设定值,例如archive_command命令失败,或wal_keep_segments设置过大,或业务系统非常繁忙,单位时间内激增wal日志。当发生检查点时,对应脏块已经写入到磁盘,意味着检查点之前的wal日志不再需要,但并不意味着这些wal日志马上被清理,这需要一定的清理时间,这在数据库内部有判断机制。

wal_keep_segments 可以保留一定的wal日志,保证流复制过程中,如果standby节点失败后的,重新建立时,保证有一定的日志恢复standby节点。

wal日志和检查点:

检查点的作用是将数据库缓冲区中的脏页持久化到磁盘,也就是刷脏页。检查点函数会检测两次 checkpoint 的间隔(默认300毫秒)、或客户端请求 checkpoint 命令操作时执行检查点,
当发生检查点时,大体流程将内存中的 page 脏数据进行持久化、同时将当前执行 checkPoint 点对应 xlog 记录 lsn 保存到控制文件中。这里实现了下面几个重要功能:
1、脏页刷入。
2、删除或回收旧WAL:创建检查点后此位置之前的WAL不再需要,可以删除。
3、设置实例恢复起点。
4、更新控制文件中检查点信息,记录本次 CheckPoint 信息,以便实例崩溃恢复时做判断。

总结

以上分析的第二步,检查点的生成确实对删除wal日志有帮助,可实际并非如此,每次检查点后都会进行全页写,检查点后,第一次修改的数据库进行全页写。而全页写占用的wal日志量是非全页写的3倍左右。所以checkpoint_timeout参数需要根据实际业务场景酌情设置,不能设置太频繁,一般建议设置20-60min。在保证复制槽正常使用状态下,我们可以降低wal_keep_segments,max_wal_size参数设置以降低wal日志的占用的磁盘空间。Kingbase数据库没有办法对wal日志目录做大小硬限制,所以建议结合业务系统实际情况设置以上参数,保证wal日志所在磁盘空间充足。最后,无论wal日志还是归档所在目录的磁盘,需保证IO性能良好。

标签:wal,磁盘空间,参数,检查点,归档,日志,KingbaseES
From: https://www.cnblogs.com/kingbase/p/17921548.html

相关文章

  • KingbaseES 普通用户逻辑导入时权限不足错误
    逻辑导入时权限报错:ERROR:mustbememberofrole"system"实验:1、在超级用户system下新建用户与schema:createuseruser1;createschemas1;修改user1的默认权限:test=#alterdefaultprivilegesinschemas1grantallontablestouser1;ALTERDEFAULTPRIVILEGESt......
  • KingbaseES V8R3集群运维案例之---集群启动“DATA_SIZE_DIFF 16 (MB)”故障
    案例说明:为保证集群数据的一致性安全,在主备库的数据相差“DATA_SIZE_DIFF>=16M"以上时,该备库不能参与主备切换,并且通过kingbase_monitor.sh启动集群时,集群将无法启动;本案例对此种故障做了复现,并测试了解决方法。适用版本:KingbaseESV8R3适用版本:KingbaseESV8R3一、案例......
  • KingbaseES V8R3备份恢复案例之---backup_label does not exist in KINGBASE_DATA
    案例说明:在KingbaseESV8R3集群主库执行sys_rman的全备时,出现‘backup_labeldoesnotexistinKINGBASE_DATA’的故障,如下图所示:适用版本:KingbaseESV8R3一、问题现象如下所示,数据库执行sys_rman物理备份:[kingbase@node201bin]$./sys_rman-Usystem-W123456-dtes......
  • KingbaseES集群运维案例之-- V8R3与V8R6集群wal函数应用
    案例说明:KingbaseESV8R3和V8R6集群在通过函数获取wal日志的相关信息时,两个版本的函数名称不同,本案例做了函数应用的对比和总结。适用版本:KingbaseESV8R3/R6一、KingbaseESV8R3相关函数Tips:在V8R3的版本,事务日志名称为xlog。1、查询数据库支持的函数test=#selectpron......
  • kingbaseES V8R6集群运维案例之---配置priority防止failover切换案例
    案例说明:在一主多备的架构中,需要配置一台备库在主备切换时,不能选举为主库。对于repmgr主备切换主库的选择算法如下:Tips:Repmgr选举候选备节点会以以下顺序选举:LSN---->Priority---->Node_ID。系统会先选举一个LSN比较大者作为候选备节点;如LSN一样,会根据Priority优先级进行比......
  • KingbaseES V8R6集群运维案例之---级联备库upstream节点故障
    KingbaseESV8R6集群运维案例之---级联备库upstream节点故障案例说明:在KingbaseESV8R6集群,构建级联备库后,在其upstream的节点故障后,级联备库如何处理?适用版本:KingbaseESV8R6集群架构:案例一:一、配置集群的recovery参数(allnodes)Tips:关闭备库的aut-recovery机制......
  • skywalking 服务搭建
    1、下载skywalking服务https://archive.apache.org/dist/skywalking/9.3.0/apache-skywalking-apm-9.3.0.tar.gz1.1、解压tar-zxvfapache-skywalking-apm-9.3.0.tar.gz1.2、启动服务shbin/start.sh2、下载skywalking-agent服务https://archive.apache.org/dist/skywa......
  • 启动应用程序出现FirewallAPI.dll找不到问题解决
    其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库,这时你可以下载这个FirewallAPI.dll文件(挑选合适的版本文件)把......
  • Linux系统通过firewall限制或开放IP及端口
    一、查看防火墙状态1、首先查看防火墙是否开启,如未开启,需要先开启防火墙并作开机自启systemctlstatusfirewalld开启防火墙并设置开机自启systemctlstartfirewalldsystemctlenablefirewalld一般需要重启一下机器,不然后面做的设置可能不会生效二、开放或限制端口1、开放端......
  • KingbaseES生成动态SQL
    1.动态SQL动态SQL在程序启动时会根据输入参数替换相应变量。使用动态SQL可以创建更强大和灵活的应用程序,但在编译时SQL语句的全文不确定,因此运行时编译会牺牲一些性能。动态SQL可以是代码或SQL语句的一部分,动态部分要么由开发人员输入,要么由程序本身创建。1.1动态SQL使用场景......