麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

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

輕量級持久存儲系統 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在线收看 | 亚洲国产高清一区 | 97久色 | 国产精品性夜天天视频 | 精品影视一区二区 | 日本在线一区二区 | 欧美成人精品一区二区 | 久久久麻豆 | 中文字幕一区2区 | 午夜视频在线免费观看 | 99精品电影 | 日本aaaa片毛片免费观看视频 | 在线观看福利网站 | 免费看a级片 | 成人三级电影网址 | 国产乱淫a∨片免费观看 | 狠狠干b| 中文字幕h | 午夜亚洲影院 | 欧美成人免费在线视频 | 国产欧美日韩视频在线观看 | 亚洲欧美国产高清va在线播放 | 叶子楣成人爽a毛片免费啪啪 | 久久久电影电视剧免费看 | 一区二区三区日韩精品 | 久久思思爱 | 亚洲第一成人在线 | 国产精品视频一区二区噜噜 | 精品呦女 | 亚洲性在线视频 | 神马久久蜜桃 | 精品国产一区二区三区天美传媒 | 日韩字幕在线观看 | 亚洲一区二区三区视频免费 | videos真实高潮xxxx | 欧美成人一级片 | 精品一区久久久 | 91精品国产九九九久久久亚洲 | 色综合欧美 |