笔记迁移
主从复制
- 主从复制是什么
- 为什么需要主从复制
- 怎么做主从复制
- 哨兵模式
- 怎么做到的主从复制
一. 主从复制是什么
将redis服务器上的数据复制到另一台redis服务器上,前者叫做【master】主节点,后者叫【slave】从节点,并且复制过程是单向的,是【主 --->从】,所以从节点只可以读数据,却不可以写。
二. 为什么需要主从复制
解决单点故障【什么是单点故障】问题,实现高可用,比如只有一台服务器存放数据那它出现问题挂了,直接影响整个业务,而主从复制是分布式的,是在多机上的多节点,master到slave任何节点挂掉了,其他节点依然可以提供服务。
三. 怎么做主从复制
- slaveof host port
官方文档是这么写的
首先在docker中启动一个redis容器
docker run -d
--name redis
-p 6379:6379
-v P:/docker/data/redis/data:/data
-v P:/docker/conf:/etc/redis/redis.conf redi
docker run -d
--name redis1
-p 6380:6380
-v P:/docker/data/redis/data:/data
-v P:/docker/conf:/etc/redis/redis.conf redi
docker run -d
--name redis2
-p 6381:6381
-v P:/docker/data/redis/data:/data
-v P:/docker/conf:/etc/redis/redis.conf redi
docker stats查看运行的容器Id
docker exec -it <id> bash 进入一个redis容器
cat /etc/hosts查看分配的IP地址,选择这个redis容器做master主节点,那么先记录下它的IP
(这里用的docker for windows的bash )info replication 查看当前状态,显示没有从节点
进入另外两个redis容器分别执行,slaveof 172.17.0.2 6379 ,然后查看主节点
取消主从关系,在从节点中执行slaveof no one ,详细的文档如下
当主机挂掉,让从机变成新的主机时,之前的数据不会丢,唯一的麻烦是手动,那么哨兵就出现了。
四. 哨兵模式
- 什么是哨兵模式
-
- 一个独立的进程通过向redis服务器发送请求,然后等待它们响应从而来监控这些节点,有主节点宕机挂了,那么自动的以投票的方式选择从节点做新的主节点。
- 为了确保哨兵是高可用的【别整个检查的人挂了,那还怎么查别人】,设置多哨兵模式,多个哨兵之间互相监控 【它们同时也监控节点】。
- 如果主节点宕机了,哨兵1先发现,系统不会马上进行切换,只是哨兵1主观认为,这个现象叫做主观下线。如果后续其他哨兵也发现主机不可用,且数量达到一定值时,哨兵之间就会进行投票。
- 设置哨兵
-
- 在和docker启动redis容器挂载的conf目录下,新建
sentinal.conf,编写sentinel monitor sen1 172.17.0.2 6379 1或者进入docker中redis(master)容器在/etc/redis/redis.conf 目录下 添加。 - 启动哨兵(三个节点都这样做)
- 在和docker启动redis容器挂载的conf目录下,新建
- 新创建个哨兵容器
docker run -it --name sentinel1
-p 26379:26379
-v P:/docker/conf:/etc/redis/redis.conf
-d redis
然后和上面一样执行redis-sentinel sentinel.conf
查看哨兵
进入主节点,shutdown让它挂掉,然后再看哨兵的日志变化
从节点redis2变成了主节点
未完..