文章目录
- 概念
- 主从复制
- 主从复制的作用
- 环境配置
- 总结
- 复制原理
- 宕机后手动配置主机
概念
主从复制
是指将一台 Redis 服务器的数据复制到其他的 Redis 服务器:
- 前者称为主节点(master/leader),后者成为从节点(slave/follower);
- 数据的复制是单向的,只能由主节点到从节点;
- 主节点以写为主,从节点以读为主。
默认情况下,每台 Redis 服务器都是一个主节点,且一个主节点可以有多个从节点(或者没有),但一个从节点只能有一个主节点。
主从复制的作用
- 数据冗余:主从复制实现了数据的热备份,是持久化以外的一种数据冗余方式;
- 故障恢复:当主节点故障时,可以由从节点提供服务,实现故障的快速恢复;
- 负载均衡:在主从复制的基础上,配合读写分离,可以由主节点提供写服务,从节点提供读服务,分担服务器负载。尤其在写少读多的情况下,通过多个节点分担读负载,可以大大提高 Redis 服务器的并发量。
- 高可用的基石:主从复制是哨兵模式和集群的基础。
环境配置
只配置从库,不配置主库。
查看当前库的信息:
127.0.0.1:6379> info replication
# Replication
role:master # 角色 master
connected_slaves:0 # 从机,没有从机
master_failover_state:no-failover
master_replid:3433f937ad4fc91627d580ed159a712565a66327
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:0
second_repl_offset:-1
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0
总结
- 主机只有写操作,从机只有读操作。在从机执行写操作会报错。
- 主机断开连接,从机依旧是连接到主机的,但是没有写操作;如果主机重新连接成功,从机依旧可以获取到主机写的数据。
复制原理
slave 启动成功连接到 master 后会发送一个 sync 同步命令,master 接到命令后,启动后台的存盘进程,同时收集所有接收到的用于修改数据集的命令,在后台进程执行完毕后,master 将传送整个数据文件到 slave,完成一次完全同步。
- 全量复制:slave 在接收到数据库文件数据后,将其存盘并加载到内存中;
- 增量复制:master 将新的收集到的修改数据的命令依次传给 slave,完成同步。
slave 只要重新连接 master,就会自动执行一次完全同步(全量复制)。
宕机后手动配置主机
配置从机:
slaveof 127.0.0.1 6379
使自己变成主机:
slaveof no one