生产环境redis备份与恢复

redis是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理。生产中我们主要用来存储用户的登录信息,设备的详情数据,以及会员签到点赞的信息等等。下面来记录下生产中redis的备份与恢复。
提到redis备份,就不得不提及redis的持久化的两种方式:RDB和AOF。

RDB模式

rdb文件实际上是当前redis数据集的一个快照,redis默认也是用dump.rdb来进行备份。

(1)配置文件分析

先来看下redis配置文件中关于dump.rdb的配置
save 900 1
save 300 10
save 60 10000

# 将DB同步到磁盘,使用SAVE命令,自动同步的触发条件: save <秒> <更新数>
# save 900 1 代表900秒内有1个key发生改变就触发save
# save 300 10 代表300秒内有10个key发生改变就触发save
# save 60 10000 代表300秒内有10个key发生改变就触发save
# 各条件之间是‘或’的关系,也就是说有一个条件满足就会触发save的操作
# 如果要禁用自动快照的功能,只需要将

stop-writes-on-bgsave-error yes
# 当后台进程执行save出错时,停止redis的写入操作。

rdbcompression yes
# 将rdb文件进行压缩

rdbchecksum yes
# 对rdb文件进行校验

dbfilename dump.rdb
# rdb文件命名

dir /mnt/redis_data
# rdb文件存储目录

也可以在命令行下查看:

127.0.0.1:6379> CONFIG GET dir
1) "dir"
2) "/mnt/redis_data"

(2)备份命令执行

备份redis可以手动使用SAVE命令,执行SAVE命令会使用主进程执行快照操作,这意味着在SAVE的过程中,会阻塞主进程。

SAVE

另一种操作是使用BGSAVE,使用BGSAVE的话redis会fork出一个子进程来执行快照操作,而不影响主进程。

BGSAVE

下面开始备份操作,首先进入生产服务器,查看redis状态:

127.0.0.1:6379> INFO
...
# Keyspace
db0:keys=285360,expires=3,avg_ttl=60319628
db1:keys=193361,expires=2121,avg_ttl=55351639
db5:keys=31,expires=2,avg_ttl=26979
db10:keys=586,expires=586,avg_ttl=48543037

可以查看目前redis的存储状态。下面开始备份

# redis-cli save
OK

为了看下备份的时间,使用time命令:

# time redis-cli save
OK

real    0m1.867s
user    0m0.000s
sys 0m0.010s

备份50万条数据,用时1.8秒,当然这跟数据的大小有直接关系。

(3)验证备份文件

首先到redis的快照目录下查看下备份的数据:

# cd /mnt/redis_data
# ls -l
-rw-r--r-- 1 root root  39M Feb  1 19:43 dump.rdb

将备份的文件拉到测试环境进行恢复测试,redis的恢复也很简单,将dump.rdb文件放到需要恢复的的服务器的快照目录下,并命名为dump.rdb,然后启动redis服务即可。(以下操作在测试机上进行)

127.0.0.1:6379> CONFIG GET dir
1) "dir"
2) "/mnt/redis_data"

127.0.0.1:6379> INFO
...
# Keyspace
127.0.0.1:6379>
127.0.0.1:6379>
127.0.0.1:6379>
# 没有数据

将备份文件拷贝到/mnt/redis_data/下

# ls -lh
total 39M
-rw-r--r--. 1 root root 39M Feb  1 06:54 dump.rdb

启动服务

#  /usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf

查看redis数据状态

127.0.0.1:6379> INFO
...
# Keyspace
db0:keys=285363,expires=3,avg_ttl=56465074
db1:keys=193350,expires=2106,avg_ttl=58764349
db5:keys=29,expires=0,avg_ttl=0
db10:keys=586,expires=586,avg_ttl=44861233

数据恢复成功。

(4)写成脚本定时执行

#!/bin/bash
REDIS_DIR=/mnt/redis_data
REDIS_CMD=/usr/local/redis/bin/redis-cli
now="$(date -d‘+0 day‘ +‘%Y%m%d%H%M%S‘)"

$REDIS_CMD save
[ $? -eq 0 ] && {
  cp $REDIS_DIR/dump.rdb $REDIS_DIR/dump_${now}.rdb
    rsync -avz $REDIS_DIR/dump_${now}.rdb [email protected]::dbm --password-file=/etc/rsync.passwd
}

加入定时任务:

5 0 * * *   /bin/sh  /opt/sh/redis_bkup.sh &>/dev/null

原文地址:http://blog.51cto.com/hld1992/2067917

时间: 2024-10-09 18:15:45

生产环境redis备份与恢复的相关文章

Nagios监控生产环境redis集群服务实战

