归档日志

归档日志是非活动的WAL日志备份。通过使用归档日志,可以保留所有WAL日志的历史记录,当数据库处于ARCHIVELOG模式并进行日志切换时,后台进程archiver process会将WAL日志的内容保存到归档日志中,当数据库出现介质失败时,使用数据文件备份、归档日志、在线WAL日志可以完全恢复数据库。

什么情况下会触发WAL日志归档?

  1. 手动切换时,会触发WAL日志归档。
  2. WAL segment file写满时,会触发WAL日志归档。
  3. 设置archive_timeout时,定时触发WAL日志归档。
  4. 数据库正常关闭时,会触发WAL日志归档。
  • 归档——启用WAL归档
  1. 通过修改kingbase.conf开启归档
  1. 建立归档目录
  2. 配置相关参数

人大金仓数据库的归档日志_国产数据库

 

  1. 重启KES实例
  2. 查看参数
  3. 手动切换归档
  4. 查看归档日志文件

人大金仓数据库的归档日志_hive_02

 

  1. 通过ALTER SYSTEM命令开启归档
  2. 建立归档目录
  3. 配置相关参数
  4. 重启KES实例

人大金仓数据库的归档日志_hive_03

 

  1. 查看参数
  2. 手动切换归档
  3. 查看归档日志文件

人大金仓数据库的归档日志_归档日志_04

 

 

  1. archive_command 归档命令详细

临时启用和禁用归档方法

方法1——通过逻辑运算符设置。

人大金仓数据库的归档日志_归档日志_05

注意:

当文件标识符archive_active存在时,则会执行归档命令

归档标识文件archive_active需要手工创建。

方法2——通过shell设置

人大金仓数据库的归档日志_hive_06

 

注意:

这里使用了shell的选择结构语句。

当文件标识archive_artive存在时,则会执行归档命令。

  • 归档——触发WAL归档

1、手工切换WAL日志

使用select sys_switch_wal(); 函数可以手工切换WAL日志。

  1. 执行sys_switch_wal()。
  2. 当前写入的wal日志信息会切换到新的日志文件中。
  3. 将旧的WAL日志归档到/archive/目录中。

人大金仓数据库的归档日志_国产数据库_07

 

2、WAL日志写满

WAL日志被写满后会触发归档,WAL segment file大小默认为16M。

  1. 创建t01表。
  2. 批量插入数据。
  3. KES会自动发生日志切换并执行归档。

人大金仓数据库的归档日志_归档日志_08

 

3、设置archive_timeout

通过设置archive_timeout参数,可以让数据库周期性的执行日志切换和归档操作。

  1. 每60s触发一次WAL日志切换。
  2. 每60s触发一次WAL日志归档。

人大金仓数据库的归档日志_归档日志_09

 

4、fast或者smart方式正常关闭数据库

使用fast或者smart方式关闭实例时,数据库会再关闭自动执行切换和归档。

人大金仓数据库的归档日志_hive_10

 

  • 归档——清理WAL归档
  1. 手工清理归档日志
  2. 确定可以清楚的WAL日志文件
  3. 手工清理WAL日志归档文件

人大金仓数据库的归档日志_hive_11

 

  1. 自动清理归档日志
  2. 编辑脚本sys_archive_clean.sh
  • 填写数据目录:/KingbaseES/V8/data
  • 填写软件家目录:/KingbaseES/V8/Server
  • 填写归档目录:/archive

人大金仓数据库的归档日志_归档日志_12

 

  1. 使用sys_controldata 查看最后归档点
  2. 使用sys_archivecleanup命令清除最新归档点之前的WAL日志。

定时启动脚本

人大金仓数据库的归档日志_归档日志_13

 

  • 归档——常用归档配置
  1. 压缩归档

人大金仓数据库的归档日志_国产数据库_14

 

  1. 配置远程归档

人大金仓数据库的归档日志_国产数据库_15