索引一致性检查与修复

使用OmniHBaseGSI全局二级索引工具检查用户数据和索引数据的一致性,如果索引数据与用户数据不一致,可使用工具修复索引数据。

场景介绍

可使用OmniHBaseGSI全局二级索引工具检查用户数据和索引数据的一致性,如果索引数据与用户数据不一致,可用于修复索引数据。

功能说明

请避免在使用该功能的同时进行put/delete操作,会导致结果异常。

索引修复功能主要为put/delete操作时发生的异常情况而设计。对于人为破坏索引表的行为,可能导致无法正确修复,此时推荐删除并重建索引。例如工具会将verified状态的索引列视为正常,如果人为修改了该索引列的覆盖列,该功能是无法检查出来的。

使用方法

使用前需要修改Hadoop配置文件mapred-site.xml,在mapreduce.application.classpath属性中添加HBase的“lib”目录(默认OmniHBaseGSI的JAR包也放在“/usr/local/hbase/lib”中,如果放在其他目录,也需要单独将二级索引JAR包配置到classpath中)。配置完成之后请重启Hadoop和HBase。

执行以下命令可检查数据一致性,若不一致,将重新构建索引数据。一致性检查结果会保存到“default:INDEX_CONSISTENCY_RECORD_TABLE”和“default:INDEX_CONSISTENCY_RECORD_METADATA”表中。

1
hbase com.huawei.boostkit.hindex.mapreduce.consistency.GlobalHIndexConsistencyTool -dt table1 -it idx3 -src BOTH -r

命令参数说明:

  • -dt,--data-table:要进行一致性检查的数据表名称。
  • -it,--index-table:要进行一致性检查的索引名称。
  • 可选:-src,--source:检查模式选择,默认为“BOTH”,支持以下模式。
    • INDEX_TABLE_SOURCE:索引表作为源表。
    • DATA_TABLE_SOURCE:数据表作为源表。
    • BOTH:索引表和数据表均作为源表。
  • 可选:-r,--repair:索引数据修复选项,添加此参数,表示检查后进行修复。
  • 可选:-sc,--scan-caching :一致性检查/修复的MapReduce任务中scan caching大小。
  • 可选:-h, --help:查看一致性工具可用的选项。