更新时间:2024-09-02 GMT+08:00

扫描残留文件函数

扫描残留文件函数仅8.3.0及以上集群版本支持,本章节所有函数仅限sysadmin角色调用。

pg_scan_residualfiles()

描述:用于扫描当前节点所连接数据库的所有残留文件记录。该函数为库级函数,与当前所在的数据库相关,可以在任意实例上运行。

  • 连接到CN执行时,扫描当前CN节点所在数据库的本地残留文件和OBS全部残留文件。
  • 连接到DN执行时,扫描当前DN节点所在数据库的本地残留文件。

返回类型:record

返回信息如下:

表1 返回字段

名称

类型

描述

pgscrf

text

记录残留文件信息的元文件本地路径。

示例:

1
2
3
4
5
6
SELECT * FROM pg_scan_residualfiles();
                               pgscrf                               
--------------------------------------------------------------------
 pg_residualfiles/pgscrf_meta_1663_16323_20231027143716005244
 pg_residualfiles/pgscrf_meta_2147484281_16323_20231027143716005713
(2 rows)

该函数的使用约束如下:

  • 只能扫描当前登录的数据库中是否存在残留文件,当前只扫描默认表空间,自定义表空间和OBS表空间
  • 该函数为重载操作,不支持单节点并发使用,也不建议在业务繁忙和资源负载较高时使用。
  • 只支持冷热表热分区,不支持冷分区。
  • 禁止在升级观察期内使用。
  • 无法对已删除数据库的残留文件进行扫描。
  • 如果集群元数据信息存在不一致情况,该函数可能会错误扫描到有效的数据文件。

pgxc_scan_residualfiles(query_flag)

描述:pg_scan_residualfiles()的CN统一执行函数。该函数为集群级函数,与当前所在的数据库相关,在CN实例上运行。

参数说明:query_flag。参数类型int,表示执行范围。1表示CN,2表示主DN,4表示备DN,通过或运算可以得到查询并集,如1|2=3表示CN+主DN,1|2|4=7表示CN+主DN+备DN,默认值是7。

返回类型:record

返回信息如下:

表2 返回字段

名称

类型

描述

nodename

name

节点名称。

instance_id

text

实例名称。

pgscrf

text

记录残留文件信息的元文件本地路径。

示例:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
SELECT * FROM pgxc_scan_residualfiles();
  node_name   | instance_id |                               pgscrf                               
--------------+-------------+--------------------------------------------------------------------
 dn_6001_6002 | dn_6001     | pg_residualfiles/pgscrf_meta_1663_16323_20231027144103839354
 dn_6001_6002 | dn_6001     | pg_residualfiles/pgscrf_meta_2147484281_16323_20231027144103839826
 cn_5001      | cn_5001     | pg_residualfiles/pgscrf_meta_1663_16323_20231027144103946217
 dn_6007_6008 | dn_6008     | pg_residualfiles/pgscrf_meta_1663_16323_20231027144104171311
(4 rows)

SELECT * FROM pgxc_scan_residualfiles(1);
 node_name | instance_id |                            pgscrf                            
-----------+-------------+--------------------------------------------------------------
 cn_5001   | cn_5001     | pg_residualfiles/pgscrf_meta_1663_16323_20231027144421861628
(1 row)

SELECT * FROM pgxc_scan_residualfiles(2);
  node_name   | instance_id |                               pgscrf                               
--------------+-------------+--------------------------------------------------------------------
 dn_6001_6002 | dn_6001     | pg_residualfiles/pgscrf_meta_1663_16323_20231027144424210395
 dn_6001_6002 | dn_6001     | pg_residualfiles/pgscrf_meta_2147484281_16323_20231027144424210855
(2 rows)

SELECT * FROM pgxc_scan_residualfiles(4);
  node_name   | instance_id |                            pgscrf                            
--------------+-------------+--------------------------------------------------------------
 dn_6007_6008 | dn_6008     | pg_residualfiles/pgscrf_meta_1663_16323_20231027144427492060
(1 row)

