YashanDB redo日志文件管理

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: YashanDB的redo日志文件用于记录数据库物理日志,支持宕机重演和主备复制。 redo日志有4种状态:NEW(新创建)、CURRENT(当前写入)、ACTIVE(未归档或未写盘)和INACTIVE(可复用)。可通过V$LOGFILE视图或直接查看$YASDB_DATA/dbfiles目录来管理redo日志。此外,支持添加、切换和删除redo日志以优化性能或应对磁盘故障等情况,但需注意仅能删除INACTIVE或NEW状态的日志以确保数据安全。

本文内容来自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

Copied!

方式二

直接进入到$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

Copied!

维护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);

Copied!

Note

  • 添加redo日志时,属性size需放在BLOCKSIZE前才能正常添加,默认块大小为4096Byte,这与磁盘类型有关系,有些磁盘并不支持512Byte的块大小,只能设为4096Byte。
  • YashanDB无法直接扩展redo日志的大小,需通过添加新的大redo日志并将原有的小redo日志删除的方式实现。

# 切换redo日志

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

示例


ALTER SYSTEM SWITCH LOGFILE;


ALTER SYSTEM ARCHIVE LOG CURRENT;

Copied!

# 删除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';

Copied!

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
2月前
|
存储 缓存 监控
【YashanDB数据库】数据库运行正常,日志出现大量错误metadata changed
数据库运行正常,日志出现大量错误metadata changed
|
3月前
|
存储 SQL 关系型数据库
MySQL日志详解——日志分类、二进制日志bin log、回滚日志undo log、重做日志redo log
MySQL日志详解——日志分类、二进制日志bin log、回滚日志undo log、重做日志redo log、原理、写入过程;binlog与redolog区别、update语句的执行流程、两阶段提交、主从复制、三种日志的使用场景;查询日志、慢查询日志、错误日志等其他几类日志
235 35
MySQL日志详解——日志分类、二进制日志bin log、回滚日志undo log、重做日志redo log
|
2月前
|
存储 SQL 关系型数据库
mysql的undo log、redo log、bin log、buffer pool
MySQL的undo log、redo log、bin log和buffer pool是确保数据库高效、安全和可靠运行的关键组件。理解这些组件的工作原理和作用,对于优化数据库性能和保障数据安全具有重要意义。通过适当的配置和优化,可以显著提升MySQL的运行效率和数据可靠性。
63 16
|
2月前
|
SQL 缓存
【YashanDB知识库】YashanDB run.log中有slow log queue is full信息
【YashanDB知识库】YashanDB run.log中有slow log queue is full信息
|
3月前
|
存储 缓存 关系型数据库
图解MySQL【日志】——Redo Log
Redo Log(重做日志)是数据库中用于记录数据页修改的物理日志,确保事务的持久性和一致性。其主要作用包括崩溃恢复、提高性能和保证事务一致性。Redo Log 通过先写日志的方式,在内存中缓存修改操作,并在适当时候刷入磁盘,减少随机写入带来的性能损耗。WAL(Write-Ahead Logging)技术的核心思想是先将修改操作记录到日志文件中,再择机写入磁盘,从而实现高效且安全的数据持久化。Redo Log 的持久化过程涉及 Redo Log Buffer 和不同刷盘时机的控制参数(如 `innodb_flush_log_at_trx_commit`),以平衡性能与数据安全性。
104 5
图解MySQL【日志】——Redo Log
|
1月前
|
存储 数据库
YashanDB归档日志文件管理
本文介绍了YashanDB中归档日志文件的管理,包括默认存储路径($YASDB_DATA/archive)和文件命名规则。单机部署格式为arch_{resetlogs_id}_{sequence}.ARC,共享集群新增instanceId字段,格式为arch{instanceId}_{resetlogs_id}_{sequence}.ARC。1号节点与单机格式一致。可通过V$ARCHIVED_LOG视图查询相关信息,文件的增删由归档管理操作控制,详情参见官方文档。
|
2月前
|
数据库连接 测试技术 Windows
【YashanDB知识库】windows配置ODBC跟踪日志, 使用日志定位问题
【YashanDB知识库】windows配置ODBC跟踪日志, 使用日志定位问题
|
2月前
|
存储 SQL 关系型数据库
mysql的undo log、redo log、bin log、buffer pool
MySQL的undo log、redo log、bin log和buffer pool是确保数据库高效、安全和可靠运行的关键组件。理解这些组件的工作原理和作用,对于优化数据库性能和保障数据安全具有重要意义。通过适当的配置和优化,可以显著提升MySQL的运行效率和数据可靠性。
49 4
|
2月前
|
安全 测试技术
【YashanDB知识库】设置归档日志上限,但归档日志没自动清理,导致磁盘空间满
客户在一主一备性能压测中设置了归档日志清理上下限(12G-16G),但实际产生了100G+归档日志,导致磁盘空间满。原因是未设置ARCH_CLEAN_IGNORE_MODE=BACKUP,系统默认在备份后才清理日志。解决方法是设置ARCH_CLEAN_IGNORE_MODE=BACKUP,并执行`alter database delete archivelog all`触发清理。修改参数后,日志仍可能短暂超过上限,因备机同步延迟。经验总结:需同时设置归档上下限和ARCH_CLEAN_IGNORE_MODE=BACKUP以确保日志及时清理。
|
2月前
|
SQL druid Oracle
【YashanDB知识库】yasdb jdbc驱动集成druid连接池,业务(java)日志中有token IDENTIFIER start异常
客户Java日志中出现异常,影响Druid的merge SQL功能(将SQL字面量替换为绑定变量以统计性能),但不影响正常业务流程。原因是Druid在merge SQL时传入null作为dbType,导致无法解析递归查询中的`start`关键字。

热门文章

最新文章

OSZAR »