前言:     以前做了cacti上展示redis性能报表图,可以看到redis的性能变化趋势图,但是还缺了实时报警通知的功能,现在补上这一环节.在redis服务瓶颈或者异常时候即使报警通知,方便dba第一时间处理维护. 1,下载redis监控插件 Redis已经在服务器安装好了,所以直接可以进行监控,redis集群安装请参考:http://blog.itpub.net/26230597/viewspace-1145831/,下载地址为:http://download.csdn.net/deta

redis的单机安装与配置以及生产环境启动方案

简单介绍一下redis的单机安装与配置,方便自己记录安装步骤的同时方便他人获取知识. 首先,从官网下载最新版的(稳定版)的redis安装包.官网地址如下:https://redis.io/download 下载源码包后,redis需要编译安装.需要安装gcc和tcl,gcc用于编译tcl用于测试. 使用命令安装gcc,yum install gcc,一路选择yes,gcc就可以安装成功. 接下来安装tcl,首先获取tcl源码包(见百度云盘)或者使用命令:wget http://downloads

redis概述,特点,与Memached的不同,生产环境主从配置,redis配置文件解析

Redis概述: 是一个基于Key-Value的持久化数据库存储,支持丰富的数据类型,用C语言编写,可基于内存又可持久化的日志型.Key-Value数据库,并提供多种语言的API Redis特点 1.Key-Value健值类型存储 2.支持数据可靠存储及落地 3.单进程单线程高性能服务器 4.单机qps(每秒查询率)可以达到10w 5.适合小数据量高速读写访问 Redis跟Memached的不同 1.Redis可以持久化数据存储 2.性能高很,Redis能支持超过10W每秒的读写频率 3.丰富的

生产环境部署单台redis

生产环境部署redis方案1.腾讯云有redis主从2.自己部署redis也很简单 (1)redis使用编译安装方式,所以需要安装编译基本组件# yum install gcc cpp glibc glibc-devel gcc-c++ (2)redis依赖jemalloc,所以先安装此组件# wget http://www.canonware.com/download/jemalloc/jemalloc-4.2.1.tar.bz2后续读者可以查看此链接获取更新版本jemalloc,http:/

基于redis的分布式锁(不适合用于生产环境)

基于redis的分布式锁 1 介绍 这篇博文讲介绍如何一步步构建一个基于Redis的分布式锁.会从最原始的版本开始,然后根据问题进行调整,最后完成一个较为合理的分布式锁. 本篇文章会将分布式锁的实现分为两部分,一个是单机环境,另一个是集群环境下的Redis锁实现.在介绍分布式锁的实现之前,先来了解下分布式锁的一些信息. 2 分布式锁 2.1 什么是分布式锁? 分布式锁是控制分布式系统或不同系统之间共同访问共享资源的一种锁实现,如果不同的系统或同一个系统的不同主机之间共享了某个资源时,往往需要互斥

生产环境中的 redis 是怎么部署的

redis cluster,10 台机器,5 台机器部署了 redis 主实例,另外 5 台机器部署了 redis 的从实例,每个主实例挂了一个从实例,5 个节点对外提供读写服务,每个节点的读写高峰qps可能可以达到每秒 5 万,5 台机器最多是 25 万读写请求/s. 机器是什么配置?32G 内存+ 8 核 CPU + 1T 磁盘,但是分配给 redis 进程的是10g内存,一般线上生产环境,redis 的内存尽量不要超过 10g,超过 10g 可能会有问题. 5 台机器对外提供读写,一共有

13.生产环境中的 redis 是怎么部署的?

作者:中华石杉 面试题 生产环境中的 redis 是怎么部署的? 面试官心理分析 看看你了解不了解你们公司的 redis 生产集群的部署架构,如果你不了解,那么确实你就很失职了,你的 redis 是主从架构?集群架构?用了哪种集群方案?有没有做高可用保证?有没有开启持久化机制确保可以进行数据恢复?线上 redis 给几个 G 的内存?设置了哪些参数?压测后你们 redis 集群承载多少 QPS? 兄弟,这些你必须是门儿清的,否则你确实是没好好思考过. 面试题剖析 redis cluster,10

Redis集群生产环境源码安装

安装redis集群  根据各人单位生产环境用户搭建一.安装环境    操作系统:centos7.6 关闭防火墙.关闭selinux redis1:192.168.26.128 redis2:192.168.26.129二.用户环境 groupadd usr useradd -g usr -md /usr/users/sw sw cd /usr/users/sw/ mkdir  app;mkdir  backup cd app mkdir redis make /applog chown -R s

CentOS(6.8)linux生产环境若干优化实战

CentOS系统安装之后并不能立即投入生产环境使用,需要经过运维人员的优化才行.在此讲解几点关于Linux系统安装后的基础优化操作. 注意:不同版本5.x和6.x两者优化时会有些区别. CentOS修改时区 echo 'ZONE="Asia/Shanghai"' > /etc/sysconfig/clock cp -f /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 优化条目: 1.   修改ip地址.网关.主机名.DNS等 2.