GBase 8c V3.0.0数据类型——数据损坏检测修复函数

l gs_verify_data_file(verify_segment bool)

描述:校验当前实例当前库是否存在文件丢失的情况。校验只包括数据表主文件是否有中间段丢失的情况。默认参数是false,表示不校验段页式表数据文件。参数设置为true时仅校验段页式表文件。默认只有初始化用户、具有sysadmin属性的用户以及在运维模式下具有运维管理员属性的用户可以查看,其余用户需要赋权后才可以使用。

返回的结果:

n 非段页式表:rel_oid和rel_name是对应文件的表oid和表名,miss_file_path表示丢失文件的相对路径。

n 段页式表:因所有表存放在相同文件中,所以rel_oid和rel_name无法显示具体表的信息。对于段页式表,如果第一个文件损坏,不会检查出后面的.1 .2等文件。例如3、3.1、3.2损坏,只能检查出3损坏。当段页式文件不足5个时,使用函数检测时,未生成的文件也会校验出来,例如只有1和2文件,校验段页式时,也会检测出3,4,5文件。以下示例,第一个是校验非段页式表的示例,第二是校验段页式表的示例。

参数说明:

n verify_segment

指定文件校验的范围。false校验非段页式表;true校验段页式表。

取值范围:true和false,默认是false。

返回值类型:record

示例:

n 校验非段页式表

 gbase=# select * from gs_verify_data_file();

node_name         | rel_oid |  rel_name    |  miss_file_path

------------------+---------+--------------+------------------

dn_6001_6002_6003 |   16554 |     test     | base/16552/24745

n 校验段页式表

 gbase=# select * from gs_verify_data_file(true);

     node_name     | rel_oid | rel_name | miss_file_path

-------------------+---------+----------+----------------

 dn_6001_6002_6003 |       0 | none     | base/16573/2

l gs_repair_file(tableoid Oid,path text, timeout int)

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

a. 当DN实例上存在文件损坏时,进行升主会校验出错,报PANIC退出无法升主,为正常现象。可在其他DN升主后,通过备DN自动修复进行修复。

b. 当文件存在但是大小为0时,此时不会去修复该文件,若想要修复该文件,需要将为0的文件删除后再修复。

c. 删除文件需要等文件fd自动关闭后再修复,人工操作可以执行重启进程、主备切换命令。

参数说明:

n tableoid

要修复的文件对应的表oid,依据gs_verify_data_file函数返回的列表中rel_oid一列填写。

取值范围: Oid,0 - 4294967295。注意:输入负值等都会被强制转成非负整数类型。

n path

需要修复的文件路径,依据gs_verify_data_file函数返回的列表中miss_file_path一列填写。

取值范围:字符串。

n timeout

等待备DN回放的时长,修复文件需要等待备DN回放到当前主DN对应的位置,根据备DN回放所需时长设定。

取值范围:60s - 3600s。

返回值类型:bool

示例:

 ```

gbase=# select * from gs_repair_file(16554,'base/16552/24745',360);

gs_repair_file

----------------

t

```

l local_bad_block_info()

描述:显示本实例页面损坏的情况。从磁盘读取页面,发现页面CRC校验失败时进行记录。默认只有初始化用户、具有sysadmin属性的用户、具有监控管理员属性的用户以及在运维模式下具有运维管理员属性的用户、以及监控用户可以查看,其余用户需要赋权后才可以使用。

显示信息:file_path是损坏文件的相对路径,如果是段页式表,则显示的是逻辑信息,不是实际的物理文件信息。block_num是该文件损坏的具体页面号,页面号从0开始。check_time表示发现页面损坏的时间。repair_time表示修复页面的时间。

返回值类型:record

示例:

 gbase=# select * from local_bad_block_info();

node_name    | spc_node | db_node | rel_node| bucket_node | fork_num | block_num |    file_path     |  check_time            |   repair_time

-----------------+-------+--------+--------+--------------+----------+-----------+-----------------+--------------------------+-------------------------------

dn_6001_6002_6003|  1663 |  16552 |  24745 |        -1    |    0    | 0        | base/16552/24745 | 2022-01-13 20:19:08.385004+08 | 2022-01-13 20:19:08.407314+08

