达梦数据库归档清理

DM数据库可以在归档和非归档两种模式下运行,如果是归档模式,联机日志文件中的内容保存到硬盘中,形成归档日志文件;如果是非归档模式,则不会形成归档日志。归档模式的具体配置参数参考《DM8数据守护与读写分离集群手册》5.3章节dmarch.ini。

DM支持多种归档方式。采用归档模式会对系统的性能产生些许影响,然而系统在归档模式下运行会更安全,当出现故障时其丢失数据的可能性更小。这是因为一旦出现介质故障,如磁盘损坏时,利用归档日志,系统可被恢复至故障发生的前一刻,也可以还原到指定的时间点。而如果没有归档日志文件,则只能利用备份进行恢复。

通过dm.ini和dmarch.ini可以配置本地归档。dmarch.ini生效的前提是dm.ini中的参数ARCH_INI置为1。DM的 dmarch.ini可以进行本地归档和远程归档的设置,DM备份与还原过程中使用的日志均为本地归档日志。查询 v$dm_arch_ini、v$arch_status等动态视图可以获取归档配置以及归档状态等相关信息。因此,为了保证归档日志文件和数据文件不同时出现问题,建议将归档目录与数据文件配置、保存到不同的物理磁盘上。除了表备份还原,其他的联机备份与还原必须运行在归档模式下。DM数据库定义了多种归档方式,包括本地归档、实时归档、即时归档、异步归档和远程归档,其中本地归档和远程归档与备份还原密切相关。本次仅对单机环境下数据库归档日志清理进行尝试。

其中归档备份清理可通过几种方式进行:dmarch.ini参数进行清理、通过系统存储过程和函数去清理、DM自带工具进行清理、linux删除与第三方产品等。

一、准备

安装部署一套数据库,单机安装部署内容可参照DM社区文档,下附链接不做赘述。

单机安装部署 | 达梦技术文档

1.1 硬件环境:

硬件类别

数量

配置

数据库服务器

1

2CPU/4G内存/25G

1.2 软件环境:

软件类别

配置

操作系统

Redhat7.6

数据库

达梦数据库8.1.2.114

其他工具软件

xshell

1.3 数据库文件位置:

文件位置

所在路径

数据库位置

/home/dmdba/dmdbms/

二进制文件位置

/home/dmdba/dmdbms/bin/

实例位置

/data/DAMENG/

归档位置

/data/dmarch/

单机测试:开启归档单个归档限制128M并不限制归档空间(正式环境建议至少单个大小为512M,并限制归档空间)。

alter database mount;
alter database add archivelog 'dest=/data/dmarch,TYPE=local,FILE_SIZE=128';
alter database archivelog;
alter database open;

归档dmarch.ini参数如下:

归档状态如下:

任意生成归档日志,供测试:

二、通过参数进行清理

2.1 ARCH_SPACE_LIMIT

ARCH_SPACE_LIMIT:Redo日志归档空间限制,当同一节点的本地归档文件或远程归档文件达到限制值时,系统自动删除最早生成的归档日志文件。

0表示无空间限制,取值范围(1024M~2147483647M),对本地归档和远程归档有效,缺省为0。

可手动修改dmarch.ini中ARCH_SPACE_LIMIT参数,也可sql执行。

alter database modify archivelog 'DEST=/data/dmarch, TYPE=LOCAL, FILE_SIZE=128, SPACE_LIMIT=1024';

修改ARCH_RESERVE_TIME为1024,即日志归档空间限制上限为1024M。

然后执行切换归档文件的命令:

alter system switch logfile;

查看数据库日志

tail -100f home/dmdba/dmdbms/log/dm_DMSERVER_202205.log

对比/data/dmarch文件中归档文件,已完成清理。

2.2 ARCH_RESERVE_TIME

ARCH_RESERVE_TIME:归档日志保留时间,单位分钟,取值范围(0~4294967294)。只对远程归档和本地归档有效,服务器每隔5分钟检查是否存在超过保留时间的归档并删除。默认为0,表示不删除归档。

手动修改dmarch.ini中ARCH_RESERVE_TIME参数,更改为1440即归档保留24小时。

查看数据库日志

tail -100f home/dmdba/dmdbms/log/dm_DMSERVER_202205.log

对比/data/dmarch文件中归档文件,已完成清理。

三、通过系统存储过程和函数进行清理

DM 提供了按指定的时间或指定的 LSN 删除归档日志的系统函数,分别为 SF_ARCHIVELOG_DELETE_BEFORE_TIME和 SF_ARCHIVELOG_DELETE_BEFORE_LSN。

3.1 SF_ARCHIVELOG_DELETE_BEFORE_TIME

3.1.1 定义:

INT
SF_ARCHIVELOG_DELETE_BEFORE_TIME (
time datetime
)

3.1.2 功能说明: 

