云数据库 GAUSSDB-数据损坏检测修复函数:gs_repair_file(tableoid Oid, path text, timeout int)
gs_repair_file(tableoid Oid, path text, timeout int)
描述:根据传入的参数修复文件,仅支持有正常主备连接的主DN使用。只支持数据表主文件修复,参数依据gs_verify_data_file函数返回的oid和路径填写。段页式表tableoid赋值为0到4294967295的任意值(内部校验根据文件路径判断是否是段页式表文件,段页式表文件则不使用tableoid)。修复成功返回值为true,修复失败会显示具体失败原因。默认只有在主DN节点上,使用初始用户、具有sysadmin属性的用户以及在运维模式下具有运维管理员属性的用户可以查看,其余用户需要赋权后才可以使用。

- 当DN实例上存在文件损坏时,进行升主会校验出错,报PANIC退出无法升主,为正常现象。
- 当文件存在但是大小为0时,此时不会去修复该文件,若想要修复该文件,需要将为0的文件删除后再修复。
- 删除文件需要等文件句柄(fd,file descriptor)自动关闭后再修复,人工操作可以执行重启进程,主备切换等命令。
- 该修复函数要求主备机待修复的文件路径应保持一致,如果不一致,则修复失败。也就是说,如果使用RELATIVE LOCATION表空间,其路径因tblspcversiondir不同,导致路径不同,修复失败。
参数说明:
- tableoid
要修复的文件对应的表oid,依据gs_verify_data_file函数返回的列表中rel_oid一列填写。
取值范围: Oid,0 - 4294967295。注意:输入负值等数值都会被强制转成非负整数类型。
- path
需要修复的文件路径,依据gs_verify_data_file函数返回的列表中miss_file_path一列填写。
取值范围:字符串。
- timeout
等待备DN回放的时长,修复文件需要等待备DN回放到当前主DN对应的位置,根据备DN回放所需时长设定。
取值范围:60s - 3600s。
返回值类型:Boolean
示例(按照gs_verify_data_file的输出填写tableoid和path):
页式存储:
gaussdb=# SELECT * FROM gs_repair_file(16554,'base/16552/24745',360);
gs_repair_file
----------------
t
段页式存储:
gaussdb=# SELECT * FROM gs_repair_file(16554,'base/16573/2',360);
gs_repair_file
----------------
t