持久化存儲系統ttserver的安裝配置

持久化存儲系統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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章