1.前言

由于memcached把数据都放到内存里,因此性能是极高的,正因为如此,不可避免会造成数据丢失,repcached就派上用场了,它可以实现memcached的主从复制

2.安装repcached

下面采用memcached和repcached一起安装的方式

  1. $ cd usr/local/src
  2. $ wget https://downloads.sourceforge.net/project/repcached/repcached/2.2.1-1.2.8/memcached-1.2.8-repcached-2.2.1.tar.gz
  3. $ tar -zxvf memcached-1.2.8-repcached-2.2.1.tar.gz
  4. $ cd memcached-1.2.8-repcached-2.2.1
  5. $ ./configure --enable-replication --program-transform-name=s/memcached/repcached/
  6. error: 'IOV_MAX' undeclared (first use in this function) #centos编译会报这个错,需要修改代码
  7. $ vi memcached.c
  8. /* FreeBSD 4.x doesn't have IOV_MAX exposed. */
  9. #ifndef IOV_MAX
  10. #if defined(__FreeBSD__) || defined(__APPLE__)
  11. #define IOV_MAX 1024
  12. #endif
  13. #endif
  14. $ make && make install

3.测试复制

为了方便,下面的测试是在同一台机器上开启两个端口来进行主从复制的

  1. $ memcached -p 11211 -d -v #-d表示守护进程 -v是打印日志
  2. replication: listen
  3. replication: accept
  4.  
  5. #按下Ctrl+c,在本机添加从服务器,-x是主cache的ip
  6. $ memcached -p 11212 -d -x 192.168.56.10 -v
  7. replication: connect (peer=192.168.56.10:11212)
  8. replication: marugoto copying
  9. replication: start
  10.  
  11. #分别连接测试主从同步
  12. $ telnet localhost 11211
  13. Trying ::1...
  14. Connected to localhost.
  15. Escape character is '^]'.
  16. set myname 0 0 6
  17. pigfly
  18. STORED
  19. quit
  20. Connection closed by foreign host.
  21. $ telnet localhost 11212
  22. Trying ::1...
  23. Connected to localhost.
  24. Escape character is '^]'.
  25. get myname
  26. VALUE myname 0 6
  27. pigfly #从cache已经能获取到主cache的数据了,说明主复制到从没有问题
  28. END
  29. set age 0 0 2
  30. 23
  31. STORED
  32. quit
  33. Connection closed by foreign host.
  34. $ telnet localhost 11211
  35. Trying ::1...
  36. Connected to localhost.
  37. Escape character is '^]'.
  38. get age
  39. VALUE age 0 2
  40. 23 #这里主cache也拿到了从cache的数据,说明从复制到主也没问题
  41. END
  42. quit
  43. Connection closed by foreign host.
  44. $ telnet localhost 11212
  45. Trying ::1...
  46. Connected to localhost.
  47. Escape character is '^]'.
  48. delete age
  49. DELETED
  50. quit
  51. Connection closed by foreign host.
  52. $ telnet localhost 11211
  53. Trying ::1...
  54. Connected to localhost.
  55. Escape character is '^]'.
  56. get age #删除也是同步的
  57. END

4.总结

简单配置几下就可以实现memcached的备份,是不是很开森?!考虑下面的一些情况:

  • repcached只支持memcached1.2.x,好几年没更新过了
  • 当有一台memcache宕机,repcached不会自动帮你切换到另外一台,要手动切换,考虑用缓存代理+主从复制

memcached复制-repcached的更多相关文章

  1. Repcached实现memcached复制

    1.介绍     repcached是日本人开发的实现memcached复制功能,它是一个单 master单 slave的方案,但它的master/slave都是可读写的,而且可以相互同步,如果 ma ...

  2. Memcached实战之复制----基于repcached的主从【转】

    由于 Memcached 自己没有防止单点的措施,因为为了保障 Memcached 服务的高可用,我们需要借助外部的工具来实现高可用的功能.本文引入 Repcached 这个工具,通过使用该工具我们可 ...

  3. Memcached介绍及相关知识

    memcached简介 1.memcached是一个免费开源的.高性能的,具有分布式内存对象的缓存系统.memcached通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括 ...

  4. Ubunut 13.04下配置memcached、 python MySQLDB,python-memcache模块等

    一开始系统使用的是163的源,没有安装成功memcached,换了cn99的也不行,后来换了台湾的源,以下步骤才得以顺利进行. 更换源的方法可以参看我以前的帖子. 安装memached:sudo ap ...

  5. memcache集群

    实现memcache集群   一:memcache本身没有redis锁具备的数据持久化功能,比如RDB和AOF都没有,但是可以通过做集群的方式,让各memcache的数据进行同步,实现数据的一致性,即 ...

  6. centos安装memcache与telnet

    ####################linux下安装memcache过程######################http://www.cnblogs.com/zgx/archive/2011/ ...

  7. Linux一键安装PHP/JAVA环境OneinStack

    OneinStack 是一款PHP/JAVA环境一键配置工具.                         OneinStack包含以下组合   lnmp(Linux + Nginx+ MySQL ...

  8. OpenStack Grizzly详细安装指导

    一.环境介绍: 控制节点 eth0 (10.10.10.51), eth1 (192.168.100.51) 网络节点 eth0 (10.10.10.52), eth1 (10.20.20.52), ...

  9. 通过yum安装 memcache

    . 通过yum安装 复制代码代码如下: yum -y install memcached#安装完成后执行:memcached -h#出现memcached帮助信息说明安装成功 2. 加入启动服务 复制 ...

随机推荐

  1. 读Zepto源码之Form模块

    Form 模块处理的是表单提交.表单提交包含两部分,一部分是格式化表单数据,另一部分是触发 submit 事件,提交表单. 读 Zepto 源码系列文章已经放到了github上,欢迎star: rea ...

  2. SQL数据库的基础操作

    一,认识SQL数据库 美国Microsoft公司推出的一种关系型数据库系统.SQLServer是一个可扩展的.高性能的.为分布式客户机/服务器计算所设计的数据库管理系统,实现了与WindowsNT的有 ...

  3. C++内联函数(03)

    在C++中我们通常定义以下函数来求两个整数的最大值: 代码如下: int max(int a, int b){ return a > b ? a : b;} 为这么一个小的操作定义一个函数的好处 ...

  4. PHP的取整函数

    PHP的取整函数有四个,分别是ceil.floor.round和intval,下面对它们进行一一介绍: 1. ceil(x):向上舍入为最接近的整数. 返回不小于 x 的下一个整数,x 如果有小数部分 ...

  5. c++连接数据库 在vc6.0

    配置相关环境 我的mysql安装路径为E:\mysql-5.5.28-win32所以要在VC中设置include路径和lib的路径. 添加MySql的include目录到VC工作台中Project-& ...

  6. 删除链表中等于给定值val的所有节点。

    样例 给出链表 1->2->3->3->4->5->3, 和 val = 3, 你需要返回删除3之后的链表:1->2->4->5. /** * D ...

  7. Mayor's posters

    Mayor's posters Time Limit:1000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u Sub ...

  8. 【转】解决memcached启动失败

    原文:http://chenzhou123520.iteye.com/blog/1925196 linux上启动Memcache报错: 原因一般有两个, 一个是操作系统里确实没有包含该共享库(lib* ...

  9. redhat7 Samba

    1.先安装Samba服务 yum install -y samba samba-client 2.配置文件 vi /etc/samba/smb.conf  --主配置文件 [global]  --全局 ...

  10. 外键删除(T-SQL Drop Foreign Key)

    列出某张表相关的 FK Name select distinct name from sys.objects where object_id in (   select fk.constraint_o ...