关键词
- slave 从Redis服务器
- Master 主redis服务器
说明 :每次当主从redis 链接断开时 都会自动链接,并且无论这期间 master 发生了什么, slave 都将尝试让自身成为 master 的精确副本。
链接的三个重要机制
- 当一个 master 实例和一个 slave 实例连接正常时, master 会发送一连串的命令流来保持对 slave 的更新,以便于将自身数据集的改变复制给 slave ,
包括客户端的写入、key 的过期或被逐出等等。 - 当 master 和 slave 之间的连接断开之后,因为网络问题、或者是主从意识到连接超时, slave 重新连接上 master 并会尝试进行部分重同步:这意味着它会尝试只获取在断开连接期间内丢失的命令流。
- 当无法进行部分重同步时, slave 会请求进行全量重同步。这会涉及到一个更复杂的过程,例如 master 需要创建所有数据的快照,将之发送给 slave ,之后在数据集更改时持续发送命令流到 slave 。
特点
- 一个主服务器 可以有多个从服务器
- 从服务器可以做为主服务器 Master=>slave(Master)=>slave
当 master 关闭持久化时,复制的安全性
- 在使用 Redis 复制功能时的设置中,强烈建议在 master 和在 slave 中启用持久化。当不可能启用时,例如由于非常慢的磁盘性能而导致的延迟问题,应该配置实例来避免重置后自动重启。 不然会导致数据丢失
配置
- 需要搭建主从复制我们只需要在Redis.conf 文件中进行配置即可,下面介绍如何使用Docker 作为从服务器
docker
- Docker pull redis --拉取redis 镜像
- 下载redis.conf 到本地 用来挂载到docker
- 在redis.conf 中加入 slaveof 主服务器ip 主服务器端口 将port 配置为6380 避免冲突
- 打开主服务器
- 启用docker
docker run -p:6380:6380 --net=host --name myredisSavlos -v /home/yh/redis/salveredis/redis-6.0.6/redis.conf:/etc/redis/redis.conf -d redis redis-server /etc/redis/redis.conf --appendonly yes
- – net=host 与本机进行映射
- –name myredissavlos 别名
- – -v 文件映射 前面为本机 后面为容器redis路径
- – -d redis 后台启动
- –appendonly yes 开启持久化
- – -p:6380:6380 端口映射
现在主从架构就配置完成了