memcached主从复制之repcache

一、repcached特点:

1、互相同步

2、只支持单主单从

3、没有角色抢占功能(故障恢复后只能作为从服务器加入复制)

二、安装依赖(主和从服务器都要安装)

yum install linevent-devel

三、安装repcache

[[email protected] ~]# wget  -O /usr/local/src
[[email protected] ~]# cd /usr/local/src
[[email protected] src]# tar -zxvf memcached-1.2.8-repcached-2.2.tar.gz
[[email protected] src]# cd memcached-1.2.8-repcached-2.2
[[email protected] memcached-1.2.8-repcached-2.2]# ./configure --enable-replication --program-transform-name=s/memcached/repcached/
[[email protected] memcached-1.2.8-repcached-2.2]# make && make install
[[email protected] memcached-1.2.8-repcached-2.2]# cd ~

四、启动repcache(主和从服务器)

4.1、主服务器

[[email protected] ~]# repcached -p 11211 -v -d -u root
[[email protected] ~]# replication: listen

master上面的消息表示repcache的master已经启动,处于复制的监听状态,等待从服务器的连接。当slave服务器启动之后master服务器会提示“replication: accept”

4.2、从服务器

[[email protected] ~]# repcached -p 11211 -x 192.168.1.20 -v -d -u root
[[email protected] ~]# replication: connect (peer=192.168.1.20:11212)
replication: marugoto copying
replication: start

slave上面的消息表示已经开始了复制

五、repcache的参数说明

[[email protected] ~]# repcached -help
memcached 1.2.8
repcached 2.2
-p <num>      TCP port number to listen on (default: 11211)
-U <num>      UDP port number to listen on (default: 11211, 0 is off)
-s <file>     unix socket path to listen on (disables network support)
-a <mask>     access mask for unix socket, in octal (default 0700)
-l <ip_addr>  interface to listen on, default is INDRR_ANY
-d            run as a daemon
-r            maximize core file limit
-u <username> assume identity of <username> (only when run as root)
-m <num>      max memory to use for items in megabytes, default is 64 MB
-M            return error on memory exhausted (rather than removing items)
-c <num>      max simultaneous connections, default is 1024
-k            lock down all paged memory.  Note that there is a
              limit on how much memory you may lock.  Trying to
              allocate more than that would fail, so be sure you
              set the limit correctly for the user you started
              the daemon with (not for -u <username> user;
              under sh this is done with ‘ulimit -S -l NUM_KB‘).
-v            verbose (print errors/warnings while in event loop)
-vv           very verbose (also print client commands/reponses)
-h            print this help and exit
-i            print memcached and libevent license
-P <file>     save PID in <file>, only used with -d option
-f <factor>   chunk size growth factor, default 1.25
-n <bytes>    minimum space allocated for key+value+flags, default 48
-R            Maximum number of requests per event
              limits the number of requests process for a given con nection
              to prevent starvation.  default 20
-b            Set the backlog queue limit (default 1024)
-x <ip_addr>  hostname or IP address of peer repcached
-X <num>      TCP port number for replication (default: 11212)

六、测试

6.1、测试主写从读&从写主读

6.1.1、主写

[[email protected] ~]# telnet 192.168.1.20 11211
Trying 192.168.1.20...
Connected to 192.168.1.20.
Escape character is ‘^]‘.
set name 0 0 5
world
STORED

6.1.2、从写

[[email protected] ~]# telnet 192.168.1.21 11211
Trying 192.168.1.21...
Connected to 192.168.1.21.
Escape character is ‘^]‘.
set age 0 0 5
myage
STORED

6.1.3、从读

[[email protected] ~]# telnet 192.168.1.21 11211
Trying 192.168.1.21...
Connected to 192.168.1.21.
Escape character is ‘^]‘.
get name
VALUE name 0 5
world
END
get age
VALUE age 0 5
myage
END

6.1.4、主读

[[email protected] ~]# telnet 192.168.1.20 11211
Trying 192.168.1.20...
Connected to 192.168.1.20.
Escape character is ‘^]‘.
get age
VALUE age 0 5
myage
END
get name
VALUE name 0 5
world
END

不管是在master上还是从上写数据,都可以同步到另一台repcache服务器

6.2、测试master故障

6.2.1、杀掉master的repcached进程

[[email protected] ~]# ps -ef |grep repcached
root     17488     1  0 15:03 ?        00:00:00 repcached -p 11211 -v -d -u root
root     17528 16031  0 15:19 pts/2    00:00:00 grep repcached
[[email protected] ~]# kill 17488
[[email protected] ~]# replication: cleanup start
replication: close
replication: cleanup complete

这时从服务器会提示:

[[email protected] ~]# replication: close
replication: listen

表示slave服务器接管了master的角色并等待slave来连接,即从服务器变为主服务器

6.2.2、恢复主服务器的repcached进程

[[email protected] ~]# repcached -p 11211 -x 192.168.1.21 -v -d -u root
[[email protected] ~]# replication: connect (peer=192.168.1.21:11212)
replication: marugoto copying
replication: start

注意:主服务器恢复时必须以从服务器的角色恢复,即必须使用-x指定主的ip。

主服务器会提示