(1 rows)

l local_clear_bad_block_info()

描述:清理local_bad_block_info中已修复页面的数据,也就是repair_time不为空的信息。默认只有初始化用户、具有sysadmin属性的用户以及在运维模式下具有运维管理员属性的用户、以及监控用户可以查看,其余用户需要赋权后才可以使用。

返回值类型:bool

示例:

 gbase=# select * from local_clear_bad_block_info();

result

--------

t

(1 rows)

l gs_verify_and_tryrepair_page (path text, blocknum oid, verify_mem bool, is_segment bool)

描述:校验本实例指定页面的情况。默认只有在主DN节点上,使用初始化用户、具有sysadmin属性的用户以及在运维模式下具有运维管理员属性的用户可以查看,其余用户需要赋权后才可以使用。

返回的结果信息:disk_page_res表示磁盘上页面的校验结果;mem_page_res表示内存中页面的校验结果;is_repair表示在校验的过程中是否触发修复功能,t表示已修复,f表示未修复。

当DN实例上存在页面损坏时,进行升主会校验出错,报PANIC退出无法升主,为正常现象。可在其他DN升主后,通过备DN自动修复进行修复。

参数说明:

n path

损坏文件的路径。依据local_bad_block_info中file_path一列填写。

取值范围:字符串。

n blocknum

损坏文件的页号。依据local_bad_block_info中block_num一列填写。

取值范围:Oid,0 - 4294967295。注意:输入负值等都会被强制转成非负整数类型。

n verify_mem

指定是否校验内存中的指定页面。设定为false时,只校验磁盘上的页面。设置为true时,校验内存中的页面和磁盘上的页面。如果发现磁盘上页面损坏,会将内存中的页面做一个基本信息校验刷盘,修复磁盘上页面。如果校验内存页面时发现页面不在内存中,会经内存接口读取磁盘上的页面。此过程中如果磁盘页面有问题,则会触发远程读自动修复功能。

取值范围:bool,true和false。

n is_segment

是否是段页式表。根据local_bad_block_info中的bucket_node列值决定。如果bucket_node为-1时,表示不是段页式表,将is_segment设置为false;非-1的情况将is_segment设置为true。

取值范围:bool,true和false。

返回值类型:record

示例:

 gbase=# select * from gs_verify_and_tryrepair_page('base/16552/24745',0,false,false);

node_name         |       path      |  blocknum  |        disk_page_res        | mem_page_res | is_repair

------------------+------------------+------------+-----------------------------+---------------+----------

dn_6001_6002_6003 | base/16552/24745 |     0      | page verification succeeded.|              | f

l gs_repair_page(path text, blocknum oid, is_segment bool, timeout int)

描述:修复本实例指定页面,仅支持有正常主备连接的主DN使用。页面修复成功返回true,修复过程中出错会有报错信息提示。默认只有在主DN节点上,使用初始化用户、具有sysadmin属性的用户以及在运维模式下具有运维管理员属性的用户可以查看,其余用户需要赋权后才可以使用。

当DN实例上存在页面损坏时,进行升主会校验出错,报PANIC退出无法升主,为正常现象。可在其他DN升主后,通过备DN自动修复进行修复。

参数说明:

n path

损坏页面的路径。根据local_bad_block_info中file_path一列设置,或者是gs_verify_and_tryrepair_page函数中path一列设置。

取值范围:字符串。

n blocknum

损坏页面的页面号。根据local_bad_block_info中block_num一列设置,或者是gs_verify_and_tryrepair_page函数中blocknum一列设置。

取值范围:Oid,0 - 4294967295。注意:输入负值等都会被强制转成非负整数类型。

n is_segment

是否是段页式表。根据local_bad_block_info中的bucket_node列值决定,如果bucket_node为-1时,表示不是段页式表,将is_segment设置为false;非-1的情况将is_segment设置为true。

取值范围:bool,true或者false。

n timeout

等待备DN回放的时长。修复页面需要等待备DN回放到当前主DN对应的位置,根据备DN回放所需时长设定。

取值范围:60s - 3600s。

返回值类型:bool

