【Redis运行状态下切换RDB备份至AOF备份】
原文: http://blog.gqylpy.com/gqy/324
"redis持久化方式有哪些?又有何区别?
rdb
:基于快照的持久化,速度更快,一般用作备份,主从复制也是依赖于rdb持久化功能。aof
:以追加的方式记录redis操作日志的文件,可最大程度的保证redis数据安全,类似于mysql的binlog。
本文将在redis5.0.2版本中,通过CONFIG SET
命令,达到不重启redis服务的情况下,从RDB存储模式切换至AOF存储模式。
确保redis版本在2.2以上
[root@master redis5]# redis-server -v Redis server v=5.0.2 sha=00000000:0 malloc=jemalloc-5.1.0 bits=64 build=55a56548bc97ef03
redis当前的配置文件如下
# pid文件路径 pidfile /var/run/redis/6380.pid # 日志级别 loglevel notice # redis数据存放位置 dir /usr/local/redis5/db/6380/ # 日志文件路径 logfile /var/log/redis/6380.log # redis3.0之后的安全模式 # 安全模式可能会阻挡远程连接,可给redis设置密码解决这个问题 protected-mode yes # reids密码 requirepass redis_password """重点配置:重点在下面的配置""" # 指定本地数据库文件名,其存储的数据为二进制类型 dbfilename dump.rdb # 指定在多长时间内,有多少次更新操作才将数据同步到数据文件,redis默认提供了3个条件: save 900 1 save 300 10 save 60 10000 # 其分别为: # save 900 1 每900秒内有1个修改记录时转存 # save 300 10 每300秒内有10个修改记录时转存 # save 60 10000 每60秒内有10000修改记录时转存
可以看到,我们的当前实验环境为
rdb持久化存储模式
。
开始切换
.
登陆redis-cli插入些数据,并手动持久化:192.168.43.149:6380> set k1 v1 OK 192.168.43.149:6380> set k2 v2 OK 192.168.43.149:6380> save OK
安全起见,我们备份RDB数据:
[root@master redis5]# cp /usr/local/redis5/db/6380/dump.rdb /opt/
此时,再进入redis-cli,执行如下命令,开启AOF持久化:
# 开启AOF功能 192.168.43.149:6380> CONFIG set appendonly yes OK # 关闭RDB功能 192.168.43.149:6380> CONFIG set save '' OK
确保数据库中的key数量正确:
192.168.43.149:6380> keys * 1) "k2" 2) "k1"
开启AOF模式后,会自动生成appendonly.aof持久化文件:
[root@master redis5]# ls /usr/local/redis5/db/6380/ appendonly.aof dump.rdb
此时进入redis-cli的操作,都会被记录,且追加到appendonly.aof文件中,以达到持久化的目的。
192.168.43.149:6380> set k3 v3 OK
此时RDB已经正确切换至AOF,注意还得修改redis配置文件,添加AOF设置,不然重启后,通过config set的配置将丢失。
修改配置文件,使AOF模式永久生效
.
将上面展示的redis配置文件中标记的"重点配置"的配置项替换为下面的配置项:appendonly no appendfsync everyses
appendonly no
指定是否在每次更新操作后进行日志记录
·
redis在默认情况下是异步的把数据写入磁盘,如果不开启,可能会在断电时导致一段时间内> 的数据丢失
因为redis本身同步数据文件是按上面的save条件来同步的,所以有的数据会在一段时间内> 只存在于内存中
.
appendfsync everyses
指定更新日志的条件
此配置有3个可选值:
no
:等待操作系统进行数据缓存同步到磁盘(快)
always
:每次更新操作后手动调用fsync()将数据写到磁盘(慢,安全)
everysec
:每秒同步一次(折衷,默认值)
"
原文: http://blog.gqylpy.com/gqy/324
原文地址:https://www.cnblogs.com/bbb001/p/11371084.html
- Django中Q查询及Q()对象
- jboss eap 6.3 集群(cluster)-Session 复制(Replication)
- JSP中的Servlet及Filter
- Django ORM详解
- Web前端培训:怎样成长为一个优秀的Web 前端开发工程师?
- Git操作
- 人工智能做的肉,你想吃吗?
- 二、爬虫基础库
- 鱼与熊掌兼得,既要云服务创新也要管理传统网络
- Django-model进阶(中介模型,查询优化,extra,整体插入)
- flask-session组件
- day10、nfs+rsync全网备份及实时同步
- Flask-信号(blinker)
- Python中的单例模式的几种实现方式的及优化
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Python如何使用Matplotlib的作图
- 在tinycolinux上组建子目录引导和混合32位64位的rootfs系统
- 微服务中的负载均衡简单实现
- 3分钟短文:素未谋面,Laravel数据库模型初阶入门
- 在tinycolinux上编译seafile
- Alink漫谈(二十一) :回归评估之源码分析
- Linux环境下通过GDB调试C项目实战
- Alink漫谈(二十二) :源码分析之聚类评估
- Python3.x将代码打包成exe程序并添加图标
- 在tinycolinux上编译pypy和hippyvm
- IDEA 热部署配置 HotSwapAgent-IntelliJ-IDEA-plugin
- 在tinycolinux上编译odoo8
- 在tinycolinux上编译jupyter和rootcling组建混合cpp,python学习环境
- 110分钟使用Python搭建自己的IP定位查询接口
- python实现在线微博数据可视化