
# 修改HBase全局二级索引状态
#### 索引状态介绍
索引状态反映了索引当前的使用情况，全局二级索引支持以下五种状态：
- ACTIVE：索引正常，可以正常读写。
- UNUSABLE：索引被禁用，索引数据会正常写入，查询时无法使用这个索引。
- INACTIVE：索引异常，索引数据与数据表不一致，跳过生成该索引的索引数据，查询数据时无法使用该索引。
- BUILDING：索引数据正常批量生成，索引数据生成工具执行结束会自动转换到ACTIVE状态，此状态下可以正常读写。
- DROPPING：索引正在被删除，跳过生成该索引的索引数据，查询数据时无法使用该索引。
基于工具的索引状态修改，支持[图1]所示的状态转换。
图1索引状态转换图   
![](https://support.huaweicloud.com/cmpntguide-lts-mrs/zh-cn_image_0000001979896485.png "点击放大")
#### 场景介绍
用户可以使用全局二级索引工具禁用/启用某个索引。
#### 修改HBase全局二级索引状态
在HBase客户端执行以下命令可禁用/启用某个索引：
**hbase org.apache.hadoop.hbase.hindex.global.mapreduce.GlobalTableIndexer** **-D** **tablename.to.index** ='*table* ' **-D** \[idx_state_opt\]='*idx1*'
相关参数介绍如下:
- **tablename.to.index**：表示需修改索引状态的数据表的名称。
- **idx_state_opt** ：表示修改索引的目标状态，可选参数如下：
  - **indexnames.to.inactive**：表示将指定的索引转换为INACTIVE状态。
  
  - **indexnames.to.active**：表示将指定的索引转换为ACTIVE状态。
  
  - **indexnames.to.unusable**：表示将指定的索引转换为UNUSABLE状态。
   
例如：修改状态为ACTIVE的**table** 表的索引**idx1**的状态为UNUSABLE：
**hbase org.apache.hadoop.hbase.hindex.global.mapreduce.GlobalTableIndexer -Dtablename.to.index='table' -Dindexnames.to.unusable='idx1'**
执行成功后，再次查看索引信息：
**hbase org.apache.hadoop.hbase.hindex.global.mapreduce.GlobalTableIndexer -Dtablename.to.show='table'**
如[图2]所示，**idx1**的索引状态已被修改：
图2idx1索引状态   
![](https://support.huaweicloud.com/cmpntguide-lts-mrs/zh-cn_image_0000001726402701.png "点击放大")
