文章目录
- 是什么
- 能干嘛
- 怎么玩
- 案例演示
- 复制原理和工作流程
- 复制的缺点
是什么
- 官网地址:https://redis.io/docs/management/replication/
- Redis 复制机制用于将数据从一个主节点(Master)复制到一个或多个从节点(Slave),以实现数据冗余、负载均衡和故障恢复。
- 一句话:就是主从复制,master 以写为主,slave 以读为主,当 master 数据变化的时候,自动将新的数据异步同步到其他的 slave 数据库
能干嘛
- 读写分离
- 容灾恢复
- 数据备份
- 水平扩容支撑高并发
怎么玩
-
配从(库)不配主(库):在 Redis 主从复制中,“配从不配主”是指只需要配置从节点(Slave)指向主节点(Master),而不需要配置主节点指向从节点。
- 主节点的主要职责是处理写操作和数据的变更。主节点不需要知道从节点的存在,它只需要将自己的数据变更传播给所有连接的从节点。这种设计简化了主节点的逻辑,使其更专注于数据写入和同步。
- 从节点是主动连接到主节点的,而不是主节点去连接从节点。从节点通过
SLAVEOF
命令或配置文件中的slaveof
指令,明确指定自己要复制的主节点。这种设计使得从节点可以动态地加入或离开复制拓扑,而不影响主节点的运行。
-
权限细节,重要
- master 如果配置了 requirepass 参数,需要密码登录
- 那么 slave 就要配置 masterauth 来设置校验密码,否则的话 master 会拒绝 slave 的访问请求
-
基本操作命令
info replication
,可以查看复制结点的主从关系和配置信息replicaof 主库IP 主库端口
,一般写入进 redis.conf 配置文件内,重启后生效slaveof 主库IP 主库端口
- 每次与 master 断开之后,都需要重新连接,除非你配置进了 redis.conf 文件
- 在运行期间修改 slave 节点的信息,如果该数据库已经是某个主数据库的从数据库,那么会停止和原主数据库的同步关系转而和新的主数据库同步,重新拜码头
slaveof no one
,使当前数据库停止与其他数据库的同步,转成主数据库,自立为王
案例演示
-
架构说明:
- 一个 Master 两个 Slave,三台虚拟机,每台都安装 redis
- 拷贝多个
redis.conf
文件:redis6379.conf
redis6380.conf
redis6381.conf
-
小口诀:
- 三台虚拟机需要能相互
ping
通且需要注意防火墙配置 - 三大命令
- 主从复制:
- replicaof 主库IP 主库端口
- 配从(库)不配主(库)
- 改换门庭:slaveof 新主库IP 新主库端口
- 自立为王:slaveof no one
- 主从复制:
- 三台虚拟机需要能相互
-
修改配置文件细节操作
-
开启daemonize yes:让程序以守护进程(daemon)模式运行。守护进程是在后台独立运行的进程,不与任何终端关联,通常用于服务器或长时间运行的服务。
-
注释掉
bind 127.0.0.1
:在 Redis 配置文件 redis.conf 中,bind 参数用于指定 Redis 服务器监听的网络接口(IP 地址)。默认情况下,Redis 只绑定到 127.0.0.1,这意味着它只能接受来自本机的连接。注释掉后,Redis 会监听所有可用的网络接口(0.0.0.0),允许来自任何 IP 地址的连接,Redis 可以从其他机器访问,前提是防火墙或安全组允许。 -
protected-mode no
:在 Redis 配置文件 redis.conf 中,protected-mode 是一个安全特性,用于保护 Redis 实例免受未授权访问。当你将 protected-mode 设置为 no 时,意味着禁用了这一保护模式。如果 protected-mode 设置为 yes(默认值),Redis 会进入保护模式。在保护模式下,如果 Redis 没有设置密码(requirepass)并且没有明确绑定到所有网络接口(bind 配置),Redis 只会接受来自 127.0.0.1(本地回环接口)的连接。这是为了防止 Redis 在没有适当安全配置的情况下暴露在外部网络中。 -
指定端口
-
指定当前工作目录,dir
-
pid文件名字,pidfile:在 Redis 配置文件 redis.conf 中,pidfile 参数用于指定 Redis 进程 ID(PID)文件的路径和名称。PID 文件是一个文本文件,其中包含 Redis 服务器进程的进程 ID(PID)。这个文件通常用于管理和监控 Redis 进程。
-
log文件名字,logfile:在 Redis 配置文件 redis.conf 中,logfile 参数用于指定 Redis 日志文件的路径和名称。Redis 会将运行时的日志信息(如启动信息、错误信息、调试信息等)写入该文件,方便排查问题和监控运行状态。
-
requiredpass
:在 Redis 配置文件 redis.conf 中,requirepass 参数用于设置 Redis 的访问密码。启用密码后,客户端在连接 Redis 时必须提供正确的密码才能执行操作。这是一个重要的安全特性,用于防止未授权访问。 -
dump.rdb 名字
-
aof 文件,appendfilename
-
从机访问主机的通行密码 masterauth,必须配置,从机需要配置,主机不用
-
-
常用 3 招
- 一主二仆
- 薪火相传
- 反客为主