日志归档

在复制组内,节点会将写操作记录到同步日志中。备节点通过同步日志实现与主节点的数据同步。同步日志循环使用磁盘上的日志文件,新产生的日志会覆盖旧的日志。因此,同步日志只能保存最近的部分日志。

通过开启日志归档,可以持续归档数据节点的同步日志,归档日志不会被覆盖,并且可以通过重放工具在其它集群或节点重新执行。因此可以通过日志归档和重放来实现不同集群间的数据同步。

基本功能

日志归档包括以下基本功能:

  • 归档数据节点的同步日志到本地目录;
  • 支持压缩存储归档文件;
  • 归档文件过期自动清理;
  • 归档目录磁盘配额。

开启归档

将配置参数archiveon设为true即可开启日志归档功能。首次开启日志归档时,节点会在归档目录下生成归档状态文件“.archive.1”和“.archive.2”,通过两个文件保证可靠性。状态文件记录了归档的起始LSN。

Note:开启归档时节点的同步日志文件数量必须大于1(参数logfilenum)。

开启归档后有两个条件会触发归档操作:

  • 当前同步日志文件写满切换到下一个日志文件时;
  • 归档超时时间段内未发生归档操作。同时,如果节点由于某些原因(节点主降备、异常重启等)导致移动了同步日志LSN,那么归档也会进行相应的移动操作。

归档文件

归档文件的文件名有以下几种格式:

文件名说明
archivelog.<FileId>完整归档的日志文件,FileId是顺序增长的序列号
archivelog.<FileId>.p部分归档的日志文件
archivelog.<FileId>.m发生了移动操作的日志文件

Note:1. 在同步日志切换日志文件时,上一个使用的日志文件会被整个归档。如果开启了压缩,那么完整归档的日志文件会被压缩;2. 在归档超时的时候,可能会归档日志文件的一部分日志。部分归档的文件不会被压缩,在部分归档文件的日志写满了之后会转成完整归档的日志文件。

配置参数

日志归档的配置参数如下:

参数描述类型默认值说明
archiveon是否开启归档boolfalse
archivecompresson是否开启归档文件压缩booltrue
archivepath归档目录string<dbpath>/archivelog
archivetimeout归档超时时间int600单位为秒,取值范围>=0,0表示不设超时时间。
archiveexpired归档日志过期时间int240单位为小时,取值范围>=0,超过过期时间后删除,0表示不设过期时间。
archivequota归档磁盘空间配额int10单位为GB,取值范围>=0,超过磁盘配额后从最早的开始删除,0表示不设置配额。

Note:1. 归档是针对数据节点的,在数据节点上通过参数archiveon来开启或关闭归档功能;2. 归档文件存放在归档目录下,归档目录通过参数archivepath指定,默认在数据路径下的archivelog目录;3. 在同步日志切换文件时会触发归档,如果在归档超时时间的间隔内未发生归档,那么系统会自动触发归档;4. 通过归档日志过期时间来设置归档文件的保存时间,超过时间的归档文件会被删除;5. 通过归档磁盘空间配额来限制归档使用的磁盘空间大小,在归档使用的磁盘空间超出配额前,系统会从最早的归档文件开始删除,以保证不会超出磁盘配额。

错误

错误信息记录在节点诊断日志(diaglog)中,可参考错误码

错误码原因解决方法
-313开启了归档,同步日志的日志文件循环回来,即将要被覆盖的同步日志还没有被归档。发生该错误后会触发归档操作,如果连续发生错误需要结合诊断日志分析。