验证残留文件函数
pgxc类残留文件管理函数只对CN和当前主DN进行操作,不会验证和清理备DN上的残留文件。所以主DN完成清理后,应在备DN上及时执行残留文件清理操作或对备机进行build,防止主备切换后由于增量build导致备机残留文件被重新复制回主DN,导致未成功清理的假象。
pg_verify_residualfiles(filepath)
描述:用于验证参数指定文件中记录的文件是否为残留文件。该函数为实例级函数,与当前所在的数据库相关,可以在任意实例上运行。
参数类型:text
返回值类型:bool
函数返回字段如下:
名称 |
类型 |
描述 |
---|---|---|
isverified |
bool |
是否完成验证 |
示例:
1 2 3 4 5 |
SELECT * FROM pg_verify_residualfiles('pgrf_20200908160211441546'); isverified ------------ t (1 row) |
本函数只能验证记录的文件在当前登录的数据库中是否是残留文件。如果记录的文件不属于当前登录的数据库,则不会进行校验行为。
pg_verify_residualfiles()
描述:用于验证当前实例上所有残留文件列表中记录的文件是否为残留文件。该函数为实例级函数,与当前所在的数据库相关,可以在任意实例上运行。
参数类型:无
返回值类型:record
函数返回字段如下:
名称 |
类型 |
描述 |
---|---|---|
result |
bool |
是否完成验证 |
filepath |
text |
残留文件记录路径 |
notes |
text |
注释 |
示例:
1 2 3 4 5 |
SELECT * FROM pg_verify_residualfiles(); result | filepath | notes --------+---------------------------+------- t | pgrf_20200908160211441546 | (1 row) |
本函数只能验证记录的文件在当前登录的数据库中是否是残留文件。如果记录的文件不属于当前登录的数据库,则不会进行校验行为。
pgxc_verify_residualfiles()
描述:pg_verify_residualfiles()的CN统一查询函数。该函数为集群级函数,与当前所在的数据库相关,在CN实例上运行。
参数类型:无
返回值类型:record
函数返回字段如下:
名称 |
类型 |
描述 |
---|---|---|
nodename |
text |
节点名称 |
result |
bool |
是否完成验证 |
filepath |
text |
残留文件记录路径 |
notes |
text |
注释 |
示例:
1 2 3 4 5 6 |
SELECT * FROM pgxc_verify_residualfiles(); nodename | result | filepath | notes --------------+--------+---------------------------+------- cn_5001 | t | pgrf_20200910170129360401 | dn_6001_6002 | t | pgrf_20200908160211441546 | (2 rows) |
本函数只能验证记录的文件在当前登录的数据库中是否是残留文件。如果记录的文件不属于当前登录的数据库,则不会进行校验行为。
pg_is_residualfiles(residualfile)
描述:用于查询当前库中指定的relfilenode是否为残留文件。该函数为实例级函数,与当前所在的数据库相关,可以在任意实例上运行。
参数类型:text
返回值类型:bool
函数返回字段如下:
名称 |
类型 |
描述 |
---|---|---|
result |
bool |
是否是残留文件 |
示例:
1 2 3 4 5 |
SELECT * FROM pg_is_residualfiles('base/49155/114691'); result -------- t (1 row) |
本函数只能验证记录的文件在当前登录的database中是否为残留文件。如果记录的文件不属于当前登录的数据库,则会被检测为是残留文件。
例如:针对gaussdb数据库中的非残留文件base/15092/14790,如果在gaussdb库中查询,则认为是非残留文件;在其他数据库中查询,则认为是残留文件。
SELECT * FROM pg_is_residualfiles('base/15092/14790'); result -------- f (1 row) \c db2 db2=# SELECT * FROM pg_is_residualfiles('base/15092/14790'); result -------- t (1 row)