更新时间:2024-11-12 GMT+08:00
分享

归档账本数据库

前提条件

  • 系统中需要有审计管理员或者具有审计管理员权限的角色。
  • 数据库正常运行,并且对防篡改数据库执行了一系列增、删、改等操作,保证在查询时段内有账本操作记录结果产生。
  • 数据库已经正确配置审计文件的存储路径audit_directory。

背景信息

  • 账本数据库归档功能目前提供两种校验接口,分别为:ledger_hist_archive(text, text)和ledger_gchain_archive(text, text)。账本数据库接口仅审计管理员可以调用。
  • 归档用户历史表的接口为pg_catalog.ledger_hist_archive,操作为:
    SELECT pg_catalog.ledger_hist_archive(schema_name text,table_name text);

    如果归档成功,函数返回t,反之则提示失败原因并返回f。

  • 归档全局区块表的接口为pg_catalog.ledger_gchain_archive,操作为:

    SELECT pg_catalog.ledger_gchain_archive();

    如果归档成功,函数返回t,反之则提示失败原因并返回f。

操作步骤

  1. 对指定用户历史表进行归档操作。

    1
    gaussdb=# SELECT pg_catalog.ledger_hist_archive('ledgernsp', 'usertable');
    
    执行结果如下:
     ledger_hist_archive
    ---------------------
     t
    (1 row)
    用户历史表将归档为一条数据:
    gaussdb=# SELECT * FROM blockchain.ledgernsp_usertable_hist;
     rec_num |     hash_ins     |     hash_del     |             pre_hash
    ---------+------------------+------------------+----------------------------------
           3 | e78e75b00d396899 | 8fcd74a8a6a4b484 | fd61cb772033da297d10c4e658e898d7
    (1 row)

    该结果表明当前节点用户历史表导出成功。

  2. 执行全局区块表导出操作。

    1
    gaussdb=# SELECT pg_catalog.ledger_gchain_archive();
    

    执行结果如下:

     ledger_gchain_archive
    -----------------------
     t
    (1 row)

    全局历史表将以用户表为单位归档为N(用户表数量)条数据:

    gaussdb=# SELECT * FROM gs_global_chain;
     blocknum |  dbname  | username |           starttime           | relid |  relnsp   |  relname  |     relhash      |            globalhash            | txcommand
    ----------+----------+----------+-------------------------------+-------+-----------+-----------+------------------+----------------------------------+-----------
            1 | testdb | libc     | 2021-05-10 19:59:38.619472+08 | 16388 | ledgernsp | usertable | 57c101076694b415 | be82f98ee68b2bc4e375f69209345406 | Archived.
    (1 row)

    该结果表明,当前节点全局区块表导出成功。

相关文档