./teracli help即可看到相关的命令和使用方法
./teracli create <table-schema> [<tablet-delimiter-file>]
./teracli createbyfile <schema-file> [<tablet-delimiter-file>]
说明:
- table-schema是一个描述表格结构的字符串。
- 表名规范:首字符为字母(大小写均可),
- 有效字符包括大小写的英文字母(a-zA-Z)、数字(0-9)、下划线(_)、连字符(-)、点(.)。 1 <= 有效长度 <=
- 512
- Tera支持在建立表格时预分配若干tablet,tablet分隔的key写在tablet-delimiter-file中,按“\n”分隔。
- 如果表格schema比较复杂,可以将其写入文件中,通过createbyfile命令进行创建。
表格结构中包含表名、locality groups定义、column families定义,一个典型的表格定义如下(可写入文件)
# tablet分裂阈值为4096M,合并阈值为512M
# 三个lg,分别配置为flash、flash、磁盘存储
table_hello <splitsize=4096, mergesize=512> {
lg_index <storage=flash, blocksize=4> {
update_flag <maxversions=1>
},
lg_props <storage=flash, blocksize=32> {
level,
weight
},
lg_raw <storage=disk, blocksize=128> {
data <maxversions=10>
}
}
如果只希望简单的使用tera,对性能没有很高要求,那么schema只需指定表名和所需列名即可(如需要,所有的属性也是可配的):
table_hello {cf0, cf1, cf2}
tera支持高性能的key-value存储,其schema只需指定表名即可,若需要指定存储介质等属性,可选择性添加:
# 表名为key-value,默认storage为disk, splitsize为512M, mergesize为0
./teracli create kv_hello
# 配置若干属性
./teracli create "kv_hello <storage=flash, splitsize=2048, mergesize=128>"
span | 属性名 | 意义 | 有效取值 | 单位 | 默认值 | 其它说明 |
---|---|---|---|---|---|---|
table | splitsize | 某个tablet增大到此阈值时分裂为2个子tablets | >=0,等于0时关闭split | MB | 512 | |
table | mergesize | 某个tablet减小到此阈值时和相邻的1个tablet合并 | >=0,等于0时关闭merge | MB | 0 | |
splitsize至少要为mergesize的3倍,建议为mergesize的10倍,避免merge后又分裂 | ||||||
lg | storage | 存储类型 | "disk" / "flash" / "memory" | - | "disk" | |
lg | blocksize | LevelDB中block的大小 | >0 | KB | 4 | |
lg | use_memtable_on_leveldb | 是否启用内存compact | "true" / "false" | - | false | |
lg | sst_size | 第一层sst文件大小 | >0 | MB | 8 | |
cf | maxversions | 保存的最大版本数 | >0 | - | 1 | |
cf | ttl | 数据有效时间 | >=0,等于0时此数据永远有效 | second | 0 | |
和minversions冲突时以minversions为准 |
更新时使用schema语法和建表时的语法基本一致, 不同主要在于更新时只需指定要更新的属性,不需要改动的属性无需列出。
./teracli update <tableschema>
主要分为两大类更新:
- 更新table模式schema
- 更新kv模式schema
支持表格、cf属性热更新
./teracli update "table_hello<mergesize=512>" //更新mergesize
./teracli update "table_hello<splitsize=1024,mergesize=128>" //更新mergesize和splitsize
./teracli disable table_hello
./teracli update "table_hello{lg0<sst_size=9>}"
./teracli update "table_hello<splitsize=1536>{lg0<sst_size=9>}" //也可以同时修改table属性
./teracli update "table_hello{lg0{cf0<ttl=999>}}"
#也可以同时修改table或者lg属性
./teracli update "table_hello<splitsize=512>{lg0<sst_size=9>{cf0<ttl=999>}}"
# 在lg0下增加cf1,并设置属性ttl值为123.
# op意为操作,op=add需要放在cf属性的最前面
./teracli update "table_hello{lg0{cf1<op=add,ttl=123>}}"
# 从lg0中删除cf1
./teracli update "table_hello{lg0{cf1<op=del>}}"
# 更新部分属性时需要disable表格,程序会在运行时给出提示
./teracli update "kv_hello<splitsize=1024>"
将处于disable状态的表格重新enable,恢复读、写服务。
./teracli enable <tablename>
将处于表格置于disable状态,不再提供读、写服务。
./teracli enable <tablename>
删除处于disable状态的表格,此操作不可回滚。
./teracli drop <tablename>
#语法:
./teracli rename <old table_name> <new table_name>
示例:
./teracli rename tb1 tb2
向表中写入以rowkey为key,列为columnfamily:qualifier的值value.对于kv模式的表来说,无需columnfamily:qualifier.
#语法:
./teracli put <tablename> <rowkey> [<columnfamily:qualifier>] <value>
示例:
./teracli put mytable rowkey cf0:qu0 value
#语法:
./teracli put-ttl <tablename> <rowkey> [<columnfamily:qualifier>] <value> <ttl(second)>
示例:
#这个value在20秒内有效,超时就读不到了。
./teracli put-ttl mytable rowkey cf0:qu0 value 20
#语法:
./teracli putif <tablename> <rowkey> [<columnfamily:qualifier>] <value>
#语法:
./teracli get <tablename> <rowkey> [<columnfamily:qualifier>]
示例:
#这个value在20秒内有效,超时就读不到了。
./teracli get mytable rowkey cf0:qu0
将表中key从[startkey, endkey)范围的所有数据扫描出来。 每个value可以有多个版本(versions),scan命令默认只输出每个value的最新版本, 想要获取全部版本可以使用scanallv命令。
#语法:
./teracli scan[allv] <tablename> <startkey> <endkey>
示例:
#扫描整个表
./teracli scan mytable "" ""
如果只想删除某列最新的一个版本可以用delete1v命令。
#语法:
./teracli delete[1v] <tablename> <rowkey> [<columnfamily:qualifier>]
#语法:
./teracli put_counter <tablename> <rowkey> [<columnfamily:qualifier>] <integer(int64_t)>
示例:
#写入一个初始值为3的计数器:
./teracli put_counter mytable rowkey cf0:qu0 3
#语法:
./teracli get_counter <tablename> <rowkey> [<columnfamily:qualifier>]
示例:
#读取之前写入的那个counter:
./teracli get_counter mytable rowkey cf0:qu0
#语法:
./teracli add <tablename> <rowkey> <columnfamily:qualifier> delta
示例:
#读取之前写入的那个counter:
./teracli get_counter mytable rowkey cf0:qu0
#语法:
./teracli putint64 <tablename> <rowkey> [<columnfamily:qualifier>] <integer(int64_t)>
示例:
#写入一个初始值为67的计数器:
./teracli putint64 mytable row1 cf0:qu0 67
#语法:
./teracli getint64 <tablename> <rowkey> [<columnfamily:qualifier>]
示例:
./teracli getint64 mytable row1 cf0:qu0
#语法:
./teracli addint64 <tablename> <rowkey> <columnfamily:qualifier> delta
示例:
#对之前写入的counter执行-3的操作:
# addint64操作执行完以后,该counter的值为 64
./teracli addint64 mytable row1 cf0:qu0 -3
#语法:
./teracli append <tablename> <rowkey> [<columnfamily:qualifier>] <value>
示例:
./teracli put mytalbe rowkey cf0:qu0 hello
./teracli append mytable rowkey cf0:qu0 world
#此时再去get会得到helloworld
./teracli get mytable rowkey cf0:qu0
#语法:
./teracli batchput <tablename> <input file>
#语法:
./teracli batchget <tablename> <input file>
#语法:
./teracli show[x] [<tablename>]
示例:
#查看某个table的信息:
./teracli show mytable
#查看集群内所有table的信息:
./teracli show
#语法:
./teracli show[x] [<tablename>]
示例:
#查看某个table的信息:
./teracli showx mytable
表格schema里含有很多属性(例如某个cf保留的最小版本数),创建表格时,没有显示指定的属性都取默认值, 这些属性在showschema时不会显示出来;想要显示全部属性,可以使用showschemax命令。
#语法:
./teracli showschema[x] <tablename>
带上后缀'x'得到的信息会更详细(showtsx)。
#语法:
./teracli showts [<tabletnode_addr>]
示例:
#显示某个tabletnode的信息:
./teracli showts "example.company.com:7770"
#显示集群内所有tabletnode的信息:
./teracli showts
#语法:
./teracli range <tablename>
#语法:
./teracli txn <operation> <params>
operation包括start和commit
./teracli txn start <tablename> <row_key>
./teracli txn commit
#语法:
./teracli user <operation> <params>
operation包括create、changepwd、show、delete、addtogroup和deletefromgroup
user <operation> <params>
create <username> <password>
changepwd <username> <new-password>
show <username>
delete <username>
addtogroup <username> <groupname>
deletefromgroup <username> <groupname>
#语法:
./teracli tablet <operation> <params>
operation包括move、reload、compact、split、merge和scan
tablet <operation> <params>
move <tablet_path> <target_addr>
reload <tablet_path>
force to unload and load on the same ts
compact <tablet_path>
split <tablet_path>
merge <tablet_path>
scan <tablet_path>
#语法:
./teracli compact <tablename>
#语法:
./teracli safemode [get|enter|leave]
meta for master memory, meta2 for meta table.
#语法:
./teracli meta[2] [backup|check|repair|show]
#语法:
./teracli findmaster
#语法:
./teracli reload config hostname:port
#语法:
./teracli kick <tablename>
#语法:
./teracli findtablet <tablename> <rowkey-prefix>
./teracli findtablet <tablename> <start-key> <end-key>
#语法:
./teracli cookie <command> <args>
cookie <command> <args>
dump cookie-file -- dump contents of specified files
findkey cookie-file key -- find the info of a key
#语法:
./teracli version