数据仓库服务 GAUSSDB(DWS)-残留文件管理函数应用:使用示例

时间:2024-12-06 15:12:47

使用示例

以当前两个用户自建的数据库db1、db2为例:

  1. 在CN上获取集群的所有残留文件记录:
    1
    db1=# SELECT * FROM pgxc_get_residualfiles() order by 4, 6; -- order by不是必须的
    

    当前集群中:

    • dn_6001_6002 节点(当前的主节点实例)的db1和db2数据库中都存在残留文件记录。
    • 残留文件在residualfile列展示。
    • filepath列为记录残留文件的记录文件,保存在实例数据目录下pg_residualfiles目录中。
  2. 调用pgxc_verify_residualfiles()函数对db1库进行验证:
    1
    db1=# SELECT * FROM pgxc_verify_residualfiles();
    

    因为verify类函数都是database级别,所以当前在db1库中调用verify函数时,只对属于db1的残留文件进行验证。

    可以再次调用get函数查看是否验证完成:

    1
    db1=# SELECT * FROM pgxc_get_residualfiles() order by 4, 6;
    

    如上图所示,已确认db1数据库中的残留文件都已经验证,db2数据库中的残留文件都未进行验证。

  3. 调用 pgxc_rm_residualfiles()函数删除残留文件。
    1
    db1=# SELECT * FROM pgxc_rm_residualfiles();
    

  4. 再次调用pgxc_get_residualfiles()函数检查删除后的结果。

    结果显示db1数据库中的残留文件已经被删除(isdeleted标记为t),db2中的残留文件都未被删除。

    同时可以看到查询出9条结果,与之前查询出的结果相比,缺少一条以9438结尾的残留文件记录文件。这是因为以9438结尾的残留文件记录文件中只有一条残留文件记录,这条记录在步骤3中被删除,当记录文件中的所有残留文件都被删除后,记录文件本身也会被删除,并备份到pg_residualfiles/backup目录中:

  5. 如果需要删除db2数据库中的文件,需要在db2中调用verify函数后再调用rm函数。
    1. 进入db2数据库,并调用验证函数:

      此时可以查询验证的结果:

    2. 调用删除函数:

    3. 再查询删除的结果:

      此时因为 8342 结尾的记录文件中残留文件已经全部删除,所以整个记录文件也被删除并备份到backup目录下,所以查询到0条记录。

support.huaweicloud.com/sqlreference-910-dws/dws_06_0350.html