Redis 学习-持久化与主从复制
一、持久化
1. RDB
rdb 是 redis 内存到硬盘的快照,用于持久化
①. 通过执行命令,主动保存快照
save # 执行保存快照,执行时 redis 会处理阻塞状态直至执行完成。
bgsave # 异步执行保存快照。
②. 通过配置文件,自动生成快照策略
save 900 1 # 900秒内至少有1个key被改变则做一次快照
save 300 10 # 300秒内至少有300个key被改变则做一次快照
save 60 10000 # 60秒内至少有10000个key被改变则做一次快照
只要满足其中一条,就会通过 bgsave 命令自动保存 RDB 文件。
③. rdb 的所有配置
save m n
#配置快照(rdb)促发规则,格式:save <seconds> <changes>
#save 900 1 900秒内至少有1个key被改变则做一次快照
#save 300 10 300秒内至少有300个key被改变则做一次快照
#save 60 10000 60秒内至少有10000个key被改变则做一次快照
#关闭该规则使用svae “” dbfilename dump.rdb
#rdb持久化存储数据库文件名,默认为dump.rdb,建议改为dump-6379.rdb stop-write-on-bgsave-error yes
#yes代表当使用bgsave命令持久化出错时候停止写RDB快照文件,no表明忽略错误继续写文件。 rdbchecksum yes
#在写入文件和读取文件时是否开启rdb文件检查,检查是否有无损坏,如果在启动是检查发现损坏,则停止启动。 rdbcompression yes
#是否开启RDB文件压缩,该功能可以节约磁盘空间
④. 其他触发 bgsave 的方式
主从的全量复制时
debug reload 时
shutdown
2. AOF
AOF 是将 Redis 执行的每一条命令追加到文件中。
①. 开启 AOF(默认是关闭状态),通过命令开启,并回写到配置文件。
127.0.0.1:> config get appendonly
) "appendonly"
) "no"
127.0.0.1:> config set appendonly yes
OK
127.0.0.1:> config rewrite
OK
②. 同步策略,由配置参数 appendfsync 决定。
no:不使用 fsync 方法同步,而是交给操作系统write函数去执行同步操作,在 linux 操作系统中大约每 30 秒刷一次缓冲。这种情况下,缓冲区数据同步不可控,并且在大量的写操作下,aof_buf 缓冲区会堆积会越来越严重,一旦 redis 出现故障,数据丢失严重。
always:表示每次有写操作都调用 fsync 方法强制内核将数据写入到 aof 文件。这种情况下由于每次写命令都写到了文件中, 虽然数据比较安全,但是因为每次写操作都会同步到 AOF 文件中,所以在性能上会有影响,同时由于频繁的 IO 操作,硬盘的使用寿命会降低。
everysec:数据将使用调用操作系统 write 写入文件,并使用 fsync 每秒一次从内核刷新到磁盘。 这是折中的方案,兼顾性能和数据安全,所以 redis 默认推荐使用该配置。
③. 文件重写
手动触发
bgrewriteaof # 执行此命令
自动触发
auto-aof-rewrite-percentage 100 # 增长百分比100时重写
auto-aof-rewrite-min-size 64mb # 当AOF文件大于该值重写
④. AOF 的全部配置
auto-aof-rewrite-min-size 64mb
#当AOF文件大小大于该值时候才可能重写。 auto-aof-rewrite-percentage 100
#增长百分比,如100代表当前AOF文件是上次重写的两倍时候才重写。 appendfsync everysec
#no:不使用fsync方法同步,而是交给操作系统write函数去执行同步操作,在linux操作系统中大约每30秒刷一次缓冲。这种情况下,缓冲区数据同步不可控,并且在大量的写操作下,aof_buf缓冲区会堆积会越来越严重,一旦redis出现故障,数据
#always:表示每次有写操作都调用fsync方法强制内核将数据写入到aof文件。这种情况下由于每次写命令都写到了文件中, 虽然数据比较安全,但是因为每次写操作都会同步到AOF文件中,所以在性能上会有影响,同时由于频繁的IO操作,硬盘的使用寿命会降低。
#everysec:数据将使用调用操作系统write写入文件,并使用fsync每秒一次从内核刷新到磁盘。 这是折中的方案,兼顾性能和数据安全,所以redis默认推荐使用该配置。 aof-load-truncated yes
#当redis突然运行崩溃时,会出现aof文件被截断的情况,Redis可以在发生这种情况时退出并加载错误,以下选项控制此行为。
#如果aof-load-truncated设置为yes,则加载截断的AOF文件,Redis服务器启动发出日志以通知用户该事件。
#如果该选项设置为no,则服务将中止并显示错误并停止启动。当该选项设置为no时,用户需要在重启之前使用“redis-check-aof”实用程序修复AOF文件在进行启动。 appendonly no
#yes开启AOF,no关闭AOF appendfilename appendonly.aof
#指定AOF文件名,建议改为 appendonly-6379.aof
二、主从复制
1. 实现方式
即使同一台机器,也不建议使用 127.0.0.1
①. 命令方式
slaveof 127.0.0.1 6379 # 在从节点上执行此命令,将该 ip 和 port 设置为 master 节点 slaveof no one # 取消主从复制,将自己恢复为 master 节点
②. 配置文件方式
slaveof 127.0.0.1 6379 # 修改从节点配置文件
slaveof-read-only yes # 是否只读
2. 其他命令
info replication # 查看主从状态
Redis 学习-持久化与主从复制的更多相关文章
- Redis实战 | 持久化、主从复制特性和故障处理思路
前言 前面两篇我们了解了Redis的安装.Redis最常用的5种数据类型.本篇总结下Redis的持久化.主从复制特性,以及Redis服务挂了之后的一些处理思路. 前期回顾传送门: Linux下安装Re ...
- Redis学习笔记10--Redis主从复制
redis主从复制配置和使用都非常简单.通过主从复制可以允许多个slave server拥有和master server相同的数据库副本.下面是关于redis主从复制的一些特点: 1.ma ...
- 10 分钟彻底理解 Redis 的持久化和主从复制
在这篇文章,我们继续有关Redis方面知识的学习,一起了解一下其中一个非常重要的内容:Redis的持久化机制. 什么是Redis持久化? Redis作为一个键值对内存数据库(NoSQL),数据都存储在 ...
- Ubuntu redis 实战 持久化策略 主从复制 以及 故障恢复
推荐文章 redis数据结构学习 redis持久化 redis主从复制 redis哨兵
- 解密Redis的持久化和主从复制机制
Redis持久化 Redis 提供了多种不同级别的持久化方式: RDB 持久化可以在指定的时间间隔内生成数据集的时间点快照(point-in-time snapshot). AOF 持久化记录服务器执 ...
- Redis学习笔记(二) - 主从复制
概述 指将一台redis服务器上的数据,复制到其他redis服务器上,前者称为主服务器(master),后者称为从服务器(slave). 默认情况下主从关系为一对多关系. 数据复制是单向的,只能从主服 ...
- Redis的持久化和主从复制机制
Redis持久化 Redis 提供了多种不同级别的持久化方式: RDB 持久化可以在指定的时间间隔内生成数据集的时间点快照(point-in-time snapshot) AOF 持久化记录服务器执行 ...
- Redis学习-持久化
Redis 提供了多种不同级别的持久化方式: RDB 持久化可以在指定的时间间隔内生成数据集的时间点快照(point-in-time snapshot). AOF 持久化记录服务器执行的所有写操作命令 ...
- Redis学习-持久化机制
Redis持久化的意义 在于故障恢复 比如你部署了一个redis,作为cache缓存,当然也可以保存一些较为重要的数据 如果没有持久化的话,redis遇到灾难性故障的时候(断电.宕机),就会丢失所有的 ...
随机推荐
- ubuntu16.04 安装使用meld及问题
本文链接:https://blog.csdn.net/ai_liuliu/article/details/95504095安装meldsudo apt-get install meld启动meld方法 ...
- PG11开启WAL归档
-创建归档目录 mkdir -p $PGDATA/archive_wals chown -R postgres.postgres $PGDATA/archive_wals -修改参数(在配置文件中配置 ...
- html页面自适应宽度
html页面实现响应式的方式有很多,本篇介绍懒人必备一招见效的方法. 在head标签中加入 <meta name="viewport" content="width ...
- CFCA证书工具类
jar:com.cfca.pkibase-1.0.jar import java.io.UnsupportedEncodingException; import java.security.Secur ...
- LeetCode 513. 找树左下角的值(Find Bottom Left Tree Value)
513. 找树左下角的值 513. Find Bottom Left Tree Value 题目描述 给定一个二叉树,在树的最后一行找到最左边的值. LeetCode513. Find Bottom ...
- [转帖]Helm V2 迁移到 V3 版本
Helm V2 迁移到 V3 版本 -- :: Mr-Liuqx 阅读数 63更多 分类专栏: kubernetes 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上 ...
- Delphi 将视频 Base64 字符串转换为视频二进制文件
var Bytes: TBytes; Stream: TBytesStream; begin with System.NetEncoding.TBase64Encoding.Create do try ...
- Nvidia Jetson TX2开发板学习历程(1)- 详细开箱、上电过程
考试周已经结束了,开发板也已经到了.希望借着这个假期能够好好的利用这块开发板学习Linux系统以及Tensorflow的相关知识. 我打算将学习历程通过博客的方式写出来,作为自己的笔记,也可以供以后拿 ...
- HTML常用技巧
1. 为网页链接添加快捷键:accesskey 属性 https://zhidao.baidu.com/question/2267343500557447508.html 2. 键盘事件设置快捷键:h ...
- mysql中常见正则表达式的应用
查找name字段中以'st'为开头的所有数据: mysql> SELECT name FROM person_tbl WHERE name REGEXP '^st'; 查找name字段中以'ok ...