redis数据备份 备份需要停止服务么

redis的两种备份方式 - CSDN博客
redis的两种备份方式
Redis提供了两种持久化选项,分别是和。
默认情况下60秒刷新到disk一次[save 60 10000 当有1w条keys数据被改变时],Redis的数据集保存在叫dump.rdb一个二进制文件,这种策略被称为快照。
也可以手动调用Save或BGSAVE命令的:
/usr/local/bin/redis-cli
-h 127.0.0.1 -p
6379 -a pwd bgsave
快照易恢复,文件也小,但是如果遇到宕机等情况的时候快照的数据可能会不完整。此时可能需要启用另一种持久化方式AOF,在配置文件中打开[appendonly yes]。
AOF刷新日志到disk的规则:
appendfsync always #always 表示每次有写操作都进行同步,非常慢,非常安全。
appendfsync everysec #everysec表示对写操作进行累积,每秒同步一次
官方的建议的everysec,安全,就是速度不够快,如果是机器出现问题可能会丢失1秒的数据。
也可以手动执行bgrewriteaof进行AOF备份:
/usr/local/bin/redis-cli
-h 127.0.0.1 -p
6379 -a pwd bgrewriteaof
我们现在的做法是一主(Master)多从(Slave),主库不开启AOF持久化,只是每天备份一下RDB[官方给的建议是每小时备份RDB文件,看你的策略了],而在从库上开启AOF备份,并且会用脚本将相应的备份文件推送到备份服务器。
当redis服务器挂掉时,重启时将按照以下优先级恢复数据到内存:
如果只配置AOF,重启时加载AOF文件恢复数据;如果同时 配置了RBD和AOF,启动是只加载AOF文件恢复数据;如果只配置RBD,启动是讲加载dump文件恢复数据。
恢复时需要注意,要是主库挂了不能直接重启主库,否则会直接覆盖掉从库的AOF文件,一定要确保要恢复的文件都正确才能启动,否则会冲掉原来的文件。
本文已收录于以下专栏:
相关文章推荐
Redis数据备份与恢复
RDB方式(默认)
RDB方式的持久化是通过快照(snapshotting)完成的,当符合一定条件时Redis会自动将内存中的所有数据进行快照并存储在硬...
Redis提供了两种持久化选项,分别是RDB和AOF。
默认情况下60秒刷新到disk一次[save 60 10000 当有1w条keys数据被改变时],Redis的数据集保存在叫dump.rd...
Redis数据备份与恢复
RDB方式(默认)
RDB方式的持久化是通过快照(snapshotting)完成的,当符合一定条件时Redis会自动将内存中的所有数据进行快照并存储在硬盘上...
Redis监控方案
Redis是一种高级key-value数据库。它跟memcached类似,不过数据可以持久化,而且支持的数据类型很丰富。有字符串,链表、哈希、集...
redis实战:redis自动备份与备份管理
原文链接: /redis/redis-tutorial.html
Redis 数据备份与恢复
Redis SAVE 命令用于创建当前数据库的备...
进入redis目录下
其实Redis是可以安装成windows服务的,开机自启动,命令如下:
redis-server --service-install redis.windows.conf
安装完之后,就可看...
如果的linux可以链接网络,那么可以直接联网下载。直接输入代码:wget/files/redis-3.0.2.tar.gz 但是不建议这么做,因...
从这一个介绍里面知道,redis比memcache作为缓存数据库强大的地方,一个是支持的数据类型比较多,另一个就是redis持久化功能。
下面就介绍Redis的持久化之RDB!一:什么是redis的...
他的最新文章
讲师:吴岸城
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)用户名:guojianrui
文章数:197
访问量:43967
注册日期:
阅读量:1297
阅读量:3317
阅读量:583782
阅读量:468913
51CTO推荐博文
运行环境:CentOS release 6.3 (Final)redis版本:redis-2.8.13&&wget # cd redis-2.8.13# make PREFIX=/usr/local/redis install# cp redis.conf /etc/&# grep -v "#" /etc/redis.conf |grep -v "^$" &&/root/redis.conf&&& 过滤下redis.conf下以#开头的行和空行,并且追加到/root/redis.conf&&&文件里# cp redis.conf /etc/redis.conf& 拷贝redis.conf到/etc/redis.conf&目录下&启动redis服务之前,需要先配置下面的内核参数,否则Redis脚本在重启或停止redis时,将会报错,并且不能自动在停止服务前同步数据到磁盘上:# vi /etc/sysctl.conf&& 在最后一行加入:vm.overcommit_memory = 1&& 1,表示内核允许分配所有的物理内存,而不管当前的内存状态如何。&启动redis两种方法1、# nohup /usr/local/redis/bin/redis-server /etc/redis.conf &2、另外一种方式启动redis放在后台执行:&&&&&&&&修改配置文件:# vim /etc/redis.conf 将daemonize no&& 改为daemonize yes然后启动redis:# /usr/local/redis/bin/redis-server /etc/redis.conf& &&使用redis:# /usr/local/redis/bin/redis-cli127.0.0.1:6379& set gjr 123456OK127.0.0.1:6379& get gjr"123456"&&测试redis性能:进入redis bin目录下:# cd /usr/local/redis/bin/[root@zoo1 bin]# ./redis-benchmark -h 127.0.0.1 -p 6379 -c 1000 -n 10000&&& 参数说明:-c 1000 -n 10000&&& 一千个并发请求一万次&&关闭redis:# /usr/local/redis/bin/redis-cli shutdown&redis备份恢复备份redis之前先停止redis服务:# /usr/local/redis/bin/redis-cli shutdown# cp dump.rdb &dump.rdb.bak&& 备份数据# rm -rf dump.rdb&&&& 删除数据# cp dump.rdb.bak& &dump.rdb& 恢复数据# /usr/local/redis/bin/redis-server /etc/redis.conf &&& 启动redis[root@zoo1 bin]# ./redis-cli&&&&&& 127.0.0.1:6379& get test01&& 查询结果"123456"127.0.0.1:6379& get gjr"123456"127.0.0.1:6379& get test02"987654"127.0.0.1:6379& exit本文出自 “” 博客,请务必保留此出处
了这篇文章
类别:┆阅读(0)┆评论(0)Redis数据备份与恢复 - CSDN博客
Redis数据备份与恢复
Redis数据备份与恢复
RDB方式(默认)
RDB方式的持久化是通过快照(snapshotting)完成的,当符合一定条件时Redis会自动将内存中的所有数据进行快照并存储在硬盘上。进行快照的条件可以由用户在配置文件中自定义,由两个参数构成:时间和改动的键的个数。当在指定的时间内被更改的键的个数大于指定的数值时就会进行快照。RDB是Redis默认采用的持久化方式,在配置文件中已经预置了3个条件:
save 900 1
# 900秒内有至少1个键被更改则进行快照
save 300 10
# 300秒内有至少10个键被更改则进行快照
save 60 10000 # 60秒内有至少10000个键被更改则进行快照
可以存在多个条件,条件之间是“或”的关系,只要满足其中一个条件,就会进行快照。 如果想要禁用自动快照,只需要将所有的save参数删除即可。
Redis默认会将快照文件存储在当前目录(可CONFIG GET dir来查看)的dump.rdb文件中,可以通过配置dir和dbfilename两个参数分别指定快照文件的存储路径和文件名。
Redis实现快照的过程
Redis使用fork函数复制一份当前进程(父进程)的副本(子进程);父进程继续接收并处理客户端发来的命令,而子进程开始将内存中的数据写入硬盘中的临时文件;当子进程写入完所有数据后会用该临时文件替换旧的RDB文件,至此一次快照操作完成。
在执行fork的时候操作系统(类Unix操作系统)会使用写时复制(copy-on-write)策略,即fork函数发生的一刻父子进程共享同一内存数据,当父进程要更改其中某片数据时(如执行一个写命令 ),操作系统会将该片数据复制一份以保证子进程的数据不受影响,所以新的RDB文件存储的是执行fork一刻的内存数据。
Redis在进行快照的过程中不会修改RDB文件,只有快照结束后才会将旧的文件替换成新的,也就是说任何时候RDB文件都是完整的。这使得我们可以通过定时备份RDB文件来实 现Redis数据库备份。RDB文件是经过压缩(可以配置rdbcompression参数以禁用压缩节省CPU占用)的二进制格式,所以占用的空间会小于内存中的数据大小,更加利于传输。
除了自动快照,还可以手动发送SAVE或BGSAVE命令让Redis执行快照,两个命令的区别在于,前者是由主进程进行快照操作,会阻塞住其他请求,后者会通过fork子进程进行快照操作。 Redis启动后会读取RDB快照文件,将数据从硬盘载入到内存。根据数据量大小与结构和服务器性能不同,这个时间也不同。通常将一个记录一千万个字符串类型键、大小为1GB的快照文件载入到内 存中需要花费20~30秒钟。
通过RDB方式实现持久化,一旦Redis异常退出,就会丢失最后一次快照以后更改的所有数据。这就需要开发者根据具体的应用场合,通过组合设置自动快照条件的方式来将可能发生的数据损失控制在能够接受的范围。如果数据很重要以至于无法承受任何损失,则可以考虑使用AOF方式进行持久化。
默认情况下Redis没有开启AOF(append only file)方式的持久化,可以在redis.conf中通过appendonly参数开启:
appendonly yes
在启动时Redis会逐个执行AOF文件中的命令来将硬盘中的数据载入到内存中,载入的速度相较RDB会慢一些
开启AOF持久化后每执行一条会更改Redis中的数据的命令,Redis就会将该命令写入硬盘中的AOF文件。AOF文件的保存位置和RDB文件的位置相同,都是通过dir参数设置的,默认的文件名是appendonly.aof,可以通过appendfilename参数修改:
appendfilename appendonly.aof
配置redis自动重写AOF文件的条件
auto-aof-rewrite-percentage 100
# 当目前的AOF文件大小超过上一次重写时的AOF文件大小的百分之多少时会再次进行重写,如果之前没有重写过,则以启动时的AOF文件大小为依据
auto-aof-rewrite-min-size 64mb
# 允许重写的最小AOF文件大小
配置写入AOF文件后,要求系统刷新硬盘缓存的机制
# appendfsync always
# 每次执行写入都会执行同步,最安全也最慢
appendfsync everysec
# 每秒执行一次同步操作
# appendfsync no
# 不主动进行同步操作,而是完全交由操作系统来做(即每30秒一次),最快也最不安全
Redis允许同时开启AOF和RDB,既保证了数据安全又使得进行备份等操作十分容易。此时重新启动Redis后Redis会使用AOF文件来恢复数据,因为AOF方式的持久化可能丢失的数据更少
通过持久化功能,Redis保证了即使在服务器重启的情况下也不会损失(或少量损失)数据。但是由于数据是存储在一台服务器上的,如果这台服务器的硬盘出现故障,也会导致数据丢失。为了避免单点故障,我们希望将数据库复制多个副本以部署在不同的服务器上,即使有一台服务器出现故障其他服务器依然可以继续提供服务。这就要求当一台服务器上的数据库更新后,可以自动将更新的数据同步到其他服务器上,Redis提供了复制(replication)功能可以自动实现同步的过程。
通过配置文件 从数据库的配置文件中加入slaveof master-ip master-port,主数据库无需配置
通过命令行参数 启动redis-server的时候,使用命令行参数--slaveof master-ip master port
redis-server --port 6380 --slaveof 127.0.0.1 6379
通过命令SLAVEOF master-ip master-port
redis&SLAVEOF 127.0.0.1 6379
SLAVEOF NO ONE可以是当前数据库停止接收其他数据库的同步,转成主数据库
优点及应用场景
读写分离 通过复制可以实现读写分离以提高服务器的负载能力。在常见的场景中,读的频率大于写,当单机的Redis无法应付大量的读请求时(尤其是较耗资源的请求,比如SORT命令等)可以通过复制功能建立多个从数据库,主数据库只进行写操作,而从数据库负责读操作。
从数据库持久化 持久化通常相对比较耗时,为了提高性能,可以通过复制功能建立一个(或若干个)从数据库,并在从数据库中启用持久化,同时在主数据库禁用持久化。当从数据库崩溃时重启后主数据库会自动将数据同步过来,所以无需担心数据丢失。而当主数据库崩溃时,需要在从数据库中使用SLAVEOF NO ONE命令将从数据库提升成主数据库继续服务,并在原来的主数据库启动后使用SLAVEOF命令将其设置成新的主数据库的从数据库,即可将数据同步回来。
如果发现错误,请轻拍,欢迎留言交流,谢谢
本文已收录于以下专栏:
相关文章推荐
Redis是一个高效的内存数据库,所有的数据都存放在内存中。我们知道,内存中的信息会随着进程的退出或机器的宕机而消失。为此,Redis提供了两种持久化机制:RDB和AOF。这两种持久化方式的原理实际上...
RDB方式(默认)
RDB方式的持久化是通过快照(snapshotting)完成的,当符合一定条件时Redis会自动将内存中的所有数据进行快照并存储在硬盘上。进行快照的...
rdb的工作原理:
每隔N分钟或N次写操作后,
从内存dump数据形成rdb文件,
放在备份目录
注:红色部分可通过参数来配置
rdb参数设置(redis.conf文件)
save 90...
Redis SAVE 命令用于创建当前数据库的备份
下面建立一个set集合,然后备份,删除集合中&if exists , i can backup&值,再恢复,当看到&ifexis...
rdb是redis支持的一种持久化方式,在进行rdb dump时,redis直接将内存中的所有数据写到磁盘的文件上,以实现持久化。以下三种情况会使用rdb dump:
通过save/bgsave...
Redis数据备份与恢复
RDB方式(默认)
RDB方式的持久化是通过快照(snapshotting)完成的,当符合一定条件时Redis会自动将内存中的所有数据进行快照并存储在硬...
Redis提供了两种持久化选项,分别是RDB和AOF。
默认情况下60秒刷新到disk一次[save 60 10000 当有1w条keys数据被改变时],Redis的数据集保存在叫dump.rd...
Redis提供了两种持久化选项,分别是RDB和AOF。
默认情况下60秒刷新到disk一次[save 60 10000 当有1w条keys数据被改变时],Redis的数据集保存在叫dump.rdb一...
本文主要介绍了 Redis 数据恢复的机制:
如果只配置 AOF ,重启时加载 AOF 文件恢复数据;
如果同时配置了 RDB 和 AOF ,启动是只加载 AOF 文件恢复数据;
如果只配置 RDB,...
cache-only即只做为“缓存”服务,不持久数据,数据在服务终止后将消失,此模式下也将不存在“数据恢复”的手段,是一种安全性低/效率高/容易扩展的方式;
persistence即为内存中的数据...
他的最新文章
讲师:吴岸城
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)简单粗暴的Redis数据备份和恢复方法
作者:Hunk Shi
字体:[ ] 类型:转载 时间:
这里我们来讲解一个简单粗暴的Redis数据备份和恢复方法,有一个在不同主机上迁移Redis数据的示例,还有一个备份脚本实现的关键点提示,一起来看一下:
目标:把服务器CentOS上的redis数据复制到Mac机上
在CentOS上找dump文件位置
vi /etc/redis.conf
dbfilename dump.rdb
dir /var/lib/redis
说明文件在
/var/lib/redis/dump.rdb
在mac上查找dump文件位置
vi /usr/local/etc/redis.conf
dbfilename dump.rdb
dir /usr/local/var/db/redis
拷贝服务器上的dump.rdb到mac机器
scp root@dv:/var/lib/redis/dump.rdb ./
在mac上重启Redis
launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.redis.plist
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.redis.plist
PS:备份脚本
看如下脚本,
#! /bin/bash
PATH=/usr/local/bin:$PATH
redis-cli SAVE
date=$(date +"%Y%m%d")
cp /var/lib/redis/6379/dump.rdb /data01/cache_backup/$date.rdb
echo "done!"
有如上脚本,便可以cron等方式备份redis数据文件了。细节如下:
首先必须进行SAVE, 因为redis的rdb文件并非总是内存数据的完整镜像,备份之前必须进行SAVE,即向其发送SAVE命令,其次拷贝走其rdb文件即可。
rdb的具体路径不一定是如上路径,可以在redis配置文件中查找, /etc/redis/6379.conf
# The filename where to dump the DB
dbfilename dump.rdb
# The working directory.
# The DB will be written inside this directory, with the filename specified
# above using the 'dbfilename' configuration directive.
# Also the Append Only File will be created inside this directory.
# Note that you must specify a directory here, not a file name.
dir /var/lib/redis/6379
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具}

我要回帖

更多关于 linux redis 备份 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信