扫描残留文件函数
扫描残留文件函数仅8.3.0及以上集群版本支持,本章节所有函数仅限sysadmin角色调用。
pg_scan_residualfiles()
描述:用于扫描当前节点所连接数据库的所有残留文件记录。该函数为库级函数,与当前所在的数据库相关,可以在任意实例上运行。
- 连接到CN执行时,扫描当前CN节点所在数据库的本地残留文件和OBS全部残留文件。
- 连接到DN执行时,扫描当前DN节点所在数据库的本地残留文件。
返回类型:record
返回信息如下:
名称 |
类型 |
描述 |
---|---|---|
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
返回信息如下:
名称 |
类型 |
描述 |
---|---|---|
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
返回信息如下:
名称 |
类型 |
描述 |
---|---|---|
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
返回信息如下:
名称 |
类型 |
描述 |
---|---|---|
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
返回信息如下:
名称 |
类型 |
描述 |
---|---|---|
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
返回信息如下:
名称 |
类型 |
描述 |
---|---|---|
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
返回信息如下:
名称 |
类型 |
描述 |
---|---|---|
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
返回信息如下:
名称 |
类型 |
描述 |
---|---|---|
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) |