memcached复制-repcached
1.前言
由于memcached把数据都放到内存里,因此性能是极高的,正因为如此,不可避免会造成数据丢失,repcached就派上用场了,它可以实现memcached的主从复制
2.安装repcached
下面采用memcached和repcached一起安装的方式
$ cd usr/local/src
$ wget https://downloads.sourceforge.net/project/repcached/repcached/2.2.1-1.2.8/memcached-1.2.8-repcached-2.2.1.tar.gz
$ tar -zxvf memcached-1.2.8-repcached-2.2.1.tar.gz
$ cd memcached-1.2.8-repcached-2.2.1
$ ./configure --enable-replication --program-transform-name=s/memcached/repcached/
error: 'IOV_MAX' undeclared (first use in this function) #centos编译会报这个错,需要修改代码
$ vi memcached.c
/* FreeBSD 4.x doesn't have IOV_MAX exposed. */
#ifndef IOV_MAX
#if defined(__FreeBSD__) || defined(__APPLE__)
#define IOV_MAX 1024
#endif
#endif
$ make && make install
3.测试复制
为了方便,下面的测试是在同一台机器上开启两个端口来进行主从复制的
$ memcached -p 11211 -d -v #-d表示守护进程 -v是打印日志
replication: listen
replication: accept #按下Ctrl+c,在本机添加从服务器,-x是主cache的ip
$ memcached -p 11212 -d -x 192.168.56.10 -v
replication: connect (peer=192.168.56.10:11212)
replication: marugoto copying
replication: start #分别连接测试主从同步
$ telnet localhost 11211
Trying ::1...
Connected to localhost.
Escape character is '^]'.
set myname 0 0 6
pigfly
STORED
quit
Connection closed by foreign host.
$ telnet localhost 11212
Trying ::1...
Connected to localhost.
Escape character is '^]'.
get myname
VALUE myname 0 6
pigfly #从cache已经能获取到主cache的数据了,说明主复制到从没有问题
END
set age 0 0 2
23
STORED
quit
Connection closed by foreign host.
$ telnet localhost 11211
Trying ::1...
Connected to localhost.
Escape character is '^]'.
get age
VALUE age 0 2
23 #这里主cache也拿到了从cache的数据,说明从复制到主也没问题
END
quit
Connection closed by foreign host.
$ telnet localhost 11212
Trying ::1...
Connected to localhost.
Escape character is '^]'.
delete age
DELETED
quit
Connection closed by foreign host.
$ telnet localhost 11211
Trying ::1...
Connected to localhost.
Escape character is '^]'.
get age #删除也是同步的
END
4.总结
简单配置几下就可以实现memcached的备份,是不是很开森?!考虑下面的一些情况:
- repcached只支持memcached1.2.x,好几年没更新过了
- 当有一台memcache宕机,repcached不会自动帮你切换到另外一台,要手动切换,考虑用缓存代理+主从复制
memcached复制-repcached的更多相关文章
- Repcached实现memcached复制
1.介绍 repcached是日本人开发的实现memcached复制功能,它是一个单 master单 slave的方案,但它的master/slave都是可读写的,而且可以相互同步,如果 ma ...
- Memcached实战之复制----基于repcached的主从【转】
由于 Memcached 自己没有防止单点的措施,因为为了保障 Memcached 服务的高可用,我们需要借助外部的工具来实现高可用的功能.本文引入 Repcached 这个工具,通过使用该工具我们可 ...
- Memcached介绍及相关知识
memcached简介 1.memcached是一个免费开源的.高性能的,具有分布式内存对象的缓存系统.memcached通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括 ...
- Ubunut 13.04下配置memcached、 python MySQLDB,python-memcache模块等
一开始系统使用的是163的源,没有安装成功memcached,换了cn99的也不行,后来换了台湾的源,以下步骤才得以顺利进行. 更换源的方法可以参看我以前的帖子. 安装memached:sudo ap ...
- memcache集群
实现memcache集群 一:memcache本身没有redis锁具备的数据持久化功能,比如RDB和AOF都没有,但是可以通过做集群的方式,让各memcache的数据进行同步,实现数据的一致性,即 ...
- centos安装memcache与telnet
####################linux下安装memcache过程######################http://www.cnblogs.com/zgx/archive/2011/ ...
- Linux一键安装PHP/JAVA环境OneinStack
OneinStack 是一款PHP/JAVA环境一键配置工具. OneinStack包含以下组合 lnmp(Linux + Nginx+ MySQL ...
- OpenStack Grizzly详细安装指导
一.环境介绍: 控制节点 eth0 (10.10.10.51), eth1 (192.168.100.51) 网络节点 eth0 (10.10.10.52), eth1 (10.20.20.52), ...
- 通过yum安装 memcache
. 通过yum安装 复制代码代码如下: yum -y install memcached#安装完成后执行:memcached -h#出现memcached帮助信息说明安装成功 2. 加入启动服务 复制 ...
随机推荐
- Bootstrap 引用的标准模板
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8&quo ...
- 基于FFMpeg的C#录屏全攻略
最近负责一个录屏的小项目,需要录制Windows窗口内容并压缩保存到指定文件夹,本想使用已有的录屏软件,但是本着学习的态度去探索了FFMpeg,本文主要介绍基于FFMpeg开源项目的C#录屏软件开发. ...
- eclipse+fileSyncPlugin+svn+jenkins+tomcat
实现一个想法,把项目部署在linux服务器上,在本地的eclipse代码更新后,通过svn+jenkins自动同步到服务器, 然后通过eclipse远程debug项目.这样是不是就解决了在本地跑项目, ...
- JUnit5 安装与使用
虽然JUnit5 的测试版本早就出来了,但正式版直到几年9月份推出,目前最新版5.0.1.几乎所有的Java 开发人员都会使用JUnit 来做测试,但其实很多自动化测试人员也会使用Junit .目前, ...
- (转)UML实践详细经典教程----用例图、顺序图、状态图、类图、包图、协作图
原文链接:http://dn.codegear.com/article/31863 面向对象的问题的处理的关键是建模问题.建模可以把在复杂世界的许多重要的细节给抽象出.许多建模工具封装了UML(也就是 ...
- canvas画布标签
最近良师益友整理一些canvas的资料,加强学习了解! 当你创建一个<canvas>元素后,就拥有了它的绘图上下文. 一.简单图形 1.getContext()方法 为了在canvas上绘 ...
- SSM框架+slf4j 以Gradle实现
环境:win10+jdk8+tomcat9+Intellij IDEA 首先,作为一个喜欢偷懒的人,管理jar之类的的事情太累,所以用了Gradle项目管理器 第一步: 新建一个gradle-web项 ...
- LeetCode 259. 3Sum Smaller (三数之和较小值) $
Given an array of n integers nums and a target, find the number of index triplets i, j, k with 0 < ...
- JS深层继承
我们在书写JS的时候常常被一种现象困扰 let jsonA = { a1: { b1:1; }, }; let jsonB = jsonA; jsonB.a1.b1 = 2; console.log( ...
- Python迭代
本篇将介绍Python的迭代,更多内容请参考:Python学习指南 简介 在Python中,如果给定一个list或者tuple,我们可以通过for循环来遍历这个list或者tuple,这种遍历我们称为 ...