亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 服務器 > 管理維護 > 正文

輕量級持久存儲系統 MemcacheDB 詳細介紹

2024-09-10 14:19:00
字體:
來源:轉載
供稿:網友

注:memcached可能簡稱mc,memcachedb可能簡稱mcdb
一、memcachedb是什么
mcdb是一款分布式鍵值持久存儲系統,由新浪開源。mcdb基于mc協議,所以可以使用mc客戶端直接使用,存儲引擎方面使用Berkeley DB,支持主從復制模式。

二、memcachedb的應用場景
首先,我們從基本的數據存儲的角度看mysql、memcached、memcachedb的區別和特點,當然它們肯定不只這點區別。

mc因為是非持久存儲的,所以它的定位就是緩存。
而mcdb不是用來做緩存的,它是和mysql同個層次的東西。不一樣的是,mcdb性能要比mysql高,而mysql檢索功能比mcdb強。如果非要從緩存的角度看的話,那mc就是緩解mysql讀壓力,而mcdb則是緩解mysql寫壓力。
mcdb適合應用的場景:
1.瀏覽/點擊/等統計,也可以局部代替mysql的count函數
2.標志,例如,JE的“我在干什么”功能
3.頻繁寫的地方,訪客列表、評論之類的
之前,我寫過的feed設計最大特點是使用mcdb來分散寫壓力,對sns來說動態產生太頻繁了,全部寫進mysql壓力太大了,畢竟讀/寫1K和100K性能不是一樣的,一臺mcdb和一臺mysql的成本不一樣啊。。
雖然mcdb的方式比較簡單,但是應用場合還是很豐富的,使用新產品要發散思維,充分發揮想象力~
不過重要的數據還是不建議使用,感覺還不是很放心。

三、安裝
安裝MemcacheDB之前需要安裝Libevent和Berkeley Db
1.先安裝libevent
下載地址: http://www.monkey.org/~provos/libevent/

tar zxvf libevent- 1.4 . 9 -stable.tar.gz   
cd libevent-1.4 . 9 -stable   
./configure   
make   
make install  
tar zxvf libevent-1.4.9-stable.tar.gz
cd libevent-1.4.9-stable
./configure
make
make install
2.安裝Berkeley Db
下載地址:http://www.oracle.com/technology/software/products/berkeley-db/index.html

tar xvzf db-4.7.25 .tar.gz  
cd db-4.7 . 25 /  
cd build_unix/  
../dist/configure  
make  
make install  
tar xvzf db-4.7.25.tar.gz
cd db-4.7.25/
cd build_unix/
../dist/configure
make
make install
安裝完后,編輯/etc/ld.so.conf把

usr/local/lib  
/usr/local/BerkeleyDB.4.7 /lib  
usr/local/lib
/usr/local/BerkeleyDB.4.7/lib
3.安裝memcachedb
下載地址:http://code.google.com/p/memcachedb/downloads/list

tar xvzf memcachedb-1.2 . 0 .tar.gz  
cd memcachedb-X.Y.Z  
./configure --enable-threads  
make  
make install  
tar xvzf memcachedb-1.2.0.tar.gz
cd memcachedb-X.Y.Z
./configure --enable-threads
make
make install
4.創建數據保存點

mkdir /data/ 21201 -p  
chown -R willko:wheel  
mkdir /data/21201 -p
chown -R willko:wheel

四、使用
1.單機模式

memcachedb -u willko -p 21201 -d -r -H /data/ 21201 / -v >/data/ 21201 .log 2 >& 1   
memcachedb -u willko -p 21201 -d -r -H /data/21201/ -v >/data/21201.log 2>&1
2.主從模式 

memcachedb -p 21210 -d -r -u willko -H /data/21210_m -N -R 127.0 . 0.1 : 31210 -M   
主服務器,用31210 來同步數據  
  
memcachedb -p 21211 -d -r -u willko -H /data/21211_from_local_21210 -N -R 127.0 . 0.1 : 31211 -O 127.0 . 0.1 : 31210 -S  
從服務器,主從模式-R是必須設置的。  
memcachedb -p 21210 -d -r -u willko -H /data/21210_m -N -R 127.0.0.1:31210 -M
主服務器,用31210來同步數據

memcachedb -p 21211 -d -r -u willko -H /data/21211_from_local_21210 -N -R 127.0.0.1:31211 -O 127.0.0.1:31210 -S
從服務器,主從模式-R是必須設置的。

測試是否同步

[root @srv willko]# telnet 127.0 . 0.1   21210   
Trying 127.0 . 0.1 ...  
Connected to 127.0 . 0.1 .  
Escape character is '^]' .  
set yy 0   0   4   
yyyy  
STORED  
get yy  
VALUE yy 0   4   
yyyy  
END  
[root@srv willko]# telnet 127.0.0.1 21210
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
set yy 0 0 4
yyyy
STORED
get yy
VALUE yy 0 4
yyyy
END
Java代碼
[root @srv willko]# telnet 127.0 . 0.1   21211   
Trying 127.0 . 0.1 ...  
Connected to 127.0 . 0.1 .  
Escape character is '^]' .  
get yy  
VALUE yy 0   4   
yyyy  
END  
[root@srv willko]# telnet 127.0.0.1 21211
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
get yy
VALUE yy 0 4
yyyy
END

3.FYI:參數說明

Java代碼
memcachedb 1.2 . 0   
-p <num>      TCP監聽端口,默認是 21201   
-U <num>      UDP監聽端口,默認是 0 ,也就是關閉。  
-s <file>     使用socket通訊,參數是設置unix socket的路徑,此通訊方式只能本地使用  
-a <mask>     unix socket文件的權限,默認是 0700   
-l <ip_addr> 監聽地址,默認是 INDRR_ANY  
-d            以守護進程方式運行  
-r            maximize core file limit  
-u <username> 以<username>啟動,只有root才能使用,因為memcachedb不允許以root啟動  
-c <num>      max simultaneous connections, default is 1024   
-b <num>      item size smaller than <num> will use fast memory alloc, default is 512B  
-v            打印錯誤和警告信息  
-vv           打印整個交互過程  
-h            print this help and exit  
-i            print license info  
-P <file>     進程PID保存路徑,只能在守護進程方式下使用  
-t <num>      線程數,默認是4   
--------------------BerkeleyDB Options-------------------------------  
-m <num>      in-memmory cache size of BerkeleyDB in megabytes, default is 64MB  
-A <num>      underlying page size in bytes, default is 4096 , (512B ~ 64KB, power-of-two)  
-f <file>     數據文件名, 默認是 'data.db'   
-H <dir>      數據保存目錄,默認是 '/data1/memcachedb'   
-B <db_type> 數據結構類型,有 'btree' 和 'hash' 兩種. 默認是 'btree'   
-L <num>      log buffer size in kbytes, default is 32KB  
-C <num>      每隔多少秒checkpoint, 設置為0 將實時寫入硬盤, 默認是 5 分鐘  
-T <num>      do memp_trickle every <num> seconds, 0   for disable, default is 30 seconds  
-e <num>      percent of the pages in the cache that should be clean, default is 60 %  
-D <num>      do deadlock detecting every <num> millisecond, 0   for disable, default is 100ms  
-N            設置 DB_TXN_NOSYNC 標志來改善性能,但是犧牲事務的持久性。默認為 關閉  
--------------------Replication Options-------------------------------  
-R            主服務器提供同步數據的地址和端口,主從模式必須設置  
-O            從服務器同步源地址和端口  
-M/-S         以主或從服務器啟動  
-n            允許從服務器數量, 默認是2 臺  
-----------------------------------------------------------------------  
memcachedb 1.2.0
-p <num>      TCP監聽端口,默認是 21201
-U <num>      UDP監聽端口,默認是 0,也就是關閉。
-s <file>     使用socket通訊,參數是設置unix socket的路徑,此通訊方式只能本地使用
-a <mask>     unix socket文件的權限,默認是 0700
-l <ip_addr> 監聽地址,默認是 INDRR_ANY
-d            以守護進程方式運行
-r            maximize core file limit
-u <username> 以<username>啟動,只有root才能使用,因為memcachedb不允許以root啟動
-c <num>      max simultaneous connections, default is 1024
-b <num>      item size smaller than <num> will use fast memory alloc, default is 512B
-v            打印錯誤和警告信息
-vv           打印整個交互過程
-h            print this help and exit
-i            print license info
-P <file>     進程PID保存路徑,只能在守護進程方式下使用
-t <num>      線程數,默認是4
--------------------BerkeleyDB Options-------------------------------
-m <num>      in-memmory cache size of BerkeleyDB in megabytes, default is 64MB
-A <num>      underlying page size in bytes, default is 4096, (512B ~ 64KB, power-of-two)
-f <file>     數據文件名, 默認是 'data.db'
-H <dir>      數據保存目錄,默認是 '/data1/memcachedb'
-B <db_type> 數據結構類型,有 'btree' 和 'hash'兩種. 默認是 'btree'
-L <num>      log buffer size in kbytes, default is 32KB
-C <num>      每隔多少秒checkpoint, 設置為0將實時寫入硬盤, 默認是5分鐘
-T <num>      do memp_trickle every <num> seconds, 0 for disable, default is 30 seconds
-e <num>      percent of the pages in the cache that should be clean, default is 60%
-D <num>      do deadlock detecting every <num> millisecond, 0 for disable, default is 100ms
-N            設置 DB_TXN_NOSYNC 標志來改善性能,但是犧牲事務的持久性。默認為 關閉
--------------------Replication Options-------------------------------
-R            主服務器提供同步數據的地址和端口,主從模式必須設置
-O            從服務器同步源地址和端口
-M/-S         以主或從服務器啟動
-n            允許從服務器數量, 默認是2臺
-----------------------------------------------------------------------
關于-C和-N選項涉及到數據完整性,會在下面會說明一下

