主从复制的作用主要包括:
1、数据冗余:主从复制实现了数据的热备份,是持久化之外的一种数据冗余方式。
2、故障恢复:当主节点出现问题时,可以由从节点提供服务,实现快速的故障恢复;实际上是一种服务的冗余。
3、负载均衡:在主从复制的基础上,配合读写分离,可以由主节点提供写服务,由从节点提供读服务(即写Redis数据时应用连接主节点,读Redis数据
时应用连接从节点)分担服务器负载;尤其是在写少读多的场景下,通过多个从节点分担读负载,可以大大提高Redis服务器的并发量。
4、读写分离:可以用于实现读写分离,主库写、从库读,读写分离不仅可以提高服务器的负载能力,同时可根据需求的变化,改变从库的数量;
5、高可用基石:除了上述作用以外,主从复制还是哨兵和集群能够实施的基础,因此说主从复制是Redis高可用的基础。
主从复制原理
主从复制过程大体可以分为3个阶段:连接建立阶段(即准备阶段)、数据同步阶段、命令传播阶段。
复制过程大致分为6个过程 salve-》1 保存主节点信息 》2主从建立socket连接 》3发送ping命令 》4权限验证 》5同步数据集 》6命令持续复制
复制积压缓冲区
复制积压缓冲区是保存在主节点上的一个固定长度的队列,默认大小为1MB,当主节点有连接的从节点(slave)时被创建,这时主节点(master)响应写命令
时,不但会把命令发送给从节点,还会写入复制积压缓冲区
全量复制
用于初次复制或其它无法进行部分复制的情况,将主节点中的所有数据都发送给从节点,是一个非常重型的操作,当数据量较大时,会对主从节点和网络造成很大的开销
重点 从库复制超时会断开 可以通过repl-timeout设置超时时间
部分复制
用于处理在主从复制中因网络闪断等原因造成的数据丢失场景,当从节点再次连上主节点后,如果(条件允许),主节点会补发丢失数据给从节点。因为补
发的数据远远小于全量数据,可以有效避免全量复制的过高开销,需要注意的是,如果网络中断时间过长,造成主节点没有能够完整地保存中断期间执行
的写命令,则无法进行部分复制,仍使用全量复制
从节点开启主从复制,有3种方式: 2,3种属于动态配置
1.配置文件
在从服务器的配置文件中加入:slaveof <masterip> <masterport>,如果主库有密码配置主库密码 masterauth
2.启动命令形式
redis-server启动命令后加入--slaveof <masterip> <masterport> , 如果主库有密码config set masterauth
3.客户端命令
Redis服务器启动后,直接通过客户端执行命令:slaveof <masterip> <masterport>,则该Redis实例成为从节点。info replication命令可以看到复制的一些参数信息
关闭 protected-mode no
命令
info server 查看redis的服务器信息 比如运行的配置文件 run_id是多少等
info replication 查看主从的配置信息