人大金仓(Kingbase)数据库的 sys_wal 目录文件过多可能会导致磁盘空间不足或系统性能下降。以下是一些清理和管理 sys_wal 目录的方法:

方法一:调整WAL文件保留策略

  1. 检查当前WAL配置:

    SHOW wal_keep_segments;
  2. 调整WAL保留策略: 根据需求调整 wal_keep_segments 参数,以减少WAL文件的保留数量。编辑 kingbase.conf 文件:

    wal_keep_segments = 64 # 根据需要调整这个值
  3. 重启数据库以生效:

    sys_ctl restart -d /path/to/kingbase/data/

方法二:定期备份和归档WAL日志

  1. 启用WAL归档:kingbase.conf 文件中设置归档参数:

    archive_mode = on
    archive_command = 'cp %p /path/to/archive/%f'
    archive_timeout = 600 # 根据需要设置超时时间
  2. 定期清理归档目录: 可以通过脚本定期删除过旧的归档WAL文件。例如,可以使用crontab设置定期清理任务:

    0 3 * * * find /path/to/archive/ -type f -mtime +7 -exec rm {} \;

方法三:手动清理

如果WAL文件已经过多,可以手动清理旧的WAL文件,但请务必确认这些文件不再需要(如已经完成备份)。

  1. 列出WAL文件:

    ls -lh /path/to/kingbase/data/sys_wal/
  2. 删除旧的WAL文件: 确认这些WAL文件不再需要后手动删除:

    rm /path/to/kingbase/data/sys_wal/000000010000000100000010

方法四:使用pg_archivecleanup工具

pg_archivecleanup 是一个实用工具,可以清理不再需要的归档WAL文件。

安装pg_archivecleanup: 确保工具已安装。通常,它包含在Kingbase的安装包中。

查找DEDO WALfile

sys_controldata /path/to/kingbase/data

找到REDO WAL file对应的文件,比如000000010000000100000010

运行清理命令:

文件名向后退一个

sys_archivecleanup /path/to/kingbase/data/sys_wal/ 000000010000000100000009

注意事项

  • 在执行任何清理操作前,务必确保WAL文件已经备份并且不会再使用。

  • 调整配置文件后,需要重启数据库才能生效。

  • 定期检查和维护是保持数据库稳定性的关键。

在人大金仓(Kingbase)数据库中,一些参数的更改通过 reload 可以生效,但另一些参数则需要重启数据库服务才能生效。

对于 WAL 相关参数,具体如下:

  • 需要重启(restart)才能生效的参数:

    • wal_keep_segments

    • max_wal_size

    • min_wal_size

    • wal_buffers

  • 通过 reload 就能生效的参数:

    • archive_mode

    • archive_command

    • archive_timeout

因此,修改 wal_keep_segments 参数后,需要重启数据库服务才能生效,而修改 archive_modearchive_commandarchive_timeout 这些归档相关的参数,只需要 reload 配置文件即可。