云数据库 GAUSSDB-数据损坏检测修复函数:gs_repair_file(tableoid Oid, path text, timeout int)

时间:2025-07-25 09:28:53

gs_repair_file(tableoid Oid, path text, timeout int)

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

  1. 当DN实例上存在文件损坏时,进行升主会校验出错,报PANIC退出无法升主,为正常现象。
  2. 当文件存在但是大小为0时,此时不会去修复该文件,若想要修复该文件,需要将为0的文件删除后再修复。
  3. 删除文件需要等文件句柄(fd,file descriptor)自动关闭后再修复,人工操作可以执行重启进程,主备切换等命令。
  4. 该修复函数要求主备机待修复的文件路径应保持一致,如果不一致,则修复失败。也就是说,如果使用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
support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0411.html