五、備份和恢復
1.熱備份
因為memcachedb是基于bdb的,所以可以用bdb自帶的熱備份工具備份

Java代碼
[root @srv willko]# /usr/local/BerkeleyDB. 4.7 /bin/db_hotbackup -h /data/ 21201 / -b ./bak/  
-h是數據的目錄  
-b是備份的目錄  
[root@srv willko]# /usr/local/BerkeleyDB.4.7/bin/db_hotbackup -h /data/21201/ -b ./bak/
-h是數據的目錄
-b是備份的目錄
恢復的話,啟動memcacedb的數據目錄設置成備份目錄就可以了

2.單機模式crash恢復
bdb的事務處理和很多事物引擎相似,都是先寫日志,數據先保存在內存。所以crash以后,可以通過日志來恢復。啟動memcachedb的時候,可以使用-C選項來設置checkpoint的間隔時間,如果設置得太長,恢復時間越長。

/usr/local/BerkeleyDB. 4.7 /bin/db_recover -cf -h /data/ 21201 /  
-h是你的數據目錄  
/usr/local/BerkeleyDB.4.7/bin/db_recover -cf -h /data/21201/
-h是你的數據目錄
模擬crash

[root @srv willko]# memcachedb -u willko -p 21201 -d -r -H /data/ 21201 / -v >/data/ 21201 .log 2 >& 1   -P /data/ 21201 / 21201 .pid  
[root@srv willko]# telnet localhost 21201   
Trying 127.0 . 0.1 ...  
Connected to localhost.  
Escape character is '^]' .  
set t 0   0   4    
hhhh       #設置鍵為t,值為hhhh的  
STORED  
get t  
VALUE t 0   4   
hhhh  
END  
quit  
Connection closed by foreign host.  
[root@srv willko]# kill - 9 `cat /data/ 21201 / 21201 .pid ` #用- 9 來模擬crash  
[root@srv willko]# /usr/local/BerkeleyDB. 4.7 /bin/db_recover -cf -h /data/ 21201 /    
recovery 100 % complete  
[root@srv willko]# memcachedb -u willko -p 21201 -d -r -H /data/ 21201 / -v >/data/ 21201 .log 2 >& 1   -P /data/ 21201 / 21201 .pid  
[root@srv willko]# telnet localhost 21201   
Trying 127.0 . 0.1 ...  
Connected to localhost.  
Escape character is '^]' .  
get t  
VALUE t 0   4   
hhhh #還可以獲得crash前設置的值  
END  
quit  
Connection closed by foreign host.  
[root@srv willko]#   
[root@srv willko]# memcachedb -u willko -p 21201 -d -r -H /data/21201/ -v >/data/21201.log 2>&1 -P /data/21201/21201.pid
[root@srv willko]# telnet localhost 21201
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
set t 0 0 4
hhhh       #設置鍵為t,值為hhhh的
STORED
get t
VALUE t 0 4
hhhh
END
quit
Connection closed by foreign host.
[root@srv willko]# kill -9 `cat /data/21201/21201.pid ` #用-9來模擬crash
[root@srv willko]# /usr/local/BerkeleyDB.4.7/bin/db_recover -cf -h /data/21201/
recovery 100% complete
[root@srv willko]# memcachedb -u willko -p 21201 -d -r -H /data/21201/ -v >/data/21201.log 2>&1 -P /data/21201/21201.pid
[root@srv willko]# telnet localhost 21201
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
get t
VALUE t 0 4
hhhh #還可以獲得crash前設置的值
END
quit
Connection closed by foreign host.
[root@srv willko]#

3.主從模式的crash恢復
主從模式下可以考慮啟用-N選項來提高性能,如果不是用-N,日志是實時寫到硬盤,這也是為什么crash以后可以通過日志恢復的原因。
但是如果使用-N來提高性能是有代價的,也就是日志不實時寫硬盤,那crash以后無法保證完全恢復,沒寫入硬盤的數據無法通過日志恢復。但是如果你做了主從模式,那就無需擔心,因為當事務提交以后,會馬上同步到slave。
也就是說使用-N選項后,crash后通過slave來恢復。

六、一點抱怨
目前,持久存儲系統產品非常的多,我覺得未來的持久存儲肯定不只提供hash table存儲,還應該把加入list、tree等的支持。這些都可以擴大持久存儲系統的應用場景,未來持久存儲系統成熟的時候,將會大規模代替RMDB。
最近,有個亮點產品出現,叫redis,目前還只是beta。

參考資料:
http://memcachedb.org/
http://memcachedb.org/memcachedb-guide-1.0.pdf

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久精品在线视频| 一区二区在线免费视频| 成人黄色av免费在线观看| 欧美中文在线观看| 亚洲国产欧美一区二区丝袜黑人| 日本最新高清不卡中文字幕| 中文字幕免费国产精品| 国产精品免费看久久久香蕉| 91日韩在线视频| 成人日韩av在线| 中文日韩在线观看| 大胆欧美人体视频| 一区二区三区精品99久久| 欧美成人在线影院| 国产精品第2页| 日韩中文字幕国产| 久久久久国产精品免费网站| 在线日韩日本国产亚洲| 国产成人精品午夜| 亚洲新声在线观看| 成人av资源在线播放| 庆余年2免费日韩剧观看大牛| 欧美猛少妇色xxxxx| 亚洲男人天堂古典| 国产精品视频网站| 欧美精品情趣视频| 91日本在线观看| 亚洲国产精品人久久电影| www.国产一区| 日韩欧美精品免费在线| 亚洲激情免费观看| 欧美日韩国产成人高清视频| 中文精品99久久国产香蕉| 欧美成人免费在线观看| 欧美性猛xxx| 夜夜嗨av色一区二区不卡| 日韩欧美中文在线| 亚洲精品短视频| 中文字幕久精品免费视频| 久久久久久伊人| 国产欧美va欧美va香蕉在| 亚洲色图偷窥自拍| 美女国内精品自产拍在线播放| 日本高清视频精品| 欧美黄色免费网站| 成人激情视频在线观看| 日韩在线观看网址| 尤物yw午夜国产精品视频| 欧美精品aaa| 岛国av一区二区三区| 欧美极度另类性三渗透| 中文字幕日韩av| 久久久久久久香蕉网| 日韩电影中文 亚洲精品乱码| 国产欧美一区二区三区在线看| 欧美第一淫aaasss性| 久久国产精彩视频| 国产成人精品一区二区在线| 精品久久久一区| 成人性教育视频在线观看| 中文字幕亚洲无线码在线一区| 久久人人爽人人| 97视频在线免费观看| 91色视频在线观看| 国产成人精品午夜| 国产精品国语对白| 青青草成人在线| 色噜噜狠狠狠综合曰曰曰88av| 国产一区二区三区在线观看网站| 91久久久在线| www日韩中文字幕在线看| 久久久国产精品一区| 亚洲自拍偷拍一区| 亚洲区一区二区| 福利一区视频在线观看| 一区二区三区无码高清视频| 91精品国产自产91精品| 精品国产999| 日韩经典中文字幕| 日韩精品在线观看一区| 久久久久久久久久国产精品| 精品亚洲一区二区三区| 91干在线观看| 在线亚洲欧美视频| 日韩电影在线观看免费| 欧美激情奇米色| 亚洲欧美日韩一区二区在线| 亚洲aa中文字幕| 国内揄拍国内精品少妇国语| 国产999精品视频| 日韩在线欧美在线国产在线| 91在线直播亚洲| 国产91精品黑色丝袜高跟鞋| 欧美精品videos| 国产成人亚洲综合| 亚洲天堂网站在线观看视频| 一区二区三区国产在线观看| 国产精品网红直播| 国产精品亚洲综合天堂夜夜| 亚洲精品美女久久久久| 精品国产一区二区三区久久狼黑人| 欧美性极品xxxx娇小| 搡老女人一区二区三区视频tv| 日韩精品极品在线观看| 欧美中文在线字幕| 国产v综合v亚洲欧美久久| 日韩在线一区二区三区免费视频| 日本免费久久高清视频| 国产视频久久久| 欧洲亚洲女同hd| 亚洲自拍在线观看| 欧美激情第一页xxx| 久久综合色88| 日韩精品丝袜在线| 性欧美亚洲xxxx乳在线观看| 77777少妇光屁股久久一区| 懂色av影视一区二区三区| 海角国产乱辈乱精品视频| 国产精品激情自拍| 欧美精品激情blacked18| www.国产一区| 色噜噜久久综合伊人一本| 亚洲色无码播放| 国产乱人伦真实精品视频| 国产精品久久91| 亚洲男人天堂网站| 伊人久久男人天堂| 亚洲欧美在线播放| 一区二区在线视频| 日本欧美一二三区| 久久免费视频这里只有精品| 久久99久久久久久久噜噜| 亚洲国产毛片完整版| 欧美日韩中文在线观看| 国产欧美一区二区三区视频| 亚洲一区第一页| 久久亚洲精品一区二区| 久久久成人av| 中文字幕久热精品视频在线| 日韩一二三在线视频播| 在线观看日韩av| 影音先锋日韩有码| 在线看欧美日韩| 日韩在线观看成人| 成人激情免费在线| 日韩在线中文视频| 俺去啦;欧美日韩| 中文字幕欧美精品日韩中文字幕| 国产欧美精品久久久| 欧美日韩xxx| 91精品国产高清自在线看超| 亚洲第一中文字幕在线观看| 亚洲美女在线看| 91久久久亚洲精品| 精品动漫一区二区三区| 日韩亚洲欧美中文在线| 亚洲欧美一区二区三区情侣bbw| 色婷婷av一区二区三区久久| 国产成人黄色av| 精品一区二区三区三区| 亚洲第一二三四五区| 久久夜精品va视频免费观看| 国产精品久久久久久久av大片| 国产91色在线免费|