55 redis主从复制之理论简介
定义
Redis 主从复制(Master-Slave Replication)是 Redis 提供的一种数据冗余和高可用机制,可以让一个 Redis 主节点的数据复制到一个或多个从节点,实现读写分离、容灾备份等功能。
-
主节点(Master):
-
支持读写操作。
-
会将写操作传播到所有从节点。
-
-
从节点(Slave):
-
只能读,默认不支持写(除非配置为可写)。
-
会从主节点同步数据,保持一致。
-
主从复制,master以写为主,Slave以读为主.当master数据变化的时候,自动将新的数据异步同步到其它slave数据库。
作用
- 读写分离
- 容灾恢复
- 数据备份
- 水平扩容支撑高并发
怎么玩
配从库不配主库:只在从库上配置主从关系,从库自动连接主库。你不需要在主库上做任何配置,只需要在从库上配置主节点的地址和端口,Redis 就能建立主从同步。
权限细节:在从库上配置主节点的地址和端口,Redis 就能建立主从同步。
master如果配置了requirepass参数【主节点开启了密码认证】,需要密码登陆那么slave就要配置masterauth来设置校验密码,否则的话master会拒绝slave的访问请求。masterauth
是 Redis 从节点连接主节点时用的认证信息。
基本操作命令
info replication
建立主从关系后,可以查看复制节点的主从关系和配置信息
replicaof 主库IP 主库端口
建立主从复制关系。一般写入redis.conf配置文件内。当前 Redis 实例会连接到指定的主节点,开始全量同步,并接收写入命令的同步。例如:REPLICAOF 127.0.0.1 6379
slaveof 主库IP 主库端口
建立主从复制关系,但每次与master断开之后,都需要重新连接,除非你配置进redis.conf文件【使用replicaof】
用于在运行期间修改slave节点的信息。如果该数据库已经是某个主数据库的从数据库,那么会停止和原主数据库的同步关系转而和新的主数据库同步,重新拜码头
slaveof no one
取消当前 Redis 实例的从库身份,使其退回为主库(master)。停止从其他主库同步数据。这在主库宕机后,手动切换从库为主库时很有用。
52 redis主从复制之演示架构
一个Master两个Slave:3台虚机,每台都安装redis
拷贝多个redis.conf文件:redis6379.conf、redis6380.conf、redis6381.conf
前提:三边网络相互ping通且注意防火墙配置
三大命令
主从复制:在从库配置的redis.conf文件中配置 replicaof 主库IP 主库端口
改换门庭:若在配置文件中写好了要复制的主库,此时想改复制的主库。可以使用slaveof 新主库IP 新主库端口
自立为王:取消当前 Redis 实例的从库身份,使其退回为主库(master)
57 redis主从复制之配置细节
修改配置文件细节操作
redis6379.conf为例,步骤【前提将redis.conf文件复制到/myredis下】
1. 开启daemonize yes
2. 注释掉bind 127.0.0.1
3. protected-mode no
4.指定端口 port 6379
【在操作系统层面,一个端口(比如 6379)在同一台机器上只能被一个 Redis 实例绑定。因此从机,主机 的端口号不能相同。】
5. 指定当前工作目录,dir /myredis
6. pid文件名字,pidfile 默认的不需要修改
7.log文件改名字,logfile "/myredis/6379.log"
8. 设置requirepass 开启密码认证
9. 改dump.rdb名字
10.开启aof aof文件,appendfilename【步骤可选非必须】
11. 从机访问主机的通行密码masterauth,必须【仅需从机配置】
从机配置