该函数的使用约束如下:

  • 只能扫描当前登录的数据库中是否存在残留文件,当前只扫描默认表空间,自定义表空间和OBS表空间。
  • 该函数为重载操作,不支持单节点并发使用,也不建议在业务繁忙和资源负载较高时使用。
  • 只支持冷热表热分区,不支持冷分区。
  • 禁止在升级观察期内使用。
  • 无法对已删除数据库的残留文件进行扫描。
  • 如果集群元数据信息存在不一致情况,该函数可能会错误扫描到有效的数据文件。

pg_get_scan_residualfiles()

描述:用于获取当前节点所有扫描到的残留文件记录。该函数为实例级函数,与当前所在的数据库无关,可以在任意实例上运行。

返回类型:record

返回信息如下:

表3 返回字段

名称

类型

描述

handled

bool

残留文件是否已经被处理,被移动或者被更改。

dbname

text

数据库名称。

residualfile

text

残留文件路径。

size

bigint

文件大小,单位为byte。OBS路径的残留文件该项为0。

inode

bigint

残留文件stat信息中的Inode。OBS路径的残留文件该项为0。

atime

timestamptz

残留文件stat信息中的Access time。OBS路径的残留文件该项为空。

mtime

timestamptz

残留文件stat信息中的Modifie time。OBS路径的残留文件该项为空。

ctime

timestamptz

残留文件stat信息中的Chang time。OBS路径的残留文件该项为空。

filepath

text

记录残留文件信息的元文件本地路径,对应pgscrf_meta文件。

notes

text

注释。

pgxc_get_scan_residualfiles(query_flag)

描述:pg_get_scan_residualfiles()的CN统一执行函数。该函数为集群级函数,与当前所在的数据库无关,在CN实例上运行。

参数query_flag,参数类型int,用于表示执行范围。1表示CN,2表示主DN,4表示备DN,通过或运算可以得到查询并集,如1|2=3表示CN+主DN,1|2|4=7表示CN+主DN+备DN。默认值是7。

返回类型:record

返回信息如下:

表4 返回字段

名称

类型

描述

nodename

name

节点名称。

instance_id

text

实例名称。

handled

bool

残留文件是否已经被处理,被移动或者被更改。

dbname

text

数据库名称。

residualfile

text

残留文件路径。

size

bigint

文件大小,单位为byte。OBS路径的残留文件该项为0。

inode

bigint

残留文件stat信息中的Inode。OBS路径的残留文件该项为0。

atime

timestamptz

残留文件stat信息中的Access time。OBS路径的残留文件该项为空。

mtime

timestamptz

残留文件stat信息中的Modifie time。OBS路径的残留文件该项为空。

ctime

timestamptz

残留文件stat信息中的Chang time。OBS路径的残留文件该项为空。

filepath

text

记录残留文件信息的元文件本地路径,对应pgscrf_meta文件。

notes

text

注释。

pg_archive_scan_residualfiles()

描述:用于归档当前节点所连接数据库上所有扫描到的残留文件记录。该函数为实例级函数,与当前所在的数据库相关,可以在任意实例上运行。

返回类型:record

返回信息如下:

表5 返回字段

名称

类型

描述

archive

text

归档后的本地文件夹路径。OBS路径的残留文件归档在对应OBS数据库目录下。

count

bigint

归档的残留文件数量。

size

bigint

归档的残留文件总大小,单位为byte。

示例:

1
2
3
4
5
SELECT * FROM pg_archive_scan_residualfiles();
                           archive                            | count | size  
--------------------------------------------------------------+-------+-------
 pg_residualfiles/archive/pgscrf_archive_20231027144613791801 |     4 | 81920
(1 row)
  • 此函数只能归档当前登录的数据库中记录过的残留文件,归档时会记录中的残留文件进行相应的校验,校验结果分为以下三种情况:
    • 校验通过:校验通过后会对残留文件进行归档,并标记为已处理。
    • 校验失败:校验失败会跳过归档,并标记为已处理。
    • 延迟校验:延迟校验会跳过归档,通常表示当前未满足校验时机,延迟校验的情况通常和事务完成情况及备机REDO进度有关。
  • 实际归档目录与对应表空间在同一个文件系统下,删除表空间也会删除对应的残留文件归档。
  • 延迟DDL开启后,此函数无法使用。
  • 此函数为重载操作,不支持单节点并发使用,也不建议在业务繁忙和资源负载较高时使用。

