一、主从复制介绍
master-slave 模式的复制机制,这种机制使得 slave 节点可以成为与 master 节点完全相同的副本,可以采用一主多从或者级联结构。架构如下:
主从复制原理流程
slave启动,连接master:
1、slave启动成功连接到master后会发送一个同步命令
2、slave首次全新连接到master,一次完全同步(全量复制)将被自动执行,slave自身原有数据会被master数据覆盖清除。
首次连接,全量复制:
3、master节点收到同步命令后会开始在后台保存快照(即RDB持久化,主从复制时会触发RDB),同时收集所有接收到的用于修改数据命令缓存起来,master节点执行RDB持久化完成后,master将rdb快照文件和所有缓存的命令发送到所有slave,已完成一次完全同步
4、而slave服务器在接收到数据库文件数据后,将其存盘并加载到内存中,从而完成复制初始化。
保持通信:
5、master会发出PING包给slave,以此来确认slave是否存活。默认时间是10s
6、当第一次全量复制后,master如果有新增的数据,将会收集新的数据自动一次传给slave,完成同步
从机下线,重连续传:
7、当slave宕机或者下线后,master会检查backlog里面的offset,master和slave都会保存一个复制的offset还有一个masterId。master只会把已经复制的offset后面的数据复制给slave,类似于断点续传。
二、主从复制的作用
- 水平扩容支持高并发:在主从复制的基础上,配合读写分离,可以由主节点提供写服务,由从节点提供读服务(即写Redis数据时应用连接主节点,读Redis数据时应用连接从节点),分担服务器负载;尤其是在写少读多的场景下,通过多个从节点分担读负载,可以大大提高Redis服务器的并发量。
- 数据备份
- 容灾恢复:当主节点出现问题时,可以由从节点提供服务,实现快速的故障恢复
- 数据备份,手动备份(DUMP命令)、自动备份(RDB、AOF持久化方式)
三、配置及常用命令
三台服务器配置从库,不配置主库;
查看每个redis服务的角色:
发现他们都是master角色,如何分配主从关系:
配从不配主: slaveof 主节点ip 主节点port
info replication