本节介绍Tokyo Tyrant的服务器程序。
三. 服务器程序
1) ttserver
命令'ttserver'运行服务器端管理一个数据库实例。因为数据库被视为Tokyo Cabinet的抽象API,你可以在服务器启动时选择方案。支持的方案有on-memory hash database,on-memory tree database,hash database,和 B+ tree database. 这个命令的使用格式如下。'dbname'指定数据库名称。缺省使用on-memory hash database。
ttserver[-hostname][-portnum][-thnumnum][-toutnum][-dmn][-pidpath][-kl][-logpath][-ld|-le][-ulogpath][-ulimnum][-uas][-sidnum][-mhostname][-mportnum][-rtspath][-rcc][-skelname][-mulnum][-extpath][-extpcnameperiod][-maskexpr][-unmaskexpr][dbname]
选项说明如下:
-host name : 指定服务器的主机名或地址。默认,每个网络地址都将被绑定
-port num : 指定端口号。默认为1978
-thnum num : 指定工作线程。默认为8
-tout num : 指定每个会话(session)的超时时间,单位秒。默认不超时。
-dmn : 作为守护进程工作
-kl : 如果发现进程id文件存在,杀死已存在的进程
-ld : 将debug信息写入日志文件
-ulog path : 指定更新日志目录
-ulim num : 指定每个更新日志文件的大小限制
-uas : 为更新日志使用异步I/O
-sid num : 指定服务器ID
-mhost name : 指定复制主服务器的主机名
-mport num : 指定复制主服务器的端口号
-rts path : 指定复制时间戳文件
-rcc : 检查复制的一致性
-skel name : 指定骨架(skeleton,基本?)数据库类库的名称
-ext path : 指定脚本语言扩展文件
-extpc name period : 指定周期命令的函数名和调用周期
-mask expr : 指定禁用命令的名称
-unmask expr : 指定容许使用的命令的名称
发送SIGINT或SIGTERM到进程可正常关闭服务器。也可以在控制终端中按Ctrl-C。发送SIGHUP可重启服务器。如果端口号不大于0,将使用UNIX domain socket同时socket文件的路径将由主机参数指定。这个命令成功时返回0,失败返回其他。
数据库命名协定由Tokyo Cabinet的抽象API指定。名称为
"*" on-memory hash database
'+' on-memory tree database
".tch"后缀 hash database
".tcb"后缀 B+ tree database
".tcf" fixed-length database
".tct" table database
名字后面可以追加调整参数,用"#"分隔。每个参数由名称和值组成,用"="分隔。
On-memory hash database "bnum","capnum","capsiz"
On-memory tree database "capnum","capsiz"
Hash database "mode","bnum","apow","fpow","opts","rcnum","xmsiz","dfunit"
B+ tree database "mode","lmemb","nmemb","lcnum","ncnum","dfunit"
Fixed-length database "mode","width","limsiz"
Table database "mode","dfunit","idx"
参数名 作用
"bnum" 指定bucket number
"capnum" 指定记录的容量数
"capsiz" 指定使用内存的容量大小. 超过容量的记录将基于存储顺序被删除.
"mode" 可包含"w"/写,"r"/读,"c"/创建,"t"/缩短(truncating),"e"/不加锁,"f"/不阻塞锁. 默认模式为"wc".
"opts" 可包含"l" / large选项,"d" / Deflate选项,"b" / BZIP2 选项,"t" / TCBS 选项
"idx" 指定索引的列名和类型,用":"分隔。例如,"casket.tch#bnum=1000000#opts=ld" 表示数据库文件名是"casket.tch",bucket number 是 1000000,选项是large和Deflate.
命令掩码表达式(command mask expression)是由","分隔的命令列表。例如,"out,vanish,copy"表示"out","vanish"和"copy"的集合。memcached 兼容协议命令和HTTP 兼容协议命令也同样被禁止或容许,和每个初始命令的掩码相关。此外,还有Meta 表达式:
表达式 表示的命令
"all" 所有命令
"allorg" 所有原始二进制协议的命令
"allmc" 所有memcached兼容协议的命令
"allhttp" 所有HTTP兼容协议的命令"allread" 缩写,包括'get','mget','vsiz','iterinit','iternext','fwmkeys','rnum','size','stat'.
"allwrite" 缩写,包括'put','putkeep','putcat','putshl','putnr','out','addint','adddouble','vanish','misc'.
"allmanage" 缩写,包括'sync','optimize','copy','restore','setmst'.
"repl" 作为master复制
"slave" 作为slave复制
2) ttservctl
'ttservctl'命令是服务器的启动脚本。可以被操作系统的启动程序的RC脚本调用。这个命令的使用格式如下:
1. ttservctl start
启动服务器
2. ttservctl stop
停止服务器
3. ttservctl restart
重启服务器
4. ttservctl hup
为日志轮换发送HUP信号到服务器
数据库放置于"/var/ttserver/casket.tch"。日志和相关文件放置于"/var/ttserver"。这个命令成功时返回0,失败时返回其他。
3) ttulmgr
'ttulmgr'命令是导入导出更新日志的工具。对于通过使用文本工具如grep和sed来过滤日志文件非常有用。这个命令的使用格式如下。'upath'指定更新日志目录。
1. ttulmgr export [-ts num] [-sid num] upath
导出更新日志为TSV文本数据到标准输出
2. ttulmgr import upath
从标准输入中导入TSV文本数据到更新日志
选项如下
-ts num : 指定开始的时间戳
-sid num : 指定自己的服务器ID
这个命令成功时返回0,失败时返回其他。