开发者社区> 技术小胖子> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

Redis主从配置

简介:
+关注继续查看

一:原理


主要是通过master server持久化的rdb文件实现的。master server 先dump出内存快照文件,然后将rdb文件传给slave server,slave server 根据rdb文件重建内存表。


redis复制过程如下:
1)slave server启动连接到master server之后,salve server主动发送SYNC命令给master server
2)master server接受SYNC命令之后,判断,是否有正在进行内存快照的子进程,如果有,则等待其结束,否则,fork一个子进程,子进程把内存数据保存为文件,并发送给slave server
3)master server子进程进程做数据快照时,父进程可以继续接收client端请求写数据,此时,父进程把新写入的数据放到待发送缓存队列中
4)slave server 接收内存快照文件之后,清空内存数据,根据接收的快照文件,重建内存表数据结构
5)master server把快照文件发送完毕之后,发送缓存队列中保存的子进程快照期间改变的数据给slave server,slave server做相同处理,保存数据一致性
6)master server 后续接收的数据,都会通过步骤1建立的连接,把数据发送到slave server


注意:slave server如果因为网络或其他原因断与master server的连接,当slave server重新连接时,需要重新获取master server的内存快照文件,slave server的数据会自动全部清空,然后再重新建立内存表,这样会让slave server 启动恢复服务比较慢,同时也给master server带来较大压力,可以看出redis的复制没有增量复制的概念,这是redis主从复制的一个主要弊端,在实际环境中,尽量规避中途增加从库。redis2.8之前不支持增量,到2.8之后就支持增量了!

参考:http://blog.csdn.net/nuli888/article/details/52136822


二:说明


1、准备两台服务器

master:192.168.0.128

slave:192.168.0.129

2、关闭防火墙

iptables -F

# getenforce

Disabled


三、安装配置


1、分别都安装redis

参考我之前写的文章:Redis数据库的安装与配置

http://msiyuetian.blog.51cto.com/8637744/1717983

2、master配置文件不用动,slave配置文件上加一行

slaveof 192.168.0.128 6379      //主IP

masterauth 123456                 //如果主上设置了密码,若密码为123456,则要加这行

3、分别启动master和slave上的redis


四、验证主从


在从上查看日志

[root@slave ~]# tail /usr/local/redis/var/redis.log

[6117] 03 Dec 11:52:12.034 * Full resync from master: 37031d932827c403dfd2be6df445901ae3b67a65:1

[6117] 03 Dec 11:52:12.385 * MASTER <-> SLAVE sync: receiving 18 bytes from master

[6117] 03 Dec 11:52:12.385 * MASTER <-> SLAVE sync: Flushing old data

[6117] 03 Dec 11:52:12.385 * MASTER <-> SLAVE sync: Loading DB in memory

[6117] 03 Dec 11:52:12.385 * MASTER <-> SLAVE sync: Finished with success

[6117] 03 Dec 11:52:17.108 - 1 clients connected (0 slaves), 276592 bytes in use

[6117] 03 Dec 11:52:22.169 - 1 clients connected (0 slaves), 276592 bytes in use

[6117] 03 Dec 11:52:27.219 - 1 clients connected (0 slaves), 276592 bytes in use

[6117] 03 Dec 11:52:32.308 - 1 clients connected (0 slaves), 276592 bytes in use

[6117] 03 Dec 11:52:37.390 - 1 clients connected (0 slaves), 276592 bytes in use

若出现上面类似的信息,说明主从配置成功了。下面要进行示例验证

示例验证

在主上创建数据

[root@master ~]# redis-cli -a 123456

127.0.0.1:6379> set key1 123

OK

127.0.0.1:6379> set key2 456

OK

127.0.0.1:6379> sadd set1 aaa

(integer) 1

127.0.0.1:6379> sadd set1 bbb

(integer) 1

127.0.0.1:6379> sadd set1 ccc

(integer) 1

127.0.0.1:6379> keys *

1) "set1"

2) "key2"

3) "key1"

在从上查看

[root@slave ~]# redis-cli

127.0.0.1:6379> keys *

1) "key2"

2) "set1"

3) "key1"

127.0.0.1:6379> get key1

"123"

127.0.0.1:6379> get key2

