redis主从复制

一、Redis 支持简单且易用的主从复制(master-slave replication)功能, 该功能可以让从服务器(slave server)成为主服务器(master server)的精确复制品。实现读写分离,容灾恢复。(主机更新数据后根据配置和策略自动同步到备份机master 以写为主,slaver以读为主)
1、以下是关于 Redis 复制功能的几个重要方面:

  • Redis 使用异步复制。 从 Redis 2.8 开始, 从服务器会以每秒一次的频率向主服务器报告复制流(replication
    stream)的处理进度。
  • 一个主服务器可以有多个从服务器。
  • 不仅主服务器可以有从服务器, 从服务器也可以有自己的从服务器, 多个从服务器之间可以构成一个图状结构。
  • 复制功能不会阻塞主服务器: 即使有一个或多个从服务器正在进行初次同步, 主服务器也可以继续处理命令请求。
  • 复制功能也不会阻塞从服务器: 只要在 redis.conf 文件中进行了相应的设置, 即使从服务器正在进行初次同步,
    服务器也可以使用旧版本的数据集来处理命令查询。
  • 不过, 在从服务器删除旧版本数据集并载入新版本数据集的那段时间内, 连接请求会被阻塞。
  • 你还可以配置从服务器, 让它在与主服务器之间的连接断开时, 向客户端发送一个错误。
  • 复制功能可以单纯地用于数据冗余(data redundancy),
    也可以通过让多个从服务器处理只读命令请求来提升扩展性(scalability): 比如说, 繁重的 SORT 命令可以交给附属节点去运行。
  • 可以通过复制功能来让主服务器免于执行持久化操作: 只要关闭主服务器的持久化功能, 然后由从服务器去执行持久化操作即可。

2、怎么玩?
(1)配从不配主
(2)从库配置:slaverof 主库ip 主库端口
(3)拷贝多个reids.conf 文件
分别命名redis6379.conf、redis6380.conf、redis6381.conf ;
分别修改配置文件daemonize yes、port xxxx、 pidfile /var/run/redisxxxx.pid 、dumpxxxx.rdb logfile “xxxx.log”
(4)启动
redis-server /myredis/redis6379.conf redis-cli -p 6379
redis-server /myredis/redis6380.conf redis-cli -p 6380
redis-server /myredis/redis6381.conf redis-cli -p 6381
默认都是master
redis主从复制
(5)从机只能读不能写
(6)设置从机
SLAVEOF 127.0.0.1 6379
成为从机后,主机的所有数据都会被同步过来。
(7)一主二仆
当主机挂了,从机原地待命,主机恢复后一切照旧;
当从机挂了,与主机断开连接,恢复后会重新当master,除非在配置文件中配置。我们可以 用 SLAVEOF 127.0.0.1 6379 重新连接主机。查看如下:
redis主从复制
(8)薪火相传
一个从机可以有下一个从机
redis主从复制
(9)反客为主
如果主机挂了,两个从机需要选择新的主机

  slaveof  no one  选择6380的为主
从机重新认主     slaveof  127.0.0.1 6380

二、哨兵模式
主机挂了,在所有的从机当中投票选择一个新的主机,自动从库转为主库。
新建一个配置文件sentinel.conf

sentinel  monitor  host6379  127.0.0.1  6379  1 

然后进去/usr/local/bin/
redis主从复制

此时可以看到,启动起来后哨兵开始监控
当主机6379挂了后,就会进行投票:
redis主从复制
这里我们发现6381 成为了主机
redis主从复制
从机选出master后,自成为一个体系,当6379 重新回来后只能成为从机了。

主从复制就先介绍到这里了,小伙伴可以好好练习一下,看看效果。