• 2009-06-25

    轻量级持久存储系统 MemcacheDB - [DB]

    注: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/

    Java代码
    1. tar zxvf libevent- 1.4 . 9 -stable.tar.gz   
    2. cd libevent-1.4 . 9 -stable   
    3. ./configure   
    4. make   
    5. make install  


    2.安装Berkeley Db
    下载地址:http://www.oracle.com/technology/software/products/berkeley-db/index.html

    Java代码
    1. tar xvzf db- 4.7 . 25 .tar.gz  
    2. cd db-4.7 . 25 /  
    3. cd build_unix/  
    4. ../dist/configure  
    5. make  
    6. make install  


    安装完后,编辑/etc/ld.so.conf把

    Java代码
    1. usr/local/lib  
    2. /usr/local/BerkeleyDB.4.7 /lib  


    3.安装memcachedb
    下载地址:http://code.google.com/p/memcachedb/downloads/list

    Java代码
    1. tar xvzf memcachedb- 1.2 . 0 .tar.gz  
    2. cd memcachedb-X.Y.Z  
    3. ./configure --enable-threads  
    4. make  
    5. make install  


    4.创建数据保存点

    Java代码
    1. mkdir /data/ 21201  -p  
    2. chown -R willko:wheel  



    四、使用
    1.单机模式

    Java代码
    1. memcachedb -u willko -p  21201  -d -r -H /data/ 21201 / -v >/data/ 21201 .log  2 >& 1   


    2.主从模式

    Java代码
    1. memcachedb -p  21210  -d -r -u willko -H /data/21210_m -N -R  127.0 . 0.1 : 31210  -M   
    2. 主服务器,用31210 来同步数据  
    3.   
    4. 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  
    5. 从服务器,主从模式-R是必须设置的。  

     


    关于-C和-N选项涉及到数据完整性,会在下面会说明一下

    五、备份和恢复
    1.热备份
    因为memcachedb是基于bdb的,所以可以用bdb自带的热备份工具备份

    Java代码
    1. [root @srv  willko]# /usr/local/BerkeleyDB. 4.7 /bin/db_hotbackup -h /data/ 21201 / -b ./bak/  
    2. -h是数据的目录  
    3. -b是备份的目录  


    恢复的话,启动memcacedb的数据目录设置成备份目录就可以了


    六、一点抱怨
    目前,持久存储系统产品非常的多,我觉得未来的持久存储肯定不只提供hash table存储,还应该把加入list、tree等的支持。这些都可以扩大持久存储系统的应用场景,未来持久存储系统成熟的时候,将会大规模代替RMDB。
    最近,有个亮点产品出现,叫redis,目前还只是beta。

    Tag: