YashanDB归档管理

本文内容来自YashanDB官网,原文内容请见 doc.yashandb.com/yashandb/23...

YashanDB通过开启归档模式来进行redo日志文件自动归档,用以支持生产环境中的数据热备份以及高可用主备部署场景的主备同步。当故障发生时,可以通过历史全量数据数据备份以及归档的redo日志文件重做完成数据库重建。

V$DATABASE视图中的log_mode字段表示数据库当前的归档模式配置,字段值为ARCHIVELOG表示为归档模式,NOARCHIVELOG表示非归档模式。

示例

sql 复制代码
SELECT database_name,log_mode,open_mode FROM V$DATABASE;
 
DATABASE_NAME      LOG_MODE          OPEN_MODE  

yasdb              ARCHIVELOG        READ_WRITE 

Copied!

配置归档路径


数据库默认的归档路径为$YASDB_DATA/archive,该值由ARCHIVE_LOCAL_DEST参数控制,进入到数据库可以查看并修改归档文件存放路径。

1.查看归档路径:

sql 复制代码
show parameter ARCHIVE_LOCAL_DEST;
 
NAME                     VALUE        

ARCHIVE_LOCAL_DEST       ?/archive      

Copied!

2.修改归档路径:

通过SQL语句修改归档路径,重启数据库后生效。

sql 复制代码
ALTER SYSTEM SET ARCHIVE_LOCAL_DEST='/home/yashan' scope=spfile;

Copied!

3.查看配置是否生效:

sql 复制代码
show parameter ARCHIVE_LOCAL_DEST;
 
NAME                    VALUE         

ARCHIVE_LOCAL_DEST      /home/yashan  

Copied!

归档模式切换


Caution

归档模式切换需要关闭数据库并启动到MOUNT状态下操作,请在无业务运行时参考下列步骤完成切换。

1.关闭数据库:

ini 复制代码
SHUTDOWN IMMEDIATE; 
exit;

Copied!

2.重启数据库:

shell 复制代码
$ yasboot cluster restart -c yashandb -m mount 
$ yasql username/password

Copied!

3.调整到归档模式:

ini 复制代码
ALTER DATABASE ARCHIVELOG;

ALTER DATABASE NOARCHIVELOG;

Copied!

4.归档模式查看:

sql 复制代码
SELECT database_name,log_mode,open_mode FROM V$DATABASE;
 
DATABASE_NAME    LOG_MODE          OPEN_MODE   

yasdb            ARCHIVELOG        READ_WRITE  

Copied!

5.打开数据库:

sql 复制代码
ALTER DATABASE OPEN;

Copied!

在线日志切换


当前正在写入的redo日志文件写满时,数据库会自动切换至下一可用redo日志文件,用户也可根据自身需求选择手动切换:

  • 强制切换当前正在写入的redo日志
  • 对当前正在写入的redo日志进行归档,同时切换至下一可用redo日志文件(数据库须处于归档模式)

示例

sql 复制代码
ALTER SYSTEM SWITCH LOGFILE;
 

ALTER SYSTEM ARCHIVE LOG CURRENT;

Copied!

归档日志查看


可以通过V$ARCHIVED_LOG视图查看归档日志的信息,如归档日志的序列号、归档日志名和归档时间等。

示例

sql 复制代码
SELECT * FROM V$ARCHIVED_LOG;

Copied!

归档日志清理


归档空间有限的情况下,需要根据保留策略对归档日志进行清理。默认安装下,在线日志的大小为128M,则归档日志最大可为128M。

清理归档的原则:归档日志不被数据库回放需要,即小于数据库的回放点,这样的归档才可以被清理。可以从V$DATABASE视图的RCY_POINT获取数据库的当前回放点。

# 自动清理归档

