一、简介
主从是什么
主机数据更新后根据配置和策略,自动同步到备机的master/slaver机制,Master以写为主,Slave以读为主
为什么要引入
- 读写分离,性能扩展
- 容灾快速恢复
原理
二、Docker搭建,一主多从
1.因为docker部署redis默认不带配置文件,需要官网下载
版本一定要对应,不然有可能会报错
2.编写主、从配置文件
port 6379
requirepass 123456 appendonly yes
启动主redis
docker run -p 6379:6379 --name redis-master \
-v /qqquser/redis/redis6379.conf:/etc/redis/redis.conf \
-v /qqquser/redis/data:/data \
--restart=always \
-d redis:3.2 redis-server /etc/redis/redis.conf
port 6380
slaveof * 6379
masterauth 123456
requirepass 123456
appendonly yes
启动从redis
docker run -p 6380:6380 --name redis-master \
-v /qqquser/redis/redis6380.conf:/etc/redis/redis.conf \
-v /qqquser/redis/data:/data \
--restart=always \
-d redis:3.2 redis-server /etc/redis/redis.conf
127.0.0.1:6379> info replication
# Replication
role:master
connected_slaves:2
slave0:ip=*,port=6380,state=online,offset=2741,lag=1
slave1:ip=*,port=6381,state=online,offset=2755,lag=1
master_repl_offset:2755
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:2
repl_backlog_histlen:2754
三、错误情况演示
1.当主机正常,其中一个从服务挂掉
停止slave2,在主服务中添加一条数据,再启动slave2
发现数据加载成功
2.主服务器挂掉,从服务器正常
四、哨兵模式
1、进入三台redis容器:
2、进入容器根目录
3、创建哨兵配置文件:vim sentinel.conf(三台容器哨兵配置一模一样)
4.输入: port:26379
#哨兵端口号 一定要和启动命令映射第二个端口号一致 daemonize yes
#后台启动 sentinel monitor mymaster 主节点ip 主节点端口 1 几票当选
依次三台在sentinel.conf 配置文件同一级目录执行:redis-sentinel sentinel.conf