八、主从复制
1. 简介
(1)互联网“三高”架构:高并发、高性能、高可用
• 高并发 - 对数据库高并发读写的需求。
• 高性能 - 对海量数据的高效率存储和访问的需求。
• 高可用 - 对数据库的高可扩展性和高可用性的需求。
(2)单机redis的风险与问题
问题A.机器故障:硬盘故障、系统崩溃
问题B.容量瓶颈:内存不足 (128G/256G…)
(3)解决办法:
为了避免单点Redis服务器故障,准备多台服务器,互相连通。将数据复制多个副本保存在不同的服 务器上,连接在一起,并保证数据是同步的。即使有其中一台服务器宕机,其他服务器依然可以继续 提供服务,实现Redis的高可用,同时实现数据冗余备份。
(4)多台服务器连接方案
(5)主从复制
概念:即将master中的数据即时、有效的复制到slave中
特征:一个master可以拥有多个slave,一个slave只对应一个master
职责:
- master:
- 写数据
- 执行写操作时,将出现变化的数据自动同步到slave
- 读数据(可忽略)
- slave:
- 读数据
- 写数据(禁止)
2. 主从复制工作流程
(1)主从复制过程大体可以分为3个阶段
-
- 建立连接阶段(即准备阶段)
- 数据同步阶段
- 命令传播阶段
2)主从复制三个流程详述
阶段一:建立连接阶段
建立slave到master的连接,使master能够识别slave,并保存slave端口号
主从连接的三种方式(slave连接master):
方式一:从服务器的客户端发送命令
redis:6380> slaveof <masterip> <masterport>
方式二:启动从服务器时加参数
[root@localhost ~]# redis-server --slaveof <masterip> <masterport>
方式三:从服务器的redis.conf配置
slaveof <masterip> <masterport>
主从断开连接:
客户端发送命令
slaveof no one
注:slave断开连接后,不会删除已有数据,只是不再接受master发送的数据
授权访问:
如果master设置了requirepass,那么slave要连上master,需要有master的密码才行。masterauth 就是用来配置master的密码,这样可以在连上master后进行认证。
masterauth <master-password>
阶段二:数据同步阶段工作流程
在slave初次连接master后,复制master中的所有数据到slave
将slave的数据库状态更新成master当前的数据库状态
阶段三:命令传播阶段
当master数据库状态被修改后,导致主从服务器数据库状态不一致,此时需要让主从数据同步到一致的状态,同步的动作称为命令传播
master将接收到的数据变更命令发送给slave,slave接收命令后执行命令
(3)主从复制常见问题
- 频繁的网络中断
- 频繁的全量复制
- 数据不一致