Redis系列(三)持久化,主从复制,哨兵,集群_肯特技术宅的博客-程序员宅基地

技术标签: java  数据库  redis  

Redis有两种方式进行持久化

一、RDB方式持久化

这种方式保存的是数据。

执行方法:

  1. 手动:save(已废弃)/bgsave
  2. 自动:在配置文件中 save m n

配置文件常用参数

  • RDB文件保存路径:配置文件中的dir
  • RDB文件保存文件名:配置文件中dbfilename
  • RDB文件是否压缩:配置文件中rdbcompression

二、AOF方式持久化

这种方式保存的是写命令,更主流。

默认关闭,要开启,配置文件中:appendonly yes

AOF重写:将当前数据转化为写命令,与旧AOF文件无关

  • 手动重写:bgrewriteaof
  • 自动重写:配置文件中:
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb

主从复制

哨兵和集群都是在复制基础上实现高可用的。主从复制完全在从节点发起,不需要我们在主节点做任何事情。

建立主从关系的途径:除配置文件外,还可以在从节点通过客户端执行命令:slaveof <masterip> <masterport>

从节点配置文件中的masterauth用于验证主节点密码,初学练习先去掉密码。

主从复制包括了连接建立阶段、数据同步阶段、命令传播阶段。

  • 其中数据同步阶段,有全量复制和部分复制两种数据同步方式;命令传播阶段,主从节点之间有PING和REPLCONF ACK命令互相进行心跳检测。

  • 当主从offset差距过大,超过复制积压缓冲区,只能进行全量复制。更改复制积压缓冲区大小,配置repl-backlog-size

哨兵

哨兵的核心功能是主节点的自动故障转移

架构:

image.png

  • 不同的哨兵节点应部署在不同的物理机上
  • 学习演示时,关掉redis密码
  • 强制故障转移:sentinel failover mymaster该命令可以强制对mymaster执行故障转移,即便当前的主节点运行完好;例如,如果当前主节点所在机器即将报废,便可以提前通过failover命令进行故障转移。
  • 主观下线:哨兵自己认为下线;客观下线:哨兵咨询其他哨兵,认为下线达到一定数量,则为客观下线。客观下线真针对主节点有效。

集群

  • 集群是多个节点的master数据共享,可以横向分担单个节点的master写入压力。

  • 集群由多个哨兵模式组成。但实际部署时,并没有配置哨兵,也能实现故障的自动转移。原理是各个master代理了sentinel的工作,由master选举下线的master中的一个slave变成新的master继续工作。

  • 建议不管项目大小,部署的时候都做集群,做好充分拓展准备。

  • Redis 5.0版本之后取消了Ruby脚本,集成到了redis-cli里,5.0之后搭建过程。注意构建集群用公网IP,阿里云的+10000的端口也要打开。要配置密码,不然会被攻击,键变成backup1, backup2。

    主从都要设置requirepass,从要设置masterauth。构建集群时加上-a参数指定密码。

    用阿里云搭建,外网访问不到公网IP解决方法:编辑nodes-端口.conf文件,将内网ip替换成公网ip

  • 带Ruby脚本的5.0之前搭建过程

  • 撤销集群:shutdown节点,删除集群配置文件和数据文件,只保留redis-端口.conf文件。

  • 删除节点:从节点可以直接删,主节点需要把槽都清空,再删。

    示例:

    redis-cli --cluster del-node 127.0.0.1:6381 26976c7da741133edf0648da207ce40336bcbcba,

    127.0.0.1:6379> cluster flushslots

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_41962502/article/details/117287417

智能推荐

随便推点