示例:

 gbase=# select * from gs_repair_page('base/16552/24745',0,false,60);

result

--------

t

(1 row)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 要导入表数据gbase 8c数据库,可以使用以下步骤: 1. 准备数据库和表结构: 在gbase 8c中创建数据库和表结构,确保表结构与要导入的数据匹配。 2. 准备数据文件: 将要导入的数据保存为文本文件,确保数据文件的格式与表结构中的列对应。 3. 使用gbase 8c命令行工具: 打开gbase 8c命令行工具,登录到数据库。 4. 使用load data命令: 在gbase 8c命令行工具中使用load data命令导入数据。例如,假设要导入的数据文件名为data.txt,表名为table1,可以使用以下命令导入数据: ``` load data local infile 'data.txt' into table table1; ``` 这将把data.txt文件中的数据导入到table1表中。 5. 检查导入结果: 导入完成后,可以使用select语句检查已导入的数据是否正确。例如,可以使用以下命令检查table1表中的数据: ``` select * from table1; ``` 如果数据导入成功,将会显示导入的数据。 需要注意的是,导入数据时需要确保数据文件的格式与表结构的列对应,否则可能会导致导入失败或数据错误。此外,还可以使用其他方法如使用ETL工具或编写脚本来导入数据,在实际操作中可以根据具体需求选择合适的方法。 ### 回答2: 要导入gbase 8c的表数据,可以按照以下步骤进行操作: 1. 首先,在gbase 8c的客户端工具中登录到目标数据库。 2. 使用 "source" 命令指定表数据的来源文件路径。例如,假设表数据文件名为 "data.txt",该文件位于 "/home/user/data/" 目录下,则可以使用以下命令导入数据: `source /home/user/data/data.txt;` 3. 确保指定的数据文件路径和文件名正确,并且文件可以在当前登录的服务器上访问。 4. 执行以上命令后,gbase 8c将开始导入数据。可以使用 "show processlist;" 命令来查看导入进程的状态和进度。 5. 导入过程中,可以根据需要设置导入的配置选项,如并发线程数、批量提交大小等,以优化导入性能。具体的配置选项可以在导入命令之前设置。 需要注意的是,导入数据过程中需要确保表结构与数据文件的格式相匹配,否则可能导致导入失败或数据错误。在导入之前,可以使用DESCRIBE命令来查看表的结构信息,以确保数据文件与表结构一致。 另外,还可以使用其他工具或脚本来导入数据,如使用LOAD DATA命令、使用ETL工具等。在选择合适的导入方式时,可以根据实际需求和具体情况进行选择。 ### 回答3: gbase 8c 是一个关系型数据库管理系统,用于存储和管理数据。要导入表数据gbase 8c 数据库中,可以按照以下步骤进行操作: 1. 准备数据文件:首先,需要准备一个包含要导入的数据的文件,可以是 CSV、TXT 或其他格式的文件。确保文件的格式符合 gbase 8c 数据库的要求。 2. 创建目标表:在 gbase 8c 数据库中,首先需要创建一个目标表,用于存储导入的数据。可以使用 gbase 8c 提供的 CREATE TABLE 语句来创建表,定义表的结构和列的属性。 3. 导入表数据:接下来,可以使用 gbase 8c 提供的 LOAD DATA 语句来导入表数据。该语句的基本语法如下: LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'data_file' [REPLACE | IGNORE] INTO TABLE tbl_name [PARTITION (partition_name[, partition_name] ...)] [IGNORE number {LINES | ROWS}] [SET col_name = expr, ...] 在语法中,data_file 为前面准备的数据文件的路径和文件名,tbl_name 为目标表的名称。语句中的其他参数根据需求进行设置。例如,可以使用 IGNORE 关键字来忽略数据文件中的错误行。 4. 等待导入完成:一旦执行 LOAD DATA 语句,系统将开始导入表数据。根据数据文件的大小和服务器的性能,导入时间可能会有所不同。在导入过程中,请耐心等待,直到导入完成。 需要注意的是,在导入表数据之前,请确保数据文件中的数据与表的结构相匹配,以避免错误或数据丢失。另外,还可以根据需要调整 LOAD DATA 语句中的参数,以满足特定的导入需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值