"456"

127.0.0.1:6379> smembers set1

1) "ccc"

2) "aaa"

3) "bbb"

由上可知,实现了主从同步。


五、主从其他相关配置


1)slave-read-only yes                    //让从只读

2)repl-ping-slave-period 10           //设置slave向master发起ping的频率,每10s发起一次

3)repl-timeout 60                          //设置slave ping不通master多少秒后就超时

4)repl-disable-tcp-nodelay no       //是否开启tcp_nodelay,开启后将会使用更少的带宽,但会有延迟,所以建议关闭

5)repl-backlog-size 1mb               //同步队列的长度,backuplog是master的一个缓冲区,主从断开后,master会先把数据写入到缓冲区,slave再次连接会从缓冲区中同步数据

6)repl-backlog-ttl 3600                //主从断开后,缓冲区的有效期,默认1小时

7)slave-priority 100                     //多个slave是可以设置优先级的,数值越小优先级越高,应用于集群中,支持slave切换为master,优先级最高的才会切换

8)min-slaves-to-write 3              //和下面的一起使用,它的意思是master发现有超过3个slave的延迟高于10s,那么master就会暂停写操作。这两个数值任何一个为0,则关闭该功能,默认第一个数值是0

9)min-slaves-max-lag 10



      本文转自 M四月天 51CTO博客,原文链接:http://blog.51cto.com/msiyuetian/1719176,如需转载请自行联系原作者




版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Redis安装及主从配置
一、何为Redis   redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)和zset(有序集合)。
860 0
Windows下安装并设置Redis
Redis对于Linux是官方支持的,安装和使用没有什么好说的,普通使用按照官方指导,5分钟以内就能搞定。详情请参考: http://redis.io/download    但有时候又想在windows下折腾下Redis,可以从redis下载页面看到如下提示: Win64 Unoffi...
834 0
Windows下安装并设置Redis
作者: 铁锚 日期: 2014年8月10日 如果需要配置访问密码等,请参考:  Redis单机版简单安装脚本 Redis对于Linux是官方支持的,安装和使用没有什么好说的,普通使用按照官方指导,5分钟以内就能搞定。
831 0
CentOS 6 安装最新的 Redis 2.8 ,安装 TCMalloc
1,遇到的问题就是 redis 2.8 版本依赖 Google 的 TCMalloc TCMalloc(Thread-Caching Malloc)是google开发的开源工具──“google-perftools”中的成员。与标准的glibc库的malloc相比, TCMalloc在内存的分配上效率和速度要高得多,可以在很大程度上提高MySQL服务器在高并发情况下的性能,降低
1306 0
CentOS6.4 安装OpenResty和Redis 并在Nginx中利用lua简单读取Redis数据
1、下载OpenResty和Redis OpenResty下载地址:wget http://openresty.org/download/ngx_openresty-1.4.3.6.tar.gz Redis下载地址:wget http://download.
1163 0
Redis for Windows(C#缓存)安装和使用
本文个人同步博客地址: http://aehyok.com/Blog/Detail/98.html   个人网站地址:aehyok.com QQ 技术群号:206058845,验证码为:aehyok 本文文章链接:http://www.cnblogs.com/aehyok/p/3946286.html 感谢您的阅读,如果您对我的博客所讲述的内容有兴趣,那不妨点个推荐吧,谢谢支持:-O。
560 0
Linux Cenos 以RPM方式安装 redis
1,首先下载rmp 包: http://pkgs.org/download/redis rpm -ivh redis.*.rpm 2,修改配置文件 vi /etc/redis.conf  3,增加开机启动 chkconfig redis on chkconfig --list redis   resin          0:off  1:off  2:on  
1178 0
CentOS 下安装编绎安装Redis
先去http://www.redis.io/ 这个网站下载源码 tar -xvf redis-2.6.13.tar.gz cd redis-2.6.13 可以先扯下 vi READMIN 这个文档,很不错的 make  make test  报了一个错 You need tcl 8.
690 0
文章
问答
文章排行榜
最热
最新
相关电子书
更多
Redis Cluster的基本原理
立即下载
阿里云Redis——读写分离
立即下载
Codis 集群演化与 Redis 异步迁移
立即下载