金仓数据库KingbaseES wal日志归档相关总结
关键字:
KingbaseES、 归档、人大金仓、KingbaseES
什么是归档?
KingbaseES在归档模式下,当日志切换时,被切换的日志将归档到用户指定的归档路径下,保证日志文件完整,这对于物理恢复时可以恢复到任意时间点非常重要。
如何配置归档?
配置归档需要修改kingbase.conf文件中的参数,并重新启动数据库。archive_mode配置项可选值为always、on、off,默认值为off,当设置为on或always表示启用归档模式。
1.设置为on,只有主节点做归档
2.设置为always,主备节点都会做归档。在always模式下,从归档还原或流式复制流的所有文件都将被归档(再次)。
3.设置为off模式,表示不启用归档。
怎样就会触发日志归档?
方法一:手动归档
select pg_switch_xlog();后,WAL 会切换到新的日志,这时会将老的 WAL日志归档
方法二:WAL 日志写满后触发归档
WAL 日志被写满后会触发归档 archive_command 设置的内容
方法三:设置 archive_timeout
假如设置 archive_timeout=60 ,那么每 60 s ,会触发一次 WAL 日志切换,同时触发日志归档。
配置归档级别
wal_level参数决定多少信息写入到 WAL 中,这个参数只能在服务器启动时设置。
- Minimal级别--只写入从崩溃或立即关机恢复所需要的信息,不能通过基础备份和wal日志恢复数据库。
- Replica级别--该级别支持wal归档和复制
- logical级别 --在replica级别的基础上添加了支持逻辑解码所需的信息
配置归档命令
1.非压缩
archive_command = 'cp %p /arc/%f && echo %f >> /arc/archive.list‘
命令1 && 命令2 命令1执行成功后才会执行命令2
命令1 || 命令2 命令1执行失败后才会执行命令2
2.压缩
archive_command = 'gzip < %p > /arc/%f.gz'
archive_command = 'bzip2 < %p > /arc/%f.bz2'
archive_command = 'lz4 -f -q -z %p /arc/%f.lz4‘
archive_command 是用来设置归档行为的命令,重要的库在存储空间允许的情况下会一直开启归档,而有些相对不是很重要的库,可以这样编写archive_command = '/bin/date'
归档统计
归档统计启用:配置sys_backup.conf时将_archive_statistics设置为y,执行sys_backup.sh init。将所有节点(包括repo节点和kes节点)的sys_rman.conf内的archive-statistics=n改为y,后续归档日志就会被记录到归档统计文件中去。
注:归档统计启用前的归档日志不会被记录,也不会被查询出来。
在未开启时,即配置文件内archive-statistics=n,但命令行指定archive-statistics=y做查询,会去读取stat.info、stat.info.copy文件,若归档统计文件内无记录则显示零条,若有则显示具体记录的信息。此时 --type=archive参数会报错,--type=archive参数读取stat.info/stat.info.copy文件展示。
和不加--type=basic一样,就是最基本的info输出,不受归档统计开关的控制
命令行指定archive-statistics=y做查询,会去读取stat.info、stat.info.copy文件,若归档统计文件内无记录则显示零条,若有则显示具体记录的信息。
其中,stat.info文件为stanza-create时生成(类似于backup.info、archive.info),sys_backup.sh init时会调用stanza-create命令,一般不需要关心它的生成。测试多repo时,需要手动stanza-create,就会发现生成了该文件。归档子目录下的pstat.info/pstat.info.copy文件是在归档统计启用时,该归档子目录被第一次归档文件时由sys_rman创建出来的。
若删除了正在归档的子目录,然后继续触发归档,就会造成stat.info内记录的该子目录内的文件数量与pstat.info内记录的不一致,该异常情况会被归档完整性检查特性检测到,使用verify命令即可发现。