Tokyo Tyrant安装和配置

简介:

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依赖

1
yum  install  -y zlib-devel  bzip2 -devel

如果不安装,可能会碰到如下错误:

1
configure: error: bzlib.h is required

 

2.安装Tokyo Cabinet

1
2
3
4
5
6
7
cd  /tmp
wget http: //fallabs .com /tokyocabinet/tokyocabinet-1 .4.48. tar .gz
tar  zxvf tokyocabinet-1.4.48. tar .gz
cd  tokyocabinet-1.4.48
. /configure  --prefix= /usr/local/ttserver/tokyocabinet
make
make  install


注意:在32位操作系统下,作为 Tokyo Tyrant 后端存储的 Tokyo Cabinet 数据库单个文件不能超过2G,而64位操作系统则不受这一限制。

所以,如果使用 Tokyo Tyrant,推荐在64CPU、操作系统上安装运行。

在编译Tokyo cabinet的时候,使用如下编译选项就可以突破2G限制:--enable-off64

 

3.安装Tokyo Tyrant

1
2
3
4
5
cd  /tmp
wget http: //fallabs .com /tokyotyrant/tokyotyrant-1 .1.41. tar .gz
tar  zxvf tokyotyrant-1.1.41. tar .gz
cd  tokyotyrant-1.1.41
. /configure  --prefix= /usr/local/ttserver/tokyotyrant  --with-tc= /usr/local/ttserver/tokyocabinet


如果不指定--with-tc,可能会报如下错误:

1
configure: error: tcutil.h is required
1
2
make
make  install

 

4.查看参数

1
2
cd  /usr/local/ttserver/
. /tokyotyrant/bin/ttserver  -h
1
2
3
./tokyotyrant/bin/ttserver: the server of Tokyo Tyrant
usage:
./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参数注释:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
-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.创建数据文件存放目

1
2
3
mkdir  -p  /ttserver/data  #数据文件
mkdir  -p  /ttserver/ulog  #同步日志
mkdir  -p  /ttserver/log  #日志文件

 

2.设置文件描述符大小

1
vim  /etc/security/limits .conf

* soft nofile 204800

* hard nofile 204800

1
ulimit  -u 204800 -HSn 204800

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

 

3.配置全局参数

1
vi  /etc/profile

在里面加入

export PATH="$PATH:/usr/local/ttserver/tokyotyrant/bin:/usr/local/ttserver/tokyotyrant/sbin"

1
2
/etc/profile
echo  $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) 单机模式

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上执行:

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 110 -mhost 192.168.11.52 -mport 11211 -rts  /ttserver/ttserver .rts  /ttserver/data/casket .tch

在192.168.11.52上执行:

1
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,设置相关参数:

(以单机模式配置为示例)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#! /bin/sh
#---------------------------------------------------------------- # Startup script for the server of Tokyo Tyrant
#----------------------------------------------------------------
# configuration variables
prog="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.验证启动成功

1
2
ps  aux |  grep  ttserver
telnet 192.168.11.51 1978
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
Trying 192.168.11.51...
Connected to 192.168.11.51.
Escape character is '^]'.
stats
STAT pid 20553
STAT uptime 67
STAT time 1430991715
STAT version 1.1.41
STAT pointer_size 64
STAT rusage_user 0.011998
STAT rusage_system 0.018997
STAT cmd_set 0
STAT cmd_set_hits 0
STAT cmd_set_misses 0
STAT cmd_delete 0
STAT cmd_delete_hits 0
STAT cmd_delete_misses 0
STAT cmd_get 0
STAT cmd_get_hits 0
STAT cmd_get_misses 0
STAT cmd_flush 0
STAT curr_items 0
STAT total_items 0
STAT bytes 4198720
STAT threads 8
END
quit
Connection closed by foreign host.
















本文转自UltraSQL51CTO博客,原文链接:http://blog.51cto.com/ultrasql/1643955  ,如需转载请自行联系原作者


相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
存储 缓存 NoSQL
Derek解读Bytom源码-持久化存储LevelDB
作者:Derek 简介 Github地址:https://github.com/Bytom/bytom Gitee地址:https://gitee.com/BytomBlockchain/bytom 本章介绍Derek解读-Bytom源码分析-持久化存储LevelDB 作者使用MacOS操作系统,其他平台也大同小异 Golang Version: 1.8 LevelDB介绍 比原链默认使用leveldb数据库。
1955 0
|
存储 SQL NoSQL
九爷带你了解 带你了解 Nosql Redis ttserver Flare memcache比较
Nosql Redis ttserver Flare memcache比较 随着互联网web2.0网站的兴起,非关系型的数据库现在成了一个极其热门的新领域,非关系数据库产品的发展非常迅速。
1537 0
|
缓存 测试技术 Memcache
艾伟_转载:分布式缓存BeIT Memcached简介
或许你还没有用到过分布式缓存,在web集群的情况下,它可以很好的让一部分常用数据常驻服务器内存而不用担心各台web不同步。下面稍微介绍一下beitmemcached对于.net的支持,官方参考http://code.google.com/p/beitmemcached/ 一个完整的操作步骤:1、点击上面页面的downloads,把Memcached_1.2.5.zip 和BeITMemcached_source_2008_05_31.zip两个压缩包下在下来。
2364 0
|
NoSQL API Redis
|
存储 Memcache 前端开发