写点什么

【YashanDB 知识库】设置归档日志上限,但归档日志没自动清理,导致磁盘空间满

作者:YashanDB
  • 2024-07-30
    广东
  • 本文字数:1387 字

    阅读完需:约 5 分钟

问题现象

客户使用一主一备做性能压测,主备机上设置了归档日志清理上下限:


ARCH_CLEAN_LOWER_THRESHOLD=12G


ARCH_CLEAN_UPPER_THRESHOLD=16G


但实际压测的过程,预期归档日志不应该超过 16G,但还是产生了 100G+的归档日志,占用了较多存储空间,最终磁盘空间满,客户怀疑归档清理策略没起效。

问题的风险及影响

客户环境为测试环境,影响测试业务的开展。

问题影响的版本

YashanDB 版本:23.1.3.101

问题发生原因

归档日志在备份之前不会自动清理,设置归档上下限的同时,还需要设置归档日志清理忽略备份:


ARCH_CLEAN_IGNORE_MODE=BACKUP

解决方法及规避方式

设置 ARCH_CLEAN_IGNORE_MODE=BACKUP,使用 alter database delete archivelog all 触发清理归档:


SQL> alter system set ARCH_CLEAN_IGNORE_MODE=BACKUP;Succeed.SQL> alter system set ARCH_CLEAN_LOWER_THRESHOLD=12G;Succeed.SQL> alter system set ARCH_CLEAN_UPPER_THRESHOLD=16G;Succeed.SQL> alter database delete archivelog all;Succeed.
复制代码

问题分析和处理过程

确认归档参数情况


SQL> show parameter ARCH NAME VALUE---------------------------------------------------------------- ----------------------------------------------------------------ARCHIVE_LOCAL_DEST ?/archiveARCHIVE_DEST_1ARCHIVE_DEST_2ARCHIVE_DEST_3ARCHIVE_DEST_4ARCHIVE_DEST_5ARCHIVE_DEST_6ARCHIVE_DEST_7ARCHIVE_DEST_8ARCHIVE_DEST_9ARCHIVE_DEST_10ARCHIVE_DEST_11ARCHIVE_DEST_12ARCHIVE_DEST_13ARCHIVE_DEST_14ARCHIVE_DEST_15ARCHIVE_DEST_16ARCHIVE_DEST_17ARCHIVE_DEST_18ARCHIVE_DEST_19ARCHIVE_DEST_20ARCHIVE_DEST_21ARCHIVE_DEST_22ARCHIVE_DEST_23ARCHIVE_DEST_24ARCHIVE_DEST_25ARCHIVE_DEST_26ARCHIVE_DEST_27ARCHIVE_DEST_28ARCHIVE_DEST_29ARCHIVE_DEST_30ARCHIVE_DEST_31ARCHIVE_DEST_32ARCH_CLEAN_UPPER_THRESHOLD 16GARCH_CLEAN_LOWER_THRESHOLD 12GARCH_CLEAN_IGNORE_MODE NONEENABLE_ARCH_DATA_IGNORE_BACKUP FALSE 37 rows fetched. SQL>
复制代码


发现设置归档上下限但没有设置归档日志清理忽略备份。


YashanDB 归档日志除了发送到备机之外,还可以使用 backup 命令做备份,详细参考YashanDB Doc


系统从安全的角度考虑,需要把日志备份之后,才允许删除,除非用户指定该场景下可以忽略备份。详细参考YashanDB Doc


客户的场景是需要主备同步,但是不需要备份拷贝,因此修改参数为 ARCH_CLEAN_IGNORE_MODE=BACKUP


修改参数并验证


修改参数为 ARCH_CLEAN_IGNORE_MODE=BACKUP 可以使用 alter database delete archivelog all; 检查日志是否清理掉,从而验证日志清理策略符合预期:


SQL> alter system set ARCH_CLEAN_IGNORE_MODE=BACKUP;Succeed.SQL> alter database delete archivelog all;Succeed.
复制代码


那么问题来了:是不是客户设置 ARCH_CLEAN_IGNORE_MODE=BACKUP 之后,日志就一定不会超过 ARCH_CLEAN_UPPER_THRESHOLD 呢?


答案是还是有可能超过。上面配置 ARCH_CLEAN_IGNORE_MODE=BACKUP 是忽略备份,所以还需要同步到备机之后,归档日志才能删除。客户的场景是一主一备做压测,备机同步日志较多,实际会有短暂备机没有同步完,导致归档日志超过上限一些的情况。

经验总结

归档日志在备份之前不会自动清理,设置归档上下限的同时,还需要设置归档日志清理忽略备份:ARCH_CLEAN_IGNORE_MODE=BACKUP

用户头像

YashanDB

关注

全自研国产新型大数据管理系统 2022-02-15 加入

还未添加个人简介

评论

发布
暂无评论
【YashanDB知识库】设置归档日志上限,但归档日志没自动清理,导致磁盘空间满_yashandb_YashanDB_InfoQ写作社区