持久化存储系统ttserver的安装配置 原文地址:http://www.ttlsa.com/archives/246

一.ttserver介绍

Tokyo Cabinet是日本人开发的一款DBM数据库,读写速度非常快。Tokyo Tyrant也是由同一作者开发的Tokyo Cabinet网络接口,兼容memcached协议,也可以通过http协议进行数据交换。

Tokyo Tyrant加上Tokyo Cabinet构成一款支持高并发的分布式持久存储系统,对任何memcached客户端来说,可以将Tokyo Tyrant当作是一个memcached服务,但是ttserever数据是持久存储的。同时ttserver支持互为主辅模式,实现故障转移。


 

二.ttserver安装

1.安装Tokyo Cabinet

# wget http://fallabs.com/tokyocabinet/tokyocabinet-1.4.47.tar.gz

# tar zxvf tokyocabinet-1.4.47.tar.gz -C ../software/

# cd ../software/tokyocabinet-1.4.47/

# ./configure --prefix=/usr/local/ttserver/tokyocabinet-1.4.47

# make

# make install


 

2.安装Tokyo Tyrant

# wget http://fallabs.com/tokyotyrant/tokyotyrant-1.1.41.tar.gz

# tar zxvf tokyotyrant-1.1.41.tar.gz -C ../software/

# cd ../software/tokyotyrant-1.1.41/

# ./configure --prefix=/usr/local/ttserver/tokyotyrant-1.1.41 --with-tc=/usr/local/ttserver/tokyocabinet-1.4.47

# make

# make install


 

三.启动ttserver

1.创建数据文件存放目录

# mkdir /ttdata


 

2.设置文件描述符大小

# vim /etc/security/limits.conf 

*               soft    nofile          204800

*               hard    nofile          204800

# ulimit -u 204800 -HSn 204800

或写入/etc/profile里面,这样每次用户登录进来都会执行这个文件。


 

3.ttserver参数注释

-host name : 绑定主机名或IP地址 

-port num : 绑定端口号,默认1978

-thnum num : 指定线程数,默认8

-tout num : 指定每个会话的超时时间,单位s,默认永不超时 

-dmn : 以守护进程运行

-pid path : PID文件 

-kl : 如果检测到进程ID文件,杀死现有的进程 

-log path : 日志文件 

-ld : 记录debug信息 

-le : 记录error信息 

-ulog path : 指定更新日志目录

-ulim num : 指定每个更新日志文件的大小 

-uas : 使用异步I/O更新日志。使用此项会减少磁盘IO消耗,但是数据会先放在内存中,不会立即写入磁盘,如果重启服务器或ttserver进程被kill掉,将导致部分数据丢失。

-sid num : 指定服务器ID 

-mhost name : 指定复制主服务器的主机名

-mport num : 指定复制主服务器的端口号 

-rts path : 指定存放复制时间戳文件

-rcc : 检查复制的一致性

-skel name : 指定skeleton数据库的库名称

-mul num : 指定多个数据库机制的分裂次数

-ext path : 指定扩展的脚本文件 

-extpc name period : 指定函数的名称和调用命令时间

-mask expr : 指定禁用命令的名称

-unmask expr : 指定允许命令的名称 


 

4.数据库类型

支持的数据库类型有on-memory hash database, on-memory tree database, hash database, and B+ tree database。如果没有指定dbname,那么默认就是hash数据库。

数据库的命名约定是由Tokyo Cabinet的抽象API指定。

如果数据库名称是"*",表示内存hash数据库。

如果数据库名称是"+",表示内存tree数据库。

如果数据库名称是".tch"结尾,表示数据库是hash数据库。

如果数据库名称是".tcb"结尾,表示数据库是B+tree数据库。

如果数据库名称是".tcf"结尾,表示数据库是fixed-length数据库。

如果数据库名称是".tct"结尾,表示数据库是table数据库。


 

