repcached是日本人开发的基于Memcached的一个patch版本,实现Memcached的复制功能,它支持多个Memcached之间相互复制,可以解决Memcached的容灾问题。它所构建的主从方案是一个单主单从的方案,不支持多主多从。但是,它的特点是,主从两个节点可以互相读写,从而可以达到互相同步的效果。如果 master坏掉, slave侦测到连接断了,它会自动listen而成为master;而如果 slave坏掉,master也会侦测到连接断,它就会重新listen等待新的slave加入。但down机的master只能手动以slave启动,他们之间互换角色,才能保持复制功能。换句话说,master没有抢占功能。
官网: http://repcached.lab.klab.org/
项目地址: http://sourceforge.net/p/repcached
下载地址: http://sourceforge.net/projects/repcached/files/repcached/2.2.1-1.2.8/
一、下载安装
1)下载安装libevent,略请参考: http://blog.csdn.net/zhu_tianwei/article/details/44542497
建议安装低版本的,高版本会有问题。
wget http://www.monkey.org/~provos/libevent-1.4.13-stable.tar.gz 或yum -y install libevent*,建议使用yum
2)下载最新版本memcached-1.2.8-repcached-2.2.1已经包含memcached,最新版本只支持到memcached-1.2.8
wget http://sourceforge.net/projects/repcached/files/repcached/2.2.1-1.2.8/memcached-1.2.8-repcached-2.2.1.tar.gz/download
tar -zxvf memcached-1.2.8-repcached-2.2.1.tar.gz
3)安装
mkdir memcached
cd memcached-1.2.8-repcached-2.2.1
./configure --prefix=/home/slim/memcached --with-libevent=/home/slim/libevent --enable-replication #--enable-replication开启复制
make
make install
除了以上安装方式,也可以通过安装补丁完成,如下:
1)安装libevent略(libevent-1.4.13-stable.tar.gz或yum -y install libevent*,建议使用yum)
2)下载repcached补丁
wget http://sourceforge.net/projects/repcached/files/repcached/2.2.1-1.2.8/repcached-2.2.1-1.2.8.patch.gz/download
3)安装memcached,这里根据补丁版本,安装1.2.8的memcached
wget http://danga.com/memcached/dist/memcached-1.2.8.tar.gz
mkdir memcached
cd memcached-1.2.8
gzip -cd ~/repcached-2.2.1-1.2.8.patch.gz | patch -p1
./configure --prefix=/home/slim/memcached --with-libevent=/home/slim/libevent --enable-replication
启动主节点mater:
./bin/memcached -l 192.168.36.54 -p 11211 -v
#replication: listen
启动从节点slave
./bin/memcached -v -l 192.168.36.189 -p 11211 -x 192.168.36.54 -X 11212
#replication: connect (peer=192.168.36.54:11212)
#replication: marugoto copying
#replication: start
参数说明:
x 监听主服务器地址
X 监听主服务器端口 默认11211
三、测试
1.查看从服务器同步主服务器
192.168.36.54(master):
set data 0 0 3
abc
192.168.36.189(slave):
get data
可以看到数据已经同步
2.查看主服务器同步从服务器
192.168.36.189(slave):
set key 0 0 5
value
192.168.36.54(master):
get key
3.关闭主服务器
ctrl+c关闭192.168.36.54(master),此时192.168.36.189(slave)变成192.168.36.189(master),处于监听状态
在原来192.168.36.189(master)添加数据:
set mm 0 0 2
ab
启动192.168.36.54,由于memcached的主/从没有抢占功能,因此主恢复之后,只能作为现有主节点的从节。
./bin/memcached -v -l 192.168.36.54 -p 11211 -x 192.168.36.189 -X 11211
在192.168.36.54(slave)
get mm
通过memcached基于repcached的主从复制实验,我们可以看出,通过他我们实现了主从中任何一个宕机,都不会影响另外一台机器上的数据。