YashanDB具有自动清理归档日志的功能,清理策略由以下三个系统配置参数决定:

  • ARCH_CLEAN_IGNORE_MODE:指定清理归档文件时的忽略模式,包括如下值(默认为NONE):

    • NONE:表示清理归档文件时不忽略备份和备库。
    • BACKUP:表示清理归档时忽略备份,此设置可能导致数据库无法恢复至任意时间点 。
    • STANDBY:表示清理归档时忽略备库,此设置可能导致备库跟不上主库,出现need repair状态,单机部署中默认忽略备库。
    • BOTH:表示清理归档时忽略备份和备库,此设置可能导致如上所述的两种问题均会出现。
    • 其中:
      • 忽略备份指的是无论该归档文件是否已经备份,均会被清理。
      • 忽略备库指的是无论该归档文件是否已经被所有备库获取,均会被清理。

Caution

  • YashanDB支持通过指定时间点的方式对数据库进行恢复。若在备份集后生成的归档日志和在线日志连续且完整,可通过指定时间点使数据库继续恢复至任意时间点;若备份集之后的归档日志被清理,则数据库无法继续恢复至任意时间点。
  • 高可用运行过程中,备库需要通过获取主库的归档日志对主库进行同步,如清理的归档文件还未被备库所获取,会导致备库无法正常同步主库。
  • ARCH_CLEAN_UPPER_THRESHOLD:指定归档清理触发的阈值,归档日志总大小超出这个值时进行归档清理,如果该值为0表示关闭自动清理。
  • ARCH_CLEAN_LOWER_THRESHOLD:指定归档空间保持的最小值,触发一次自动清理归档后,保留归档日志总大小的最小值。

上述配置参数可以通过ALTER SYSTEM命令进行在线修改。ARCH_CLEAN_IGNORE_MODE参数同时也控制手动清理归档的策略。

# 手动清理归档

手动清理归档日志的清理条件由ARCH_CLEAN_IGNORE_MODE参数决定,具体如上所述,执行手动清理归档前先通过配置ARCH_CLEAN_IGNORE_MODE参数指定合适的忽略模式。

手动清理归档日志需要进入到数据库执行ALTER DATABASE语句,语法如下:

sql 复制代码
ALTER DATABASE DELETE ARCHIVELOG (ALL|UNTIL ((SEQUENCE INTEGER [THREAD INTEGER])|TIME DATE|SCN INTEGER))[FORCE]

Copied!

关键字描述同ALTER DATABASE

示例(单机、共享集群部署)

sql 复制代码
ALTER DATABASE DELETE ARCHIVELOG ALL;

ALTER DATABASE DELETE ARCHIVELOG UNTIL TIME TO_DATE('2022-01-06 11:30:00', 'yyyy-mm-dd hh24:mi:ss');

ALTER DATABASE DELETE ARCHIVELOG UNTIL SEQUENCE 71;

ALTER DATABASE DELETE ARCHIVELOG ALL FORCE;

Copied!

相关推荐
夏炎正好眠1 小时前
mysql练习
数据库·mysql
NineData1 小时前
NineData 社区版正式上线,支持一键本地化部署!
数据库·程序员
大0马浓1 小时前
LLM训练如何从图片提取信息存入向量数据库
数据库·训练·rag
鱼骨不是鱼翅1 小时前
Mybatis操作数据库----小白基础入门
数据库·mybatis
已是上好佳2 小时前
介绍一下Qt 中的QSizePolicy 布局策略
数据库·qt
钡铼技术物联网关2 小时前
导轨式ARM工业控制器:组态软件平台的“神经中枢”
linux·数据库·人工智能·安全·智慧城市
驜鸈3 小时前
MySQL 的EXPLAIN 计划 type 字段详细说明
android·数据库·mysql
XiYang-DING3 小时前
【数据库系统概论】第一章 绪论
数据库·oracle
码上飞扬3 小时前
Oracle RAC配置原理详解:构建高可用与高性能的数据库集群
数据库·oracle·rac
小刘爱喇石( ˝ᗢ̈˝ )3 小时前
行式数据库与列式数据库区别
数据库·分布式