数据库以归档模式打开的情况下,删除指定时间之前的归档日志文件,包括本地归档和远程归档。待删除的文件必须处于未被使用状态

3.1.3 参数说明:

time:指定删除的最大关闭时间,若大于当前使用归档日志文件的创建时间, 则从当前使用归档文件之前的归档日志文件开始删除

3.1.4 返回值:

删除归档日志文件数,-1表示出错

3.1.5 举例说明:

删除一天之前的归档日志

SELECT SF_ARCHIVELOG_DELETE_BEFORE_TIME(SYSDATE-1);

3.2 SF_ARCHIVELOG_DELETE_BEFORE_LSN

3.2.1 定义:

INT
SF_ARCHIVELOG_DELETE_BEFORE_LSN(
lsn bigint
)

3.2.2 功能说明:

数据库以归档模式打开的情况下,删除小于指定 LSN 值的归档日志文件,包括本地归档和远程归档。待删除的文件必须处于未被使用状态

3.2.3 参数说明:

lsn:指定删除的最大LSN值文件,若指定lsn值大于当前正在使用归档日志的起始LSN(arch_lsn),则从当前使用归档文件之前的文件开始删除

3.2.4 返回值:

删除归档日志文件数,-1表示出错

3.2.5 举例说明:

删除 LSN 值小于 95560 的归档日志文件

SELECT SF_ARCHIVELOG_DELETE_BEFORE_LSN(4296300);

四、DM自带工具进行清理

4.1 dmrachk

dmrachk工具:

rachk V8
version: 03134283890-20220304-158322-10045
格式: dmrachk keyword=value
例程: dmrachk arch_fil=/opt/a.log
强制参数: 必须指定arch_fil或者arch_path
关键字 说明(默认值)
--------------------------------------------------------------------------------
ARCH_FIL 指定一个归档文件
CMP_FIL 指定一个用于比较的归档文件
ARCH_PATH 指定一个归档目录
CMP_PATH 指定一个用于比较的归档目录
RECV_PATH 指定一个待修复的归档目录
TRUNC_FIL 指定新的文件,用于存储从错误归档中,抽取的有效数据。
EXTRACT_FIL 指定新的文件,用于存储从指定的seq范围的归档文件中抽取数据
ARCH_BAK_PATH 指定备份文件路径,用于存储归档修复过程中的重复文件
CHECK 校验级别(0, 1, 2, 3, 4) 0: 文件校验, 1: 包校验(seq & magic),2:ptx校验,3:rrec校验, 4:清理无效的归档文件, 5:修复归档文件到free之后的最后一个有效日志包。默认(0)
BEGIN_LSN 指定归档目录时,指定排除小于该LSN的文件
END_LSN 指定归档目录时,指定排除大于该LSN的文件
BEGIN_SEQ 指定归档目录时,抽取大于该SEQ的文件
END_SEQ 指定归档目录时,抽取小于该SEQ的文件
BEFORE_LSN CHECK=4,指定归档目录,删除该LSN之前的文件。默认为0,所有LSN范围内日志均删除
BEFORE_SEQ CHECK=4,指定归档目录,删除该SEQ之前的文件。默认为0,所有SEQ范围内日志均删除
BEFORE_TIME CHECK=4,指定归档目录,删除该时间点之前的文件。默认删除所有时间点的归档
EXCLUDE_DB_MAGIC CHECK=4,指定归档目录,删除指定的DB_MAGIC之外的文件。
OUTPUT_FIL LOG可以指定输出到文件
DCR_INI 指定dmdcr.ini路径,若未指定,则不使用
DM_INI 目标库dm.ini的路径,用于获取日志加密信息
AFTER_FREE 指定TRUNC_FIL时,是否校验并抽取FREE之后的内容。0 不抽取;1 抽取。默认0

4.2 删除该时间点之前的文件

dmrachk ARCH_PATH=/data/dmarch CHECK=4 BEFORE_TIME=2022-05-16

4.3 删除该LSN之前的文件

dmrachk ARCH_PATH=/data/dmarch CHECK=4 BEFORE_LSN=4296300

五、Linux命令删除

通过find和rm操作去删除INACTIVE的归档文件(最新的为ACTIVE)

find data/dmarch -mtime +1 -name "*.log" -exec rm -rf {} \;

六、总结

备份与恢复过程都依赖归档日志,归档日志是保证数据一致性和完整性的重要保障。如果日归档量较大或磁盘紧张可尝试进行归档清理。

其中ARCH_SPACE_LIMIT和ARCH_RESERVE_TIME可在dmarch.ini中进行配置。

SF_ARCHIVELOG_DELETE_BEFORE_TIME 和 SF_ARCHIVELOG_DELETE_BEFORE_LSN可以通过达梦数据库作业或者脚本进行自动化调度。

dmrachk也可以通过脚本进行自动化调度。

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

保定公民

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值