日志归档
在复制组内,节点会将写操作记录到同步日志中。备节点通过同步日志实现与主节点的数据同步。同步日志循环使用磁盘上的日志文件,新产生的日志会覆盖旧的日志。因此,同步日志只能保存最近的部分日志。
通过开启日志归档,可以持续归档数据节点的同步日志,归档日志不会被覆盖,并且可以通过重放工具在其它集群或节点重新执行。因此可以通过日志归档和重放来实现不同集群间的数据同步。
基本功能
日志归档包括以下基本功能:
- 归档数据节点的同步日志到本地目录;
- 支持压缩存储归档文件;
- 归档文件过期自动清理;
- 归档目录磁盘配额。
开启归档
将配置参数archiveon设为true即可开启日志归档功能。首次开启日志归档时,节点会在归档目录下生成归档状态文件“.archive.1”和“.archive.2”,通过两个文件保证可靠性。状态文件记录了归档的起始LSN。
Note:
开启归档时节点的同步日志文件数量必须大于1(参数logfilenum)。
开启归档后有两个条件会触发归档操作:
- 当前同步日志文件写满切换到下一个日志文件时;
- 归档超时时间段内未发生归档操作。
同时,如果节点由于某些原因(节点主降备、异常重启等)导致移动了同步日志LSN,那么归档也会进行相应的移动操作。
归档文件
归档文件的文件名有以下几种格式:
文件名 | 说明 |
---|---|
archivelog.<FileId> | 完整归档的日志文件,FileId是顺序增长的序列号 |
archivelog.<FileId>.p | 部分归档的日志文件 |
archivelog.<FileId>.m | 发生了移动操作的日志文件 |
Note:
1. 在同步日志切换日志文件时,上一个使用的日志文件会被整个归档。如果开启了压缩,那么完整归档的日志文件会被压缩;
2. 在归档超时的时候,可能会归档日志文件的一部分日志。部分归档的文件不会被压缩,在部分归档文件的日志写满了之后会转成完整归档的日志文件。
配置参数
日志归档的配置参数如下:
参数 | 描述 | 类型 | 默认值 | 说明 |
---|---|---|---|---|
archiveon | 是否开启归档 | bool | false | |
archivecompresson | 是否开启归档文件压缩 | bool | true | |
archivepath | 归档目录 | string | <dbpath>/archivelog | |
archivetimeout | 归档超时时间 | int | 600 | 单位为秒,取值范围>=0,0表示不设超时时间。 |
archiveexpired | 归档日志过期时间 | int | 240 | 单位为小时,取值范围>=0,超过过期时间后删除,0表示不设过期时间。 |
archivequota | 归档磁盘空间配额 | int | 10 | 单位为GB,取值范围>=0,超过磁盘配额后从最早的开始删除,0表示不设置配额。 |
Note:
1. 归档是针对数据节点的,在数据节点上通过参数archiveon来开启或关闭归档功能;
2. 归档文件存放在归档目录下,归档目录通过参数archivepath指定,默认在数据路径下的archivelog目录;
3. 在同步日志切换文件时会触发归档,如果在归档超时时间的间隔内未发生归档,那么系统会自动触发归档;
4. 通过归档日志过期时间来设置归档文件的保存时间,超过时间的归档文件会被删除;
5. 通过归档磁盘空间配额来限制归档使用的磁盘空间大小,在归档使用的磁盘空间超出配额前,系统会从最早的归档文件开始删除,以保证不会超出磁盘配额。
错误
错误信息记录在节点诊断日志(diaglog)中,可参考错误码。
错误码 | 原因 | 解决方法 |
---|---|---|
-313 | 开启了归档,同步日志的日志文件循环回来,即将要被覆盖的同步日志还没有被归档。 | 发生该错误后会触发归档操作,如果连续发生错误需要结合诊断日志分析。 |