YashanDB通过开启归档模式来进行redo日志文件自动归档,用以支持生产环境中的数据热备份以及高可用主备部署场景的主备同步。当故障发生时,可以通过历史全量数据数据备份以及归档的redo日志文件重做完成数据库重建。
V$DATABASE视图中的log_mode字段表示数据库当前的归档模式配置,字段值为ARCHIVELOG表示为归档模式,NOARCHIVELOG表示非归档模式。
示例
SELECT database_name,log_mode,open_mode FROM V$DATABASE;
DATABASE_NAME LOG_MODE OPEN_MODE
------------------ ----------------- ------------
yasdb ARCHIVELOG READ_WRITE
数据库默认的归档路径为$YASDB_DATA/archive,该值由ARCHIVE_LOCAL_DEST参数控制,进入到数据库可以查看并修改归档文件存放路径。
1.查看归档路径:
show parameter ARCHIVE_LOCAL_DEST;
NAME VALUE
------------------------ --------------
ARCHIVE_LOCAL_DEST ?/archive
2.修改归档路径:
通过SQL语句修改归档路径,重启数据库后生效。
ALTER SYSTEM SET ARCHIVE_LOCAL_DEST='/home/yashan' scope=spfile;
Copied!
3.查看配置是否生效:
show parameter ARCHIVE_LOCAL_DEST;
NAME VALUE
----------------------- ---------------
ARCHIVE_LOCAL_DEST /home/yashan
Caution: 归档模式切换需要关闭数据库并启动到MOUNT状态下操作,请在无业务运行时参考下列步骤完成切换。
1.关闭数据库:
-- 关闭数据库实例
SHUTDOWN IMMEDIATE;
exit;
2.重启数据库:
$ yasboot cluster restart -c yashandb -m mount
$ yasql username/password
3.调整到归档模式:
-- 从非归档模式调整到归档模式
ALTER DATABASE ARCHIVELOG;
-- 从归档模式调整到非归档模式,当数据库处于主备复制模式(单机主备部署、主备共享集群部署)时,无法从归档模式切换为非归档模式
ALTER DATABASE NOARCHIVELOG;
4.归档模式查看:
-- 查看当前数据库的归档模式
SELECT database_name,log_mode,open_mode FROM V$DATABASE;
DATABASE_NAME LOG_MODE OPEN_MODE
---------------- ----------------- -------------
yasdb ARCHIVELOG READ_WRITE
5.打开数据库:
-- 调整归档模式后打开数据库
ALTER DATABASE OPEN;
当前正在写入的redo日志文件写满时,数据库会自动切换至下一可用redo日志文件,用户也可根据自身需求选择手动切换:
示例
-- 强制切换
ALTER SYSTEM SWITCH LOGFILE;
--归档并进行切换(须处于归档模式否则返回错误)
ALTER SYSTEM ARCHIVE LOG CURRENT;
可以通过V$ARCHIVED_LOG视图查看归档日志的信息,如归档日志的序列号、归档日志名和归档时间等。
示例
SELECT * FROM V$ARCHIVED_LOG;
归档空间有限的情况下,需要根据保留策略对归档日志进行清理。默认安装下,在线日志的大小为128M,则归档日志最大可为128M。
清理归档的原则:归档日志不被数据库回放需要,即小于数据库的回放点,这样的归档才可以被清理。可以从V$DATABASE视图的RCY_POINT获取数据库的当前回放点。
YashanDB具有自动清理归档日志的功能,清理策略由以下三个系统配置参数决定:
Caution:
上述配置参数可以通过ALTER SYSTEM命令进行在线修改。ARCH_CLEAN_IGNORE_MODE参数同时也控制手动清理归档的策略。
手动清理归档日志的清理条件由ARCH_CLEAN_IGNORE_MODE参数决定,具体如上所述,执行手动清理归档前先通过配置ARCH_CLEAN_IGNORE_MODE参数指定合适的忽略模式。
手动清理归档日志需要进入到数据库执行ALTER DATABASE语句,语法如下:
ALTER DATABASE DELETE ARCHIVELOG (ALL|UNTIL ((SEQUENCE INTEGER [THREAD INTEGER])|TIME DATE|SCN INTEGER))[FORCE]
关键字描述同ALTER DATABASE。
示例(单机、共享集群部署)
-- 删除所有归档日志
ALTER DATABASE DELETE ARCHIVELOG ALL;
-- 删除包括2022-01-06 11:30:00之前的归档日志
ALTER DATABASE DELETE ARCHIVELOG UNTIL TIME TO_DATE('2022-01-06 11:30:00', 'yyyy-mm-dd hh24:mi:ss');
-- 删除序列号包括71号之前的归档日志
ALTER DATABASE DELETE ARCHIVELOG UNTIL SEQUENCE 71;
-- 强制归档清理
ALTER DATABASE DELETE ARCHIVELOG ALL FORCE;
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。