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

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 客户在一主一备性能压测中设置了归档日志清理上下限(12G-16G),但实际产生了100G+归档日志,导致磁盘空间满。原因是未设置ARCH_CLEAN_IGNORE_MODE=BACKUP,系统默认在备份后才清理日志。解决方法是设置ARCH_CLEAN_IGNORE_MODE=BACKUP,并执行`alter database delete archivelog all`触发清理。修改参数后,日志仍可能短暂超过上限,因备机同步延迟。经验总结:需同时设置归档上下限和ARCH_CLEAN_IGNORE_MODE=BACKUP以确保日志及时清理。

问题现象

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

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 ?/archive
ARCHIVE_DEST_1
ARCHIVE_DEST_2
ARCHIVE_DEST_3
ARCHIVE_DEST_4
ARCHIVE_DEST_5
ARCHIVE_DEST_6
ARCHIVE_DEST_7
ARCHIVE_DEST_8
ARCHIVE_DEST_9
ARCHIVE_DEST_10
ARCHIVE_DEST_11
ARCHIVE_DEST_12
ARCHIVE_DEST_13
ARCHIVE_DEST_14
ARCHIVE_DEST_15
ARCHIVE_DEST_16
ARCHIVE_DEST_17
ARCHIVE_DEST_18
ARCHIVE_DEST_19
ARCHIVE_DEST_20
ARCHIVE_DEST_21
ARCHIVE_DEST_22
ARCHIVE_DEST_23
ARCHIVE_DEST_24
ARCHIVE_DEST_25
ARCHIVE_DEST_26
ARCHIVE_DEST_27
ARCHIVE_DEST_28
ARCHIVE_DEST_29
ARCHIVE_DEST_30
ARCHIVE_DEST_31
ARCHIVE_DEST_32
ARCH_CLEAN_UPPER_THRESHOLD 16G
ARCH_CLEAN_LOWER_THRESHOLD 12G
ARCH_CLEAN_IGNORE_MODE NONE
ENABLE_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

相关实践学习
通过日志服务实现云资源OSS的安全审计
本实验介绍如何通过日志服务实现云资源OSS的安全审计。
相关文章
|
29天前
|
Ubuntu
在Ubuntu系统上设置syslog日志轮替与大小限制
请注意,在修改任何系统级别配置之前,请务必备份相应得原始档案并理解每项变更可能带来得影响。
102 2
|
7月前
|
SQL 存储 关系型数据库
【YashanDB知识库】共享从 MySQL异常处理CONTINUE HANDLER的改写方法
【YashanDB知识库】共享从 MySQL异常处理CONTINUE HANDLER的改写方法
|
6月前
|
SQL 测试技术 数据库
【YashanDB知识库】IMP跨网络导入慢问题
问题现象:290M数据,本地导入2分钟,跨机导入耗时显著增加(最高30分钟)。 原因分析:`imp`逐条SQL通过网络传输至yashanDB执行,交互频繁导致性能下降。 影响版本:客户测试环境22.2.8.3。 解决方法:将导入文件上传至与yashanDB同机后使用`imp`,减少网络延迟。 经验总结:优化`imp`工具,支持直接上传文件至服务器端执行,降低网络依赖。
|
6月前
|
监控 数据库
【YashanDB 知识库】ycm 托管数据库时报错 OM host ip:127.0.0.1 is not support join to YCM
在托管数据库时,若 OM 的 IP 被设置为 127.0.0.1,将导致无法托管至 YCM,并使数据库失去监控。此问题源于安装时修改了 OM 的监听 IP。解决方法包括:将 OM 的 IP 修改为本机实际 IP 或 0.0.0.0,同时更新 env 文件及 yasom 后台数据库中的相关配置。经验总结指出,应避免非必要的后台 IP 修改,且数据库安装需遵循规范,不使用仅限本机访问的 IP(如 127.0.0.1)。
|
6月前
|
监控 网络安全 数据库
YashanDB 知识库:ycm 纳管主机安装 YCM-AGENT 时报错 “任务提交失败,无法连接主机”
在安装 ycm-agent 纳管主机时,可能出现因端口未开放导致的报错问题。此问题会阻止 YCM 对主机和数据库的监控功能,影响版本为 `yashandb-cloud-manager-23.2.1.100-linux-aarch64.tar`。原因是目标主机(如 10.149.223.121)未开放 9070 或 9071 端口。解决方法包括关闭防火墙、添加白名单或开放指定端口,需与管理员确认操作。处理过程涉及网络检查、端口测试等步骤。端口问题解决后,若再次安装报唯一键错误,需先移除失败主机再重试。
|
6月前
|
监控 Java Shell
【YashanDB 知识库】ycm 托管数据库时,数据库非 OM 安装无法托管
本文主要介绍了因数据库未按规范使用 yasboot 安装导致的问题及解决方法。问题表现为无 yasom 和 yasagent 进程,且目录结构缺失,致使 ycm 无法托管与监控。分析发现可能是数据库版本旧或安装不规范引起。解决方法为先生成配置文件,安装 yasom 和 yasagent,再生成并修改托管配置模板,最终通过命令完成托管至 yasom 和 ycm。总结强调了按规范安装数据库的重要性以避免类似问题。
|
6月前
|
数据库 文件存储 数据安全/隐私保护
YashanDB redo日志文件管理
YashanDB的redo日志文件用于记录数据库物理日志,支持宕机重演和主备复制。 redo日志有4种状态:NEW(新创建)、CURRENT(当前写入)、ACTIVE(未归档或未写盘)和INACTIVE(可复用)。可通过V$LOGFILE视图或直接查看$YASDB_DATA/dbfiles目录来管理redo日志。此外,支持添加、切换和删除redo日志以优化性能或应对磁盘故障等情况,但需注意仅能删除INACTIVE或NEW状态的日志以确保数据安全。
|
7月前
|
SQL 关系型数据库 MySQL
【YashanDB知识库】MySQL field 函数的改写方法
【YashanDB知识库】MySQL field 函数的改写方法
|
7月前
|
数据库
【YashanDB知识库】服务器重启后启动yasom和yasagent进程时有告警
【YashanDB知识库】服务器重启后启动yasom和yasagent进程时有告警
|
7月前
|
SQL Oracle 关系型数据库
【YashanDB知识库】共享利用Python脚本解决Oracle的SQL脚本@@用法
【YashanDB知识库】共享利用Python脚本解决Oracle的SQL脚本@@用法

热门文章

最新文章