一、环境

服务器A:ubuntu server 12.04(192.168.1.111)

服务器B:ubuntu server 12.04 (47.50.13.111)

二、memcached安装

sudo apt-get install memcached

安装完成后可以启动一下,看是否安装好了:

# sudo memcached -d -m 128 -p 11211 -u root

# telnet 127.0.0.1 11211
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
set name 0 0 5
hello
STORED
get name
hello

可以存取数据即代表安装完成。

三、repcached安装

https://sourceforge.net/projects/repcached/files/repcached/ 下载repcached安装包(memcached-1.2.8-repcached-2.2.1.tar.gz),然后解压安装:

# tar zxvf memcached-1.2.8-repcached-2.2.tar.gz

# cd memcached-1.2.8-repcached-2.2/

# ./configure --enable-replication

# make

# make install

正常情况下按上面的安装就可以了,但也有可能会遇到以下问题:

1、machine `i686-pc-linux' not recognized 错误

解决办法是在./configure时加上参数:--build=i686-pc-linux-gnu

2、configure: error: no acceptable C compiler found in $PATH See `config.log' for more details.

这是因为没有安装c编译器,安装gcc即可:

# apt-get install gcc

3、memcached.c:696:30: error: ‘IOV_MAX’ undeclared (first use in this function)

把memcached.c中55行~60行代码:

  55 /* FreeBSD 4.x doesn't have IOV_MAX exposed. */
56 #ifndef IOV_MAX
57 #if defined(__FreeBSD__) defined(__APPLE__)
58 # define IOV_MAX 1024
59 #endif
60 #endif

换为:

  55 /* FreeBSD 4.x doesn't have IOV_MAX exposed. */
56 #ifndef IOV_MAX
57 /*#if defined(__FreeBSD__) defined(__APPLE__)*/
58 # define IOV_MAX 1024
59 #endif
60 /*#endif*/

即把 57 行和60行注释掉。

四、主从配置

我们要把服务器B作为Master,把服务器A作为Slave,首先在服务器A(Master)上配置如下:

# /usr/local/bin/memcached -p 11211 -v -d -u root

replication: listen

在服务器B(Slave)上配置如下:

# /usr/local/bin/repcached -p 11212 -x 47.50.13.111 -v -d -u root

replication: connect (peer=47.50.13.111:11212) 

replication: marugoto copying

replication: accept

这里看到出现了一个11212,Memcached默认服务端口是11211,默认同步监听端口是11212。

这一步要确保在Slave上可以telnet上Master服务器。

如果telnet失败,一般会是iptables把11211/11212端口阻止了,打开即可。

可以通过netstat命令查看:

# netstat -tupln  grep memcached

tcp        0      0 0.0.0.0:11211           0.0.0.0:*               LISTEN      2044/memcached
tcp 0 0 0.0.0.0:11212 0.0.0.0:* LISTEN 2044/memcached
tcp6 0 0 :::11211 :::* LISTEN 2044/memcached
udp 0 0 0.0.0.0:11211 0.0.0.0:* 2044/memcached
udp6 0 0 :::11211 :::* 2044/memcached

五、验证

在Master上创建数据:

# telnet 127.0.0.1 11211
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
set name 0 0 5
atwal
STORED

在Slave上查看数据:

$ telnet 127.0.0.1 11211
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
get name
VALUE name 0 5
atwal
END

可以看到数据已经同步了。

