文章目录
前言
提示:这里可以添加本文要记录的大概内容:
DM数据库可以在归档和非归档两种模式下运行,如果是归档模式,联机日志文件中的 内容保存到硬盘中,形成归档日志文件;如果是非归档模式,则不会形成归档日志。归档模式的具体配置参数参考dmdbms/doc/DM8数据守护与读写分离集群V4.0.pdf-5.3dmarch.ini。
DM支持多种归档方式。采用归档模式会对系统的性能产生些许影响,然而系统在归档模式下运行会更安全,当出现故障时其丢失数据的可能性更小,这是因为一旦出现介质故障,如磁盘损坏时,利用归档日志,系统可被恢复至故障发生的前一刻,也可以还原到指定的时间点,而如果没有归档日志文件,则只能利用备份进行恢复。通过dm.ini和dmarch.ini可以配置本地归档。dmarch.ini生效的前提是dm.ini中的参数ARCH_INI置为1。DM的 dmarch.ini可以进行本地归档和远程归档的设置,DM备份与还原过程中使用的日志均为本地归档日志。查询 dm_arch_ini、arch_status等动态视图可以获取归档配置以及归档状态等相关信息。因此,为了保证归档日志文件和数据文件不同时出现问题,建议将归档目录与数据文件配置、保存 到不同的物理磁盘上。除了表备份还原,其他的联机备份与还原必须运行在归档模式下。DM数据库定义了多种归档方式,包括本地归档、实时归档、即时归档、异步归档和远程归档,其中本地归档和远程归档与备份还原密切相关。
本次仅对单机环境下数据库归档日志清理进行尝试。 其中归档备份清理可通过几种方式进行,dmarch.ini参数进行清理、通过系统存储过程和函数去清理、DM自带工具进行清理、linux删除与第三方产品等。
准备
安装部署一套数据库,单机安装部署内容可参照DM云社区文档,下附链接不做赘述。 https://eco.dameng.com/docs/zh-cn/ops/standard-stand-alone.html
硬件环境:
硬件类别 | 配置 |
---|---|
数据库服务器 | 2CPU/4G内存/25G |
软件环境:
软件类别 | 配置 |
---|---|
操作系统 | Redhat7.6 |
数据库版本 | 达梦数据库8 |
连接工具 | xshell |
数据库文件位置:
文件路径 | 所在路径 |
---|---|
数据库目录 | /home/dmdba/dmdbms |
bin目录 | /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参数如下:
归档状态如下:
任意生成归档日志,供测试
提示:以下是本篇文章正文内容,下面案例可供参考
一、通过参数进行清理
通过修改dmarch.ini数据库的归档ini文件去控制归档日志的清理。
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 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。
1 SF_ARCHIVELOG_DELETE_BEFORE_TIME
定义:INT
SF_ARCHIVELOG_DELETE_BEFORE_TIME (
time datetime
)
功能说明:
数据库以归档模式打开的情况下,删除指定时间之前的归档日志文件,包括本地归档和远程归档。待删除的文件必须处于未被使用状态
参数说明:
time:指定删除的最大关闭时间,若大于当前使用归档日志文件的创建时间, 则从当前使用归档文件之前的归档日志文件开始删除
返回值:
删除归档日志文件数,-1表示出错
举例说明:
删除一天之前的归档日志
SELECT SF_ARCHIVELOG_DELETE_BEFORE_TIME(SYSDATE-1);
2 SF_ARCHIVELOG_DELETE_BEFORE_LSN
代码如下(示例):
定义:
INT
SF_ARCHIVELOG_DELETE_BEFORE_LSN(
lsn bigint
)
功能说明:
数据库以归档模式打开的情况下,删除小于指定 LSN 值的归档日志文件,包括本地归档和远程归档。待删除的文件必须处于未被使用状态
参数说明:
lsn:指定删除的最大LSN值文件,若指定lsn值大于当前正在使用归档日志的起始LSN(arch_lsn),则从当前使用归档文件之前的文件开始删除
返回值:
删除归档日志文件数,-1表示出错
举例说明:
删除 LSN 值小于 95560 的归档日志文件
SELECT SF_ARCHIVELOG_DELETE_BEFORE_LSN(4296300);
三、DM自带工具进行清理
1 dmrachk
dmrachk工具:
rachk V8
关键字 说明(默认值)
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
2 删除该时间点之前的文件
dmrachk ARCH_PATH=/data/dmarch CHECK=4 BEFORE_TIME=2022-05-16
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也可以通过脚本进行自动化调度。