redis主备同步配置方法

原创 2016年08月29日 11:53:07

1. 配置主备

假设主机ip:10.136.16.146 port:6789
备机ip:10.136.30.144

我们有两种方式为其配置备机

方法1:修改备机配置文件

redis.conf中增加

daemonize yes
slaveof 10.136.16.146 6789
# 如果主机有密码,则修改下面一行即可
# masterauth <master-password>

在备机上启动redis

redis-server ./tmp/redis.conf

连接上备机reids,执行info replication, 可以看到下面的结果

127.0.0.1:9303> info replication
# Replication
role:slave
master_host:10.136.16.146
master_port:6789
master_link_status:up
master_last_io_seconds_ago:0
master_sync_in_progress:0

...

此时,我们的主备就已配好。数据会自动同步(包括主机之前的数据),如果之前主机中有数据,此时已可以在备机中读取。

连接主机,执行info replication,可以看到下面结果

10.136.16.146:6789> info replication
# Replication
role:master
connected_slaves:1
slave1:ip=10.136.30.144,port=9303,state=online,offset=40383758059,lag=0
master_repl_offset:40383983932

...

可以看到,主机上已连接一台备份redis,正是我们刚刚启动的那台。

方法2:动态修改备机配置

当然,有时你可能没有权限修改备机redis配置文件或重启redis-server。这时,如果你想配置主备,只需要连上备机redis,执行:

slaveof 10.136.16.146 6789

#主机有密码,还要执行这条
#config set masterauth <password>

同样可以达到配置主备的目的

2.取消主备

有两种方法取消息主备
1. 直接在配置文件中去掉slaveof的配置,然后重启redis-server
2. 连入备机,执行

slaveof no one

取消主备后,在备机上执行info replication, 会看到

127.0.0.1:9303> info replication
# Replication
role:master
connected_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0

当前机器的角色已不再是slave, 而是master

3. 几个可能用到的参数

  1. slave-read-only:两个值,yes/no,用于控制slave是否为只读
  2. slave-serve-stale-data: 用于控制当slave和master失去连接或正在进行同步时,slave的行为。
    • yes(默认):仍然正常处理客户端请求,但数据可能是旧的
    • no:向客户端回复SYNC with master in progress

4. 建议

如果配置了主备,建议master开启数据持久化,或者至少不要让master在挂掉后可以自动重启。

可以想象这样一个场景:master未开启持久化,master挂了后被监控重启。这时,master中没有任何数据,slave由于和master同步,上面的数据也将被清空!

MySQL和Redis 数据同步解决方案整理

现在在中集E栈工作,最近在做一个Redis箱格信息数据同步到数据库Mysql的功能。 自己想了想,也有大概方案。 1.队列同步,变跟数据2份,使用消息队列,一份给Redis消费,一份给Mysql消费。...
  • LANGZI7758521
  • LANGZI7758521
  • 2016年09月21日 19:19
  • 12766

Redis 数据同步机制分析

Redis的主从同步机制可以确保redis的master和slave之间的数据同步。按照同步内容的多少可以分为全同步和部分同步;按照同步的时机可以分为slave刚启动时的初始化同步和正常运行过程中的数...
  • hjx_1000
  • hjx_1000
  • 2014年05月30日 15:31
  • 12967

redis数据同步

redis(主从),分布式
  • wang_wxd
  • wang_wxd
  • 2016年12月21日 08:55
  • 924

Redis主从同步原理-SYNC

和MySQL主从复制的原因一样,Redis虽然读取写入的速度都特别快,但是也会产生读压力特别大的情况。为了分担读压力,Redis支持主从复制,Redis的主从结构可以采用一主多从或者级联结构,下图为级...
  • sk199048
  • sk199048
  • 2016年02月23日 18:36
  • 18587

redis 与 数据库(Mysql)同步

最近接触 redis,发现其读取速度快,突然想到,redis 怎么和数据库同步呢,怎么能把数据库的所有数据存到redis里面,能使用户更快速的查找。方法1:mysql 同步到redis:解析mysql...
  • u013939884
  • u013939884
  • 2016年11月22日 15:59
  • 9001

redis与DB数据同步问题

最近做的一个项目中很多地方用到了redis,其中纠结了一下redis的数据持久化问题,毕竟是缓存,数据随时都有可能丢失,虽然概率不大,况且redis还会将数据持久到安装路径的一个文件中,但还是要保证缓...
  • seapeak007
  • seapeak007
  • 2016年11月30日 17:08
  • 4825

redis配置主从备份以及主备切换方案配置

前提:redis中,主从切换场景中,没有绝对的主和从,只有初始化的主和从,然后当主down后,从就变成主了,而主即使连接上,也是从,不会变为主 1、redis-server的主备关系:     需...
  • gsying1474
  • gsying1474
  • 2015年09月09日 00:12
  • 7902

redis的主从复制配置

redis的主从复制配置 一、     原理 Redis的主从复制功能非常强大,一个master可以拥有多个slave,而一个slave又可以拥有多个slave,如此下去,形成了强大的多级服务...
  • yangzhenzhen
  • yangzhenzhen
  • 2013年01月17日 10:29
  • 39841

Redis集群主备模式部署

网上有很多用Ruby安装Redis-cluster的文章,但是在实际环境下不想安装Ruby,所以本文主要介绍了用Redis命令部署Redis集群,并且为集群中每一个master实例增加一个slave实...
  • cjfeii
  • cjfeii
  • 2015年08月06日 17:33
  • 6945

redis 主备哨兵模式

转载自 作者:菩提树下的杨过 出处:http://yjmyzz.cnblogs.com  本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连...
  • u012099568
  • u012099568
  • 2016年04月08日 15:27
  • 2093
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:redis主备同步配置方法
举报原因:
原因补充:

(最多只允许输入30个字)