redis 主从模式

回复 收藏
公司的业务在慢慢扩大,原来集成在生产服务器上的redis 服务不得不迁出来,哎,又得运维去上了,对redis 的了解并不深入,好吧,只得在去恶补知识,从阿铭论坛到google搜索,好好的学习了一下,,当然也包括从新学习了一下铭哥的视频。其实,这项任务并不难搞,但是有个要求,就是尽可能的短时间的停服,甚至不停服迁移redis 。这个就有点小难度了,果断上google,找到一篇介绍redis主从的文章,看看先,文章有点新意,把redis的主从应用到redis的迁移中了,先做主从 >>  等待主从同步完成后 >> 切断主从 >> 从替换成新主 。大概的意思就是这个。
首先,master redis IP:192.168.1.110    slave redis IP: 192.168.1.120   
1.配置redis的主从
主上执行:
更改master redis 的配置文件,vim redis.conf  
          bind 127.0.0.1  192.168.1.110  //192.168.1.110 为主机的外网IP地址,因为redis 监听本地端口,其他机器是无法连接的
bash:  /etc/init.d/redis restart   //重启redis 的服务
从上执行:
更改slave redis 的配置文件,vim redis.conf
          slave-read-only  no                //更改从redis 为可写,因为redis 默认使用主从后,从库不在可写,我们配置主从的目的是替换到当前的主,所以需要可以写
bash: /etc/init.d/redis-server restart  //重启redis的服务


进入slave redis
bash:  redis-cli
redis> slaveof 192.168.1.110 6379
结果是OK
退出redis,打开redis 的日志文件,查看主从是否已经开始同步
bash:  tail -f /path/to/redis-server.log   
MASTER <-> SLAVE sync: Flushing old data
MASTER <-> SLAVE sync: Loading DB in memory
MASTER <-> SLAVE sync: Finished with success
出现以上信息,表示主从已经同步成功
bash:  redis-cli
redis> info   //查看redis的信息,可以看到Replication和Keyspace的信息
因为公司的存储在redis 上的数据比较小,所以同步速度比较快,如果数据量比较大的话,耐心等待一会,记得查看日志来确认redis是否已经同步成功

同步成功后,那我们就可以进行下一步的操作了
2.切断主从,使用从替换主,成为新的主
进入slave redis
bash: redis-cli
redis> slaveof no one   //是这个slave变成新master,并且保存主从同步的数据
redis> info    //查看redis的信息,Replication 的role 变成了master
从就已经切换成主了

ps : 到这里,就已经 告一段落了,但是我相信大家一定会发现,主从的前提是主是可以接受网络连接的,但是一般默认安装时是只监听本地的连接,这个问题,如何解决,不解决这问题,何谈不停机呢?
在这里,我想提一下我自己的想法,在主服务器(192.168.1.110)上再启动一个redis的服务,换一个端口(6380),使用这个做slave,然后把这个6380 开放网络连接,另一台服务器(192.168.1.120)上的redis连接192.168.1.110:6380 端口去同步,这样就能避免上述的问题,但是这种方法又带来新的问题,192.168.1.110 的内存不够,不足以支撑起两台redis的服务。

2016-05-23 16:27 举报
已邀请:

回复帖子,请先登录注册

退出全屏模式 全屏模式 回复
评分
可选评分理由: