permalink: administration/table-env

功能目标

为了对Table的一些行为进行控制,Pegasus提供了Table环境变量,又称之为app envs

Table环境变量以kv-map的形式存储在Table的元数据app_info中,并持久化到Zookeeper上。通过shell的ls命令查看表信息,最后一列envs_count记录Table环境变量的kv对个数:

>>> ls
app_id    status              app_name            app_type            partition_count     replica_count       is_stateful         drop_expire_time    envs_count          
1         AVAILABLE           temp                pegasus             8                   3                   true                -                   1     

如果要查看具体的Table环境变量,则需要使用get_app_envs命令。

Table环境变量具有如下特性:

  • 作为Table的元数据持久化到Zookeeper上。
  • 可以通过命令动态修改,修改成功后会立即更新到Zookeeper上。
  • 通过meta server和replica server的定期同步消息config_sync同步给各个replica生效。由于是定期同步,所以环境变量更新后不会立即生效,而是有一个同步过程,这个过程的时间依赖于配置文件config_sync_interval_ms的值,默认是30秒。
  • 环境变量的key通过都是采用.分隔的字段的形式,方便组织。

目前通过Table环境变量支持的功能包括:

操作命令

Pegasus的Shell工具中提供了操作Table环境变量的命令。这些命令执行前都需要先执行use xxx选择表。

get_app_envs

获取环境变量列表,用法:get_app_envs

示例:

>>> use temp
OK
>>> get_app_envs
get app envs succeed, count = 1
=================================
rocksdb.usage_scenario = normal
=================================

set_app_envs

设置环境变量,用法:set_app_envs <key> <value> [key value...]

示例:

>>> use temp
OK
>>> set_app_envs rocksdb.usage_scenario bulk_load
set app envs succeed
>>> get_app_envs
get app envs succeed, count = 1
=================================
rocksdb.usage_scenario = bulk_load
=================================

del_app_envs

删除环境变量,用法:del_app_envs <key> [key...]

示例:

>>> use temp
OK
>>> del_app_envs rocksdb.usage_scenario
del app envs succeed
=============================
deleted keys:
    rocksdb.usage_scenario
=============================
>>> get_app_envs
get app envs succeed, count = 0

clear_app_envs

清理环境变量,或者叫批量删除环境变量,用法:clear_app_envs <-a|--all> <-p|--prefix str>

两种方式:

  • 全部清理:使用-a选项。
  • 通过前缀清理:使用-p选项指定前缀,匹配时会先自动在前缀后面加上.,然后按照字符串前缀匹配。

譬如:

>>> use temp
OK
>>> set_app_envs k.x v1 k.y v2
set app envs succeed
>>> get_app_envs
get app envs succeed, count = 2
=================================
k.x = v1
k.y = v2
=================================
>>> clear_app_envs -p k
clear app envs succeed
=============================
deleted keys:
    k.x
    k.y
=============================
>>> get_app_envs
get app envs succeed, count = 0

支持列表

key名称value类型value约束value示例功能说明支持版本
rocksdb.usage_scenariostringnormal | prefer_write | bulk_loadbulk_loadUsage-Scenario1.8.1
replica.deny_client_writebooltrue | falsetrue拒绝写请求1.11.2
replica.write_throttlingstring特定格式1000*delay*100流量控制#表级流控1.11.2
replica.write_throttling_by_sizestring特定格式1000*delay*100流量控制#表级流控1.12.0
default_ttlint>=086400表级TTL1.11.2
manual_compact.disabledbooltrue | falsetrueManual-Compact1.9.0
manual_compact.max_concurrent_running_countint>=010Manual-Compact1.11.3
manual_compact.once.trigger_timeintUnix Timestamp in Seconds1547091115Manual-Compact1.8.1
manual_compact.once.target_levelint-1 | >=12Manual-Compact1.8.1
manual_compact.once.bottommost_level_compactionstringforce | skipforceManual-Compact1.8.1
manual_compact.periodic.trigger_timestring特定格式3:00,5:00Manual-Compact1.8.1
manual_compact.periodic.target_levelint-1 | >=12Manual-Compact1.8.1
manual_compact.periodic.bottommost_level_compactionstringforce | skipforceManual-Compact1.8.1
rocksdb.checkpoint.reserve_min_countint>=12Rocksdb-Checkpoint管理1.11.3
rocksdb.checkpoint.reserve_time_secondsint>=0600Rocksdb-Checkpoint管理1.11.3
business.infostring特定格式(使用utf-8编码)depart=云平台部-存储平台,user=qinzuoyan&wutao1记录表的业务归属信息,可用于生成账单-
replica.slow_query_thresholdint>=2030慢查询阈值1.12.0