写点什么

YashanDB redo 日志文件管理

作者:YashanDB
  • 2025-03-14
    广东
  • 本文字数:1632 字

    阅读完需:约 5 分钟

本文内容来自 YashanDB 官网,原文内容请见 https://doc.yashandb.com/yashandb/23.3/zh/%E6%95%B0%E6%8D%AE%E5%BA%93%E7%AE%A1%E7%90%86/%E6%96%87%E4%BB%B6%E7%AE%A1%E7%90%86/redo%E6%97%A5%E5%BF%97%E6%96%87%E4%BB%B6%E7%AE%A1%E7%90%86.html


YashanDB 的 redo 日志文件用于记录数据库产生的物理日志,可被用于数据库宕机重演和主备复制。


redo 日志文件有如下 4 种状态:


  • NEW:表示新创建且未使用的 redo 日志文件。

  • CURRENT:表示当前正在写入的 redo 日志文件,当 current redo 日志文件写满,或者手动执行切换操作后,会将下一个可用的 redo 日志文件状态设置为 CURRENT,原 current redo 日志文件状态变为 ACTIVE。

  • ACTIVE:该状态下的 redo 日志文件包含的 redo 对应的页面存在未写入磁盘的情况,或者该 redo 日志文件没有被归档,不可复用。ACTIVE 状态的 redo 日志文件,在执行 checkpoint 并等待归档完成(如果已开启归档模式)后会变成 INACTIVE 状态。

  • INACTIVE:该状态下的 redo 日志文件包含的 redo 对应的页面都已经写入磁盘,可复用。


Note

redo 日志文件切换时,会将处于 INACTIVE 或 NEW 状态的 redo 日志文件作为下一个文件,如不存在 INACTIVE 或 NEW 状态的 redo 日志文件则会触发 checkpoint。

查看 redo 日志文件



Note

本文以单机部署为例,不同部署形态的查看方法相同但 $YASDB_DATA 路径不同,具体请以实际为准。


方式一


通过 V$LOGFILE 视图查看 redo 日志的信息,包括它的组号、路径、成员、块大小、已用大小与状态等信息。


示例


SELECT thread
THREAD


1 0 /data/yashan/yasdb_data/db-1-1/dbfiles/redo0 4096 25600 2961 1 INACTIVE 1 1 /data/yashan/yasdb_data/db-1-1/dbfiles/redo1 4096 25600 840 2 CURRENT 1 2 /data/yashan/yasdb_data/db-1-1/dbfiles/redo2 4096 25600 0 0 INACTIVE 1 3 /data/yashan/yasdb_data/db-1-1/dbfiles/redo3 4096 25600 0 0 INACTIVE
复制代码


方式二


直接进入到 $YASDB_DATA/dbfiles 目录查看。


$ cd /data/yashan/yasdb_data/db-1-1/dbfiles$ ls -lrt redo*-rw-r----- 1 yashan yashan 104857600 Jun 16 09:49 redo2-rw-r----- 1 yashan yashan 104857600 Jun 16 09:49 redo3-rw-r----- 1 yashan yashan 104857600 Jun 17 11:45 redo0-rw-r----- 1 yashan yashan 104857600 Jun 18 15:15 redo1
复制代码


维护 redo 日志文件


# 添加 redo 日志

YashanDB 中添加 redo 日志主要是用于提高数据库性能,具体见数据库配置调优章节描述。


可通过 ALTER DATABASE 语句添加 redo 日志。


示例


ALTER DATABASE ADD LOGFILE ('redo6a' size 200M,'redo6b' size 200M);
ALTER DATABASE ADD LOGFILE ('redo7a' size 200M BLOCKSIZE 512,'redo7b' size 200M BLOCKSIZE 512);
复制代码


Note

  • 添加 redo 日志时,属性 size 需放在 BLOCKSIZE 前才能正常添加,默认块大小为 4096Byte,这与磁盘类型有关系,有些磁盘并不支持 512Byte 的块大小,只能设为 4096Byte。

  • YashanDB 无法直接扩展 redo 日志的大小,需通过添加新的大 redo 日志并将原有的小 redo 日志删除的方式实现。

# 切换 redo 日志

可通过 ALTER SYSTEM 语句手动切换 redo 日志。


示例



ALTER SYSTEM SWITCH LOGFILE;

ALTER SYSTEM ARCHIVE LOG CURRENT;
复制代码


# 删除 redo 日志

如发生下述情况,可通过 ALTER DATABASE 语句删除 redo 日志:


  • 磁盘发生故障时,可通过删除故障磁盘上 redo 日志文件避免写入不可访问的文件。

  • redo 日志文件存储在不恰当的位置。

  • 通过增加更大的 redo 文件,删除原有的 redo,从而实现 redo 文件扩展。


Caution

为了保证数据库正常运行以及数据安全,仅允许直接删除 INACTIVE 或 NEW 状态的 redo 日志。

如需删除 CURRENT 状态的 redo 日志,操作如下:

  1. 切换 redo 日志,使其变为 ACTIVE 状态。

  2. 执行 checkpoint 并等待归档完成(如果已开启归档模式),使其变为 INACTIVE 状态。

  3. 执行删除操作。



ALTER SYSTEM CHECKPOINT;

ALTER DATABASE DROP LOGFILE '/data/yashan/yasdb_data/db-1-1/dbfiles/redo5a';
复制代码


发布于: 刚刚阅读数: 4
用户头像

YashanDB

关注

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

还未添加个人简介

评论

发布
暂无评论
YashanDB redo日志文件管理_数据库_YashanDB_InfoQ写作社区