replication: accept
replication: marugoto start
replication: marugoto 2
replication: marugoto owari

故障及恢复的过程介绍完了,下面验证故障恢复后的数据是否完整

6.3、查看故障恢复后的主和从服务器的数据

6.3.1、查看主服务器的数据

[[email protected] ~]# telnet 192.168.1.21 11211
Trying 192.168.1.21...
Connected to 192.168.1.21.
Escape character is ‘^]‘.
get name
VALUE name 0 5
world
END
get age
VALUE age 0 5
myage
END

6.3.2、查看从服务器的数据

[[email protected] ~]# telnet 192.168.1.20 11211
Trying 192.168.1.20...
Connected to 192.168.1.20.
Escape character is ‘^]‘.
get name
VALUE name 0 5
world
END
get age
VALUE age 0 5
myage
END
时间: 2024-08-06 03:44:18

memcached主从复制之repcache的相关文章

Memcached主从复制+keepalived高可用架构

实现主从复制和高可用的方式 Memcached主从复制是指在主Mencached服务器上修改数据都会被同步到其他服务器上,MemcachedAPI客户端是无法判断连接到那一台Memcached服务器,所以需要VIP地址,提供给MemcachedAPI客户端进行连接.可以使用keepaived产生的VIP地址连接主Memcached服务器来完成,并且提供高可用架构. 环境准备 系统版本:Centos7 服务器规划 服务器 IP地址 主要软件 主Memcached 172.16.10.24 libe

Memcached主从复制+keepalived架构

实现主从复制和高可用的方式 Memcached主从复制是指在主Mencached服务器上修改数据都会被同步到其他服务器上,MemcachedAPI客户端是无法判断连接到那一台Memcached服务器,所以需要VIP地址,提供给MemcachedAPI客户端进行连接.可以使用keepaived产生的VIP地址连接主Memcached服务器来完成,并且提供高可用架构. 环境准备 服务器 IP地址的 主要软件 主Memcached 192.168.100.21 libevent.memcached.m

memcached主从复制

Repcached介绍 Repchched项目地址:http://repcached.sourceforge.net/ 关于repcached"repcached"是一个补丁集合,它添加数据复制功能到memcached 1.2.x. 主要目的 实现冗余memcached系统. 主要功能 多主复制. 异步数据复制. 支持所有的memcached命令(set, add, delete, incr/decr, flush_all, cas). Memcached 1.4.x的Repcache

repcached实现memcached主从复制

1.repcached介绍 使用repcached可以实现memcached的复制功能: 它是一个单master单slave的方案.但是它的master/slave都是可读写的,而且可以相互同步.如果master down掉,slave侦测到连接断了,它会自动listen而成为master.如果slave down掉,master也会侦测到连接断了,它会重新listen等待新的slave加入. 2.安装 安装文件准备 libevent-2.0.22-stable.tar.gz memcached

通过repcached实现memcached主从复制

一.环境 服务器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

干货,memcached+keepalived实现主主复制和高可用,详解!

keepalived+memcached主主复制高可用介绍: 客户端连接两台服务器之间的VIP地址,如果后端服务器故障自动切换. Keepalive原理: 1.故障检测: Keepalived的作用是检测memcached服务器的状态是否正常. 2.主从切换: Keepalived如果检测到memcached服务发生DOWN机或者死机等,能将VIP从主服务器移至从服务器 3.Keepalived如何发现memcached异常: 1) keepalived在memcached主服务器产生一个虚拟I

Redis与Memcached对比

Redis是一种高级key-value数据库.它跟memcached类似,不过数据可以持久化,而且支持的数据类型很丰富,有字符串.链表.集合和有序集合.支持在服务器端计算集合的并,交和补集等.还支持多种排序功能.所以Redis也可以被看成是一个数据结构服务器. Redis的所有数据是保存在内存中,然后不定期的通过异步方式保存到磁盘上(半持久化模式):也可以把每一次数据变化都写入到一个append only file(aof)里面(全持久化模式).      在Redis中,并不是所有的数据都一直

redis和memcached的区别(总结)

观点一: 1.Redis和Memcache都是将数据存放在内存中,都是内存数据库.不过memcache还可用于缓存其他东西,例如图片.视频等等: 2.Redis不仅仅支持简单的k/v类型的数据,同时还提供list,set,hash等数据结构的存储: 3.虚拟内存--Redis当物理内存用完时,可以将一些很久没用到的value 交换到磁盘: 4.过期策略--memcache在set时就指定,例如set key1 0 0 8,即永不过期.Redis可以通过例如expire 设定,例如expire n

为何Redis要比Memcached好用

Redis是新兴的通用存储系统,而Memcached仍有其适用领域 Memcached还是Redis? 在现代高性能Web应用中这一直是个争论不休的话题. 在基于关系型数据库的Web应用需要提高性能时,使用缓存是绝大多数架构师的第一选择,自然,Memcached和Redis通常是优先选择. 共同特征 都是 key-value 形式的内存数据库 都是NoSQL家族的数据管理解决方案 都基于同样的key-value 数据模型 所有数据全部放在内存中(这也是适用于缓存的原因) 性能得分不分伯仲,包括数