数据库的调整参数通过数据库名的延伸来指定,通过"#"分开,每个参数通过一个参数名和值来指定,用"="隔开。

内存hash数据库支持"bnum","capnum"和"capsiz"。

内存tree数据库支持"capnum"和"capsiz"。

hash数据库支持"mode","bnum","APOW","fpow","OPTS","rcnum","xmsiz"和"dfunit"。

B+tree数据库"mode","lmemb","nmemb","bnum","APOW","fpow","OPTS","lcnum","ncnum","xmsiz"和"dfunit"。

fixed-length数据库支持"mode", "width"和"limsiz"。

table数据库支持"mode", "bnum", "apow", "fpow", "opts", "rcnum", "lcnum", "ncnum", "xmsiz", "dfunit"和"idx"。  


 

"capnum"指定记录数的能力。

"capsize"指定使用的内存容量的大小。

"mode"包含w写write,r读reader,c创建creating,t截取truncating,e不锁定no locking,f非阻塞锁non-blocking lock,默认是wc。

"opts"包含l大large,d缩小deflate,b BZIP2,t TCBS。

"idx"指定索引和它的类型分隔的列名":"。例如"casket.tch#bnum=1000000#opts=ld"数据库文件名是casket.tch,bucket大小是1000000,opts选项是large和deflate.


 

4.单机模式

# ./ttserver -host 127.0.0.1 -port 1978 -thnum 8 -tout 30 -dmn -pid /ttdata/tt.pid -kl -log /ttdata/tt.log -le -ulog /ttdata -ulim 128m -sid 1 -rts /ttdata/tt.rts /ttdata/ttdb.tch


 

# cat tt.log 

2011-08-02T19:21:47-08:00       SYSTEM  --------- logging started [9356] --------

2011-08-02T19:21:47-08:00       SYSTEM  process ID configuration: path=/ttdata/tt.pid pid=9356

2011-08-02T19:21:47-08:00       SYSTEM  server configuration: host=127.0.0.1 port=1978

2011-08-02T19:21:47-08:00       SYSTEM  maximum connection: 1048575

2011-08-02T19:21:47-08:00       SYSTEM  opening the database: /ttdata/ttdb.tch

2011-08-02T19:21:47-08:00       SYSTEM  update log configuration: path=/ttdata limit=134217728 async=0 sid=1

2011-08-02T19:21:47-08:00       SYSTEM  service started: 9356

2011-08-02T19:21:47-08:00       SYSTEM  listening started


 

5.互为主从模式

【node1】

# ./ttserver -host 127.0.0.1 -port 1978 -thnum 8 -tout 30 -dmn -pid /ttdata/tt.pid -kl -log /ttdata/tt.log -le -ulog /ttdata -ulim 128m -sid 1 -mhost 192.168.1.136 -mport 1978 -rcc  -rts /ttdata/tt.rts /ttdata/ttdb.tch

【node2】

# ./ttserver -host 127.0.0.1 -port 1978 -thnum 8 -tout 30 -dmn -pid /ttdata/tt.pid -kl -log /ttdata/tt.log -le -ulog /ttdata -ulim 128m -sid 2 -mhost 192.168.1.189 -mport 1978 -rcc  -rts /ttdata/tt.rts /ttdata/ttdb.tch


 

四.管理ttserver

ttservctl start  //启动

ttservctl stop   //关闭

ttservctl restart //重启

ttservctl hup //日志轮转


 

五.常见错误

【问题1】

configure: error: bzlib.h is required

解决办法

# apt-get install apt-file

# apt-file update

# apt-file search bzlib.h

libbz2-dev: /usr/include/bzlib.h

libcomplearn1-headers: /usr/include/complearn-1.0/complearn/complearn-rcbzlib.h

# apt-get install libbz2-dev

【问题2】

configure: error: zlib.h is required

# apt-get install zlib1g-dev

持久化存储系统ttserver的安装配置 原文地址:http://www.ttlsa.com/archives/246