• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

Repcached实现Memcached主从复制功能

mysql 搞代码 4年前 (2022-01-09) 17次浏览 已收录 0个评论

Repcached实现Memcached主从复制功能工作原理repcached实现了memcached复制的功能,它是一个单master单slave的方案,但master/slave都是可读写的,而且可以相互

Repcached实现Memcached主从复制功能

工作原理

repcached实现了memcached复制的功能,它是一个单master单slave的方案,但master/slave都是可读写的,而且可以相互同步,如果master坏掉slave侦测到连接断了,它会自动listen而成为master,这时坏掉的master只能启用为slave,它们之间互换角色,才能保持复制功能,换句话说,master没有抢占功能;而如果slave坏掉,master也会侦测到连接断,它就会重新listen等待新的slave加入。

应用场景

用memcached做session共享或其它服务时会存在memcached的单点故障,如果memcached宕机,那么整个系统用户无法登陆(session)。

基于这种情况,采用repcached做memcached的主从冗余。

Repcached下载地址

Repcached安装方式

Repcached有两种安装方式:

1.补丁版本安装
先安装相应版本的memcached,,然后对应版本的Repcached补丁。

2.整合版本安装
直接安装整合版本的memcached

方式一:补丁版本安装

1. 安装Memcache,相关安装方法可以参见博文:

2. 下载对应的repcached版本补丁安装文件:
假设安装的memcahced版本为1.2.8,下载针对该版本最新的补丁:

wget gzip -cd ../repcached-2.2.1-1.2.8.patch.gz | patch -p1 ./configure –enable本文来源gao@!dai!ma.com搞$$代^@码!网-replication make && make install

方式二:整合版本安装

1. 安装libevent:

cd /tmp wget tar zxvf libevent-2.0.22-stable.tar.gz cd libevent-2.0.22-stable ./configure –prefix=/usr/local/lib make && make install

2. 将libevent的库文件添加到动态库中:

vi /etc/ld.so.conf

在最后添加如下行:
/usr/local/lib //此处为要添加的libevent库目录
重新加载动态lib库

ldconfig

注意:如果无此步骤,在启动memcached时,会提示看不到libevent的库文件。

3. 测试libevent是否安装成功:

ls -al /usr/lib | grep libevent-

4. 创建启动帐号:

groupadd memcached useradd -g memcached memcached

5. 创建PID进程目录并修改所有者:

mkdir /var/run/memcached chown -R memcached.memcached /var/run/memcached

6. 安装整合memcached-repcached包:

cd /tmp wget cp memcached-1.2.8-repcached-2.2.1.tar.gz /usr/local cd /usr/local tar zxvf memcached-1.2.8-repcached-2.2.1.tar.gz mv memcached-1.2.8-repcached-2.2.1 memcached cd memcached ./configure –prefix=/usr/local/memcached –with-libevent=/usr/local/lib –enable-replication –enable-64bit

注意:默认memcached单个进程只支持到2G内存,需要更大内存支持的话,需要打开64位支持,编译的时候加参数:
–enable-64bit

make && make install

提示编译出错:

make all-recursive make[1]: Entering directory `/usr/local/memcached’ Making all in doc make[2]: Entering directory `/usr/local/memcached/doc’ make[2]: Nothing to be done for `all’. make[2]: Leaving directory `/usr/local/memcached/doc’ make[2]: Entering directory `/usr/local/memcached’ gcc -DHAVE_CONFIG_H -I. -DNDEBUG -m64 -g -O2 -MT memcached-memcached.o -MD MP -MF .deps/memcached-memcached.Tpo -c -o memcached-memcached.o `test -f memcached.c’ || echo ‘./’`memcached.c memcached.c: In function ‘add_iov’: memcached.c:697: error: ‘IOV_MAX’ undeclared (first use in this function) memcached.c:697: error: (Each undeclared identifier is reported only once memcached.c:697: error: for each function it appears in.) make[2]: *** [memcached-memcached.o] Error 1 make[2]: Leaving directory `/usr/local/memcached’ make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory `/usr/local/memcached’ make: *** [all] Error 2

解决方案:

vi memcached.c


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Repcached实现Memcached主从复制功能

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址