通过repcached实现memcached主从复制的更多相关文章

  1. Repcached实现memcached复制

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

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

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

  3. 非root用户Memcached repcached安装

    安装memcached前先要确定系统是否安装了gcc: 1.解压安装包: tar -zxf memcached-1.2.8-repcached-2.2.tar.gz 2.编译: 系统应安装了libev ...

  4. Memcached高可用组件之repcached

    在前边的tomcat session server msm的那篇博客我们用memcached做tomcat session服务器,默认官方memcached是不支持主从同步的,为了解决memcache ...

  5. Memcached repcached 高可用

    Memcached + repcached 高可用环境 repcached 就是一个让memcached的机器能够互为主从,前端可以加一台HAProxy,后端两台memcached互为主从后,写入任何 ...

  6. 【转】centos安装memcached+php多服务器共享+session多机共享问题

    参考博文: centos安装memcached 源码安装 Yum安装Memcache Memcached内存分配优化及使用问题 <转>php+memcached 实现session共享 P ...

  7. memcached学习(5). memcached的应用和兼容程序

    mixi在提供服务的初期阶段就使用了memcached. 随着网站访问量的急剧增加,单纯为数据库添加slave已无法满足需要,因此引入了memcached. 此外,我们也从增加可扩展性的方面进行了验证 ...

  8. memcached全面剖析--5

    memcached的应用和兼容程序 mixi案例研究 mixi在提供服务的初期阶段就使用了memcached. 随着网站访问量的急剧增加,单纯为数据库添加slave已无法满足需要,因此引入了memca ...

  9. Memcached全面剖析–5. memcached的应用和兼容程序

    作者:长野雅广(Masahiro Nagano)  原文链接:http://gihyo.jp/dev/feature/01/memcached/0005 我是Mixi的长野.memcached的连载最 ...

随机推荐

  1. python:常用模块二

    1,hashlib模块---摘要算法 import hashlib md5 = hashlib.md5() md5.update('how to use md5 in python hashlib?' ...

  2. [USACO17FEB]Why Did the Cow Cross the Road II P

    嘟嘟嘟 考虑dp. 对于ai,和他能匹配的bj只有9个,所以我们考虑从这9个状态转移. 对于ai 能匹配的一个bj,当前最大的匹配数一定是[1, j - 1]中的最大匹配数 + 1.然后用树状数组维护 ...

  3. Node.js使用MySQL数据库中对RowDataPacket对象的使用

    使用Node.js开发使用MySQL数据库的网站,在查询后返回一RowDataPacket类型的对象 原先使用toString()方法一直得到仅为object的字符串,无法使用 后思考,才发现忽略了其 ...

  4. POJ 1191 棋盘分割 【DFS记忆化搜索经典】

    题目传送门:http://poj.org/problem?id=1191 棋盘分割 Time Limit: 1000MS   Memory Limit: 10000K Total Submission ...

  5. PHP设计模式——责任链模式

    <?php /** * 责任链模式 * 组织一个对象链处理一个请求,每个处理对象知道自己能处理哪些请求,并把自己不能处理的请求交下一个处理对象 * * 适用场景: * 1.有多个对象可以处理同一 ...

  6. 2018.11.22 mac中"允许所有安装来源"的命令 & Mac窗口标题显示文件的路径

    当Mac遇到软件无法安装或者此文件已经损坏之类的时候 原因是软件为破解版,地址来源已改变,被系统拦截了,解决办法就是直接在终端中输入"sudo spctl --master-disable ...

  7. 【luogu P3381 最小费用最大流】 模板

    题目链接:https://www.luogu.org/problemnew/show/P3381 把bfs变成spfa #include <queue> #include <cstd ...

  8. 关于改变placeholder的颜色

    input::-webkit-input-placeholder{ color:red; } input::-moz-placeholder{ /* Mozilla Firefox 19+ */ co ...

  9. 一站式学习Redis 从入门到高可用分布式实践(慕课)第六章 Redis开发运维常见问题

    fork操作 1.同步操作 2.与内存量息息相关:内存越大,耗时越长(与机器类型有关) 3.info:latest_fork_usec 进程外开销 AOF追加阻塞 不知道哪个命令??? 单机多实例部署 ...

  10. JavaScript实现快速排序(Quicksort)

    目前,最常见的排序算法大概有七八种,其中"快速排序"(Quicksort)使用得最广泛,速度也较快.它是图灵奖得主 东尼·霍尔(C. A. R. Hoare)于1960时提出来的. ...