Tokyo Tyrant安装和配置
Tokyo Cabinet是日本人开发的一款DBM数据库,读写速度非常快。Tokyo Tyrant也是由同一作者开发的Tokyo Cabinet网络接口,兼容memcached协议,也可以通过http协议进行数据交换。
Tokyo Tyrant加上Tokyo Cabinet构成一款支持高并发的分布式持久存储系统,对任何memcached客户端来说,可以将Tokyo Tyrant当作是一个memcached服务,但是ttserever数据是持久存储的。同时ttserver支持互为主辅模式,实现故障转移。
安装
1.安装zlib.h和bzlib.h依赖
yum install -y zlib-devel bzip2-devel
如果不安装,可能会碰到如下错误:
configure: error: bzlib.h is required
2.安装Tokyo Cabinet
cd /tmpwget http://fallabs.com/tokyocabinet/tokyocabinet-1.4.48.tar.gztar zxvf tokyocabinet-1.4.48.tar.gzcd tokyocabinet-1.4.48./configure --prefix=/usr/local/ttserver/tokyocabinetmakemake install
注意:在32位操作系统下,作为 Tokyo Tyrant 后端存储的 Tokyo Cabinet 数据库单个文件不能超过2G,而64位操作系统则不受这一限制。
所以,如果使用 Tokyo Tyrant,推荐在64位CPU、操作系统上安装运行。
在编译Tokyo cabinet的时候,使用如下编译选项就可以突破2G限制:--enable-off64
3.安装Tokyo Tyrant
cd /tmpwget http://fallabs.com/tokyotyrant/tokyotyrant-1.1.41.tar.gztar zxvf tokyotyrant-1.1.41.tar.gzcd tokyotyrant-1.1.41./configure --prefix=/usr/local/ttserver/tokyotyrant --with-tc=/usr/local/ttserver/tokyocabinet
如果不指定--with-tc,可能会报如下错误:
configure: error: tcutil.h is required
makemake install
4.查看参数
cd /usr/local/ttserver/./tokyotyrant/bin/ttserver -h
./tokyotyrant/bin/ttserver: the server of Tokyo Tyrantusage:./tokyotyrant/bin/ttserver [-host name] [-port num] [-thnum num] [-tout num] [-dmn] [-pid path] [-kl] [-log path] [-ld|-le] [-ulog path] [-ulim num] [-uas] [-sid num] [-mhost name] [-mport num] [-rts path] [-rcc] [-skel name] [-mul num] [-ext path] [-extpc name period] [-mask expr] [-unmask expr] [dbname]
ttserver参数注释:
-host name : 指定需要绑定的服务器域名或IP地址。默认绑定这台服务器上的所有IP地址。-port num : 指定需要绑定的端口号。默认端口号为1978-thnum num : 指定线程数。默认为8个线程.-tout num : 指定每个会话的超时时间(单位为秒)。默认永不超时。-dmn : 以守护进程方式运行。-pid path : 输出进程ID到指定文件(这里指定文件名)。-log path : 输出日志信息到指定文件(这里指定文件名)。-ld : 在日志文件中还记录DEBUG调试信息。-le : 在日志文件中仅记录错误信息。-ulog path : 指定同步日志文件存放路径(这里指定目录名)。-ulim num : 指定每个同步日志文件的大小(例如128m)。-uas : 使用异步IO记录更新日志(使用此项会减少磁盘IO消耗,但是数据会先放在内存中,不会立即写入磁盘,如果重启服务器或ttserver进程被kill掉,将导致部分数据丢失。一般情况下不建议使用)。-sid num : 指定服务器ID号(当使用主辅模式时,每台ttserver需要不同的ID号)-mhost name : 指定主辅同步模式下,主服务器的域名或IP地址。-mport num : 指定主辅同步模式下,主服务器的端口号。-rts path : 指定用来存放同步时间戳的文件名。-rcc : 复制的一致性检查。-skel name : 指定skeleton数据库的库名称。-mul num : 指定多个数据库机制的分区数目。-ext path : 指定脚本语言的扩展文件路径。-extpc name period : 指定函数的名称和周期命令的调用周期。-mask expr : 指定禁止执行的命令。-unmask expr : 指定允许的命令的名称。
配置
1.创建数据文件存放目录
mkdir -p /ttserver/data #数据文件mkdir -p /ttserver/ulog #同步日志mkdir -p /ttserver/log #日志文件
2.设置文件描述符大小
vim /etc/security/limits.conf
* soft nofile 204800
* hard nofile 204800
或
ulimit -u 204800 -HSn 204800
或写入/etc/profile里面,这样每次用户登录进来都会执行这个文件。
3.配置全局参数
vi /etc/profile
在里面加入
export PATH="$PATH:/usr/local/ttserver/tokyotyrant/bin:/usr/local/ttserver/tokyotyrant/sbin"
. /etc/profileecho $PATH
4.启动ttserver
数据库类型由后缀决定,因为我只需要key-value的功能,所以采用功能简单,速度快的hash database
Hash Database :.tch
B+ tree database :.tcb
fixed-length database :.tcf
table database :.tct
内存Hash Database :*
内存B+ tree database :+
1) 单机模式
ttserver -host 192.168.11.51 -port 11211 -thnum 8 -dmn -pid /ttserver/ttserver.pid -log /ttserver/log/ttserver.log -le -ulog /ttserver/ulog -ulim 128m -sid 1 -rts /ttserver/ttserver.rts /ttserver/data/database.tch
2) 互为主辅
在192.168.11.51上执行:
ttserver -host 192.168.11.51 -port 11211 -thnum 8 -dmn -pid /ttserver/ttserver.pid -log /ttserver/log/ttserver.log -le -ulog /ttserver/ulog/ -ulim 128m -sid 110 -mhost 192.168.11.52 -mport 11211 -rts /ttserver/ttserver.rts /ttserver/data/casket.tch
在192.168.11.52上执行:
ttserver -host 192.168.11.52 -port 11211 -thnum 8 -dmn -pid /ttserver/ttserver.pid -log /ttserver/log/ttserver.log -le -ulog /ttserver/ulog/ -ulim 128m -sid 111 -mhost 192.168.11.51 -mport 11211 -rts /ttserver/ttserver.rts /ttserver/data/casket.tch
3) 脚本或服务方式
脚本或服务方式启动,可以配置为单机,也可以配置为主辅。
编辑启动脚本:/usr/local/ttserver/tokyotyrant/sbin/ttservctl,设置相关参数:
(以单机模式配置为示例)
#! /bin/sh#---------------------------------------------------------------- # Startup script for the server of Tokyo Tyrant#----------------------------------------------------------------# configuration variablesprog="ttservctl"cmd="ttserver"basedir="/ttserver/" #数据库目录port="1978" #ttserver端口pidfile="$basedir/pid" #输出进程ID到/ttserver/pid文件logfile="$basedir/log/ttserver.log" #输出日志信息到/ttserver/log/ttserver.log文件ulogdir="$basedir/ulog/" #指定同步日志文件存放路径ulimsiz="256m" #对单个ulog文件限制,超过将新建一个文件sid=110 #server id同mysql,不能有重复的#mhost="192.168.11.52" #指定主辅同步模式下,主服务器的域名或IP地址。#mport="11211" #指定主辅同步模式下,主服务器的端口号。rtsfile="$basedir/rts" #replication的时间记录文件dbname="$basedir/data/casket.tch#bnum=1000000" #xmsiz=最大使用内存”maxcon="65535"retval=0
启动ttserver服务器: ttservctl start
关闭ttserver服务器: ttservctl stop
重启ttserver服务器: ttservctl restart
ttserver服务器日志轮转: ttservctl hup
或者将脚本放到/etc/init.d/目录,作为服务启动。
5.验证启动成功
ps aux | grep ttservertelnet 192.168.11.51 1978
Trying 192.168.11.51...Connected to 192.168.11.51.Escape character is '^]'.statsSTAT pid 20553STAT uptime 67STAT time 1430991715STAT version 1.1.41STAT pointer_size 64STAT rusage_user 0.011998STAT rusage_system 0.018997STAT cmd_set 0STAT cmd_set_hits 0STAT cmd_set_misses 0STAT cmd_delete 0STAT cmd_delete_hits 0STAT cmd_delete_misses 0STAT cmd_get 0STAT cmd_get_hits 0STAT cmd_get_misses 0STAT cmd_flush 0STAT curr_items 0STAT total_items 0STAT bytes 4198720STAT threads 8ENDquitConnection closed by foreign host.