pgxc_archive_scan_residualfiles(query_flag)

描述:pg_archive_scan_residualfiles()的CN统一执行函数。该函数为集群级函数,与当前所在的数据库相关,在CN实例上运行。

参数query_flag,参数类型int,用于表示执行范围。1表示CN,2表示主DN,4表示备DN,通过或运算可以得到查询并集,如1|2=3表示CN+主DN,1|2|4=7表示CN+主DN+备DN。默认值是7。

返回类型:record

返回信息如下:

表6 返回字段

名称

类型

描述

nodename

name

节点名称。

instance_id

text

实例名称。

archive

text

归档后的本地文件夹路径。OBS路径的残留文件归档在对应OBS数据库目录下。

count

bigint

归档的残留文件数量。

size

bigint

归档的残留文件总大小,单位为byte。

示例:

1
2
3
4
5
6
SELECT * FROM pgxc_archive_scan_residualfiles();
  node_name   | instance_id |                           archive                            | count | size  
--------------+-------------+--------------------------------------------------------------+-------+-------
 cn_5001      | cn_5001     | pg_residualfiles/archive/pgscrf_archive_20231027145050896440 |     1 | 40960
 dn_6007_6008 | dn_6008     | pg_residualfiles/archive/pgscrf_archive_20231027145051018138 |     1 | 24576
(2 rows)
  • 此函数只能归档当前登录的数据库中记录过的残留文件,归档时会记录中的残留文件进行相应的校验,校验结果分为以下三种情况:
    • 校验通过:校验通过后会对残留文件进行归档,并标记为已处理。
    • 校验失败:校验失败会跳过归档,并标记为已处理。
    • 延迟校验:延迟校验会跳过归档,通常表示当前未满足校验时机,延迟校验的情况通常和事务完成情况及备机REDO进度有关。
  • 实际归档目录与对应表空间在同一个文件系统下,删除表空间也会删除对应的残留文件归档。
  • 延迟DDL开启后,此函数无法使用。
  • 此函数为重载操作,不支持单节点并发使用,也不建议在业务繁忙和资源负载较高时使用。

pg_rm_scan_residualfiles_archive()

描述:用于删除当前节点所有归档的残留文件记录。该函数为实例级函数,与当前所在的数据库无关,可以在任意实例上运行。

返回类型:record

返回信息如下:

表7 返回字段

名称

类型

描述

count

bigint

归档中已删除的残留文件数量。本地路径的残留文件统计所删除的文件数,OBS路径的残留文件统计所删除的表目录数量。

size

bigint

归档中已删除的残留文件总大小,单位为byte。OBS路径的残留文件该项均为0。

示例:

1
2
3
4
5
SELECT * FROM pg_rm_scan_residualfiles_archive();
 count | size  
-------+-------
     4 | 81920
(1 row)

pgxc_rm_scan_residualfiles_archive(query_flag)

描述:pg_rm_scan_residualfiles_archive()的CN统一执行函数。该函数为集群级函数,与当前所在的数据库无关,在CN实例上运行。

参数query_flag,参数类型int,用于表示执行范围。1表示CN,2表示主DN,4表示备DN,通过或运算可以得到查询并集,如1|2=3表示CN+主DN,1|2|4=7表示CN+主DN+备DN。默认值是7。

返回类型:record

返回信息如下:

表8 返回字段

名称

类型

描述

nodename

name

节点名称。

instance_id

text

实例名称。

count

bigint

归档中已删除的残留文件数量。本地路径的残留文件统计所删除的文件数,OBS路径的残留文件统计所删除的表目录数量。

size

bigint

归档中已删除的残留文件总大小,单位为byte。OBS路径的残留文件该项均为0。

示例:

1
2
3
4
5
6
7
8
SELECT * FROM pgxc_rm_scan_residualfiles_archive();
  node_name   | instance_id | count | size  
--------------+-------------+-------+-------
 dn_6001_6002 | dn_6001     |     4 | 81920
 cn_5001      | cn_5001     |     1 | 40960
 dn_6007_6008 | dn_6008     |     1 | 24576
 coordinator1 | coordinator1|     1 |    0 
(4 rows)