网站推广营销怎么做,敏感网站用什么浏览器,建设工程监理 精品课网站,wordpress title 分类Redis 入门到精通#xff08;九#xff09;-- 主从复制#xff08;1#xff09;
一、redis 主从复制 – 主从复制简介
1、互联网“三高”架构
高并发高性能高可用
2、你的“Redis”是否高可用#xff1f;
1#xff09;单机 redis 的风险与问题 问题1.机器故障 现…Redis 入门到精通九-- 主从复制1
一、redis 主从复制 – 主从复制简介
1、互联网“三高”架构
高并发高性能高可用
2、你的“Redis”是否高可用
1单机 redis 的风险与问题 问题1.机器故障 现象硬盘故障、系统崩溃 本质数据丢失很可能对业务造成灾难性打击 结论基本上会放弃使用redis. 问题2.容量瓶颈 现象内存不足从16G升级到64G从64G升级到128G无限升级内存 本质穷硬件条件跟不上 结论放弃使用 redis
2为了避免单点 Redis 服务器故障准备多台服务器互相连通。将数据复制多个副本保存在不同的服 务器上连接在一起并保证数据是同步的。即使有其中一台服务器宕机其他服务器依然可以继续 提供服务实现 Redis 的高可用同时实现数据冗余备份。
3、多台服务器连接方案
1提供数据方master
主服务器主节点主库。主客户端。
2接收数据方slave
从服务器从节点从库。从客户端。
3需要解决的问题数据同步。
4核心工作master 的数据复制到 slave 中。 4、redis 主从复制
1主从复制即将master中的数据即时、有效的复制到 slave 中。
2特征一个master可以拥有多个slave一个slave只对应一个master
3职责
master: 写数据 执行写操作时将出现变化的数据自动同步到slave 读数据可忽略slave: 读数据 写数据禁止。
二、redis 主从复制 – 主从复制的作用
1、高可用集群 2、主从复制的作用
1读写分离master写、slave读提高服务器的读写负载能力。 2负载均衡基于主从结构配合读写分离由slave分担master负载并根据需求的变化改变slave的数量通过多个从节点分担数据读取负载大大提高Redis服务器并发量与数据吞吐量。 3故障恢复当master出现问题时由slave提供服务实现快速的故障恢复。 4数据冗余实现数据热备份是持久化之外的一种数据冗余方式。 5高可用基石基于主从复制构建哨兵模式与集群实现Redis的高可用方案。
三、redis 主从复制 – 主从复制的三个阶段
1、主从复制过程大体可以分为3个阶段
1建立连接阶段即准备阶段。 2数据同步阶段。 3命令传播阶段。
2、主从复制的三个阶段示例图 四、redis 主从复制 – 工作流程1建立连接阶段
1、阶段一建立连接阶段
建立 slave 到 master 的连接使 master 能够识别 slave并保存 slave 端口号。
2、建立连接阶段工作流程
步骤1设置 master 的地址和端口保存 master 信息。 步骤2建立 socket 连接。 步骤3发送 ping 命令定时器任务。 步骤4身份验证。 步骤5发送 slave 端口信息。 至此主从连接成功 3、建立连接后的状态
1slave保存 master 的地址与端口。 2master保存 slave 的端口。 3总体之间创建了连接的 socket。
五、redis 主从复制 – 搭建主从结构
1、主从连接slave 连接 master:
1方式一客户端发送命令
slaveof masterip masterport2方式二启动服务器参数
redis-server -slaveof masterip masterport3方式三服务器配置
slaveof masterip masterport4slave 系统信息
master_link_down_since_secondsmasterhostmasterport
5master 系统信息
slave_listening_port(多个)
2、主从断开连接客户端发送命令
slaveof no one 3、说明
slave 断开连接后不会删除已有数据只是不再接受 master 发送的数据。
4、redis 实际操作演示–redis 搭建主从结构打开2个服务端连接 6379-server 和 6380-server # 切换到 redis 安装目录 6379-server 服务端
cd /usr/local/redis/redis-4.0.0/# 查看 redis 服务是否后台启动成功
rootWIN-20240529BJA:/usr/local/redis/redis-4.0.0# ps -ef | grep redis-# 杀死 redis 服务进程如果已经启动 redis 服务可以先停止服务如PID 1742
rootWIN-20240529BJA:/usr/local/redis/redis-4.0.0# kill -s 9 1742# 修改 conf/redis-6379.conf 配置文件改为前台启动关闭守护进程注释日志记录。
vim conf/redis-6379.conf# 保存以下内容即可
port 6379
daemonize no
# logfile 6379.log# redis 持久化 -- RDB 相关配置
# data 目录为新建目录设置存储.rdb文件的路径
dir /usr/local/redis/redis-4.0.0/data# 设置本地数据库文件名
dbfilename dump-6379.rdb
# 设置存储至本地数据库时是否压缩数据
rdbcompression yes
# 设置是否进行 RDB 文件格式校验
rdbchecksum yes# save配置每10秒有2次数据变化就自动保存
save 10 2# 添加如下配置AOF存储功能
# 开启AOF持久化功能
appendonly yes
# AOF写数据策略每次
appendfsync always
# 设置文件名
appendfilename appendonly-6379.aof# 绑定主机地址
bind 127.0.0.1# 设置数据库数量
databases 16# 修改 conf/redis-6380.conf 配置文件改为前台启动关闭守护进程注释日志记录。
vim conf/redis-6380.conf# 保底以下内容即可
port 6380
daemonize no
# logfile 6380.log
# data 目录为新建目录
dir /usr/local/redis/redis-4.0.0/data# 指定配置文件启动 redis 服务 6379-server 服务端
rootWIN-20240529BJA:/usr/local/redis/redis-4.0.0# redis-server conf/redis-6379.conf# 指定配置文件启动 redis 服务 6380-server 服务端
rootWIN-20240529BJA:/usr/local/redis/redis-4.0.0# redis-server conf/redis-6380.conf# 方式二启动服务器参数先关闭 6380-server 服务端
redis-server conf/redis-6380.conf --slaveof 127.0.0.1 6379# 方式三服务器配置# 修改 conf/redis-6380.conf 配置文件添加 服务器配置。
vim conf/redis-6380.conf# 保底以下内容即可
port 6380
daemonize no
# logfile 6380.log
# data 目录为新建目录
dir /usr/local/redis/redis-4.0.0/data
# 添加 服务器配置
slaveof 127.0.0.1 6379# 指定配置文件重新 启动 redis 服务 6380-server 服务端
rootWIN-20240529BJA:/usr/local/redis/redis-4.0.0# redis-server conf/redis-6380.conf5、redis 实际操作演示–打开2个客户端连接slave 客户端 和 master 客户端 # 切换到 redis 安装目录
rootWIN-20240529BJA:/home/djh# cd /usr/local/redis/redis-4.0.0/# 指定端口号启动 redis 客户端slave 客户端
rootWIN-20240529BJA:/usr/local/redis/redis-4.0.0# redis-cli -p 6380
127.0.0.1:6380 # 方式一客户端发送命令用 6380 客户端 连接 6379 客户端
127.0.0.1:6380 slaveof 127.0.0.1 6379
OK# 指定端口号默认连接6379可不写端口号启动 redis 客户端master 客户端
rootWIN-20240529BJA:/usr/local/redis/redis-4.0.0# redis-cli
127.0.0.1:6379 # 创建数据在 master 客户端
127.0.0.1:6379 set name redis-master
OK# 获取数据slave 客户端获取成功说明同步成功。
127.0.0.1:6380 get name
redis-master# 方式二启动服务器参数先关闭 6380-server 服务端再带参数启动 6380-server 服务端然后在客户端测试。# 创建数据在 master 客户端
127.0.0.1:6379 set age 33
OK# 获取数据slave 客户端获取成功说明同步成功。
127.0.0.1:6380 get age
33# 方式三服务器配置先关闭 6380-server 服务端修改 配置文件 redis-6380.conf 重启服务 测试。# 创建数据在 master 客户端
127.0.0.1:6379 set addr xian
OK# 获取数据slave 客户端获取成功说明同步成功。
127.0.0.1:6380 get addr
xian# 查看 info 客户端 信息 在 master 客户端
127.0.0.1:6379 info # 查看 info 客户端 信息 在 slave 客户端
127.0.0.1:6380 info # 主从断开连接客户端发送命令 slaveof no one # 断开连接在 slave 客户端
127.0.0.1:6380 slaveof no one
ok
127.0.0.1:6380 # 创建新数据 在 master 客户端
127.0.0.1:6379 set name2 aaa666
ok
127.0.0.1:6379 # 获取新数据 在 slave 客户端
127.0.0.1:6380 get name2
(nil)
127.0.0.1:6380
6、授权访问
1 master 客户端发送命令设置密码
requirepass password2 master 配置文件设置密码
config set requirepass password
config get requirepass3slave 客户端发送命令设置密码
auth password4slave 配置文件设置密码
masterauth password5 slave 启动服务器设置密码
redis-server –a password六、redis 主从复制 – 工作流程2数据同步阶段简
1、阶段二数据同步阶段工作流程
在 slave 初次连接 master 后复制 master 中的所有数据到 slave。将 slave 的数据库状态更新成 master 当前的数据库状态。
2、数据同步阶段工作流程
步骤1请求同步数据 步骤2创建 RDB 同步数据 步骤3恢复 RDB 同步数据 步骤4请求部分同步数据 步骤5恢复部分同步数据 至此数据同步工作完成 3、状态
1slave具有 master 端全部数据包含 RDB 过程接收的数据。 2master保存 slave 当前数据同步的位置。 3总体之间完成了数据克隆。
上一节关联链接请点击 # Redis 入门到精通八-- 服务器配置-redis.conf配置与高级数据类型