Skip to content

Latest commit

 

History

History
79 lines (54 loc) · 2.98 KB

11.redis持久化和导入导出数据库.md

File metadata and controls

79 lines (54 loc) · 2.98 KB

1. redis持久化

1.1. rdb快照持久化

rdb的工作原理:每隔N分钟或N次写操作后,从内存dump数据形成rdb文件,压缩放在备份目录,设置配置文件参数:

# 打开配置文件
vim /usr/local/redis/ redis.conf

    save 900 1       # 900秒内,有1条写入,则产生快照 
    save 300 1000   # 如果300秒内有1000次写入,则产生快照
    save 60 10000   # 如果60秒内有10000次写入,则产生快照
    (这3个选项都屏蔽,则rdb禁用)

    stop-writes-on-bgsave-error yes  # 后台备份进程出错时,主进程停不停止写入
    rdbcompression yes       # 导出的rdb文件是否压缩
    Rdbchecksum   yes       # 导入rbd恢复时数据时,要不要检验rdb的完整性

    dbfilename dump.rdb      # 导出来的rdb文件名
    dir /usr/local/redis/data   # rdb的放置路径

# 压力测试来检测是否启用了rdb快照
/usr/local/redis/bin/redis-benchmark

rdb的缺陷:在2个保存点之间断电,将会丢失1-N分钟的数据

1.2. aof日志持久化

工作原理:redis主进程 –> 后台日志进程 –> aof文件

设置配置文件参数:

# 打开配置文件
vim /usr/local/redis/ redis.conf

    appendonly no        # 是否打开 aof日志功能
    appendfilename "appendonly.aof" # aof文件名,和rdb的dir公用一个路径

    #appendfsync always   # 每1个写命令都立即同步到aof文件,安全但速度慢
    appendfsync everysec # 折衷方案,每秒写1次
    上面方案选择一种,一般选择everysec

    appendfsync no       # 写入工作交给操作系统,由操作系统判断缓冲区大小,统一写入到aof文件,同步频率低,但速度快

    no-appendfsync-on-rewrite  yes  # 正在导出rdb快照的过程中,要不要停止同步aof
    auto-aof-rewrite-percentage 100  # aof文件大小比起上次重写时的大小,增长率100%时重写
    auto-aof-rewrite-min-size 64mb   # aof文件至少超过64M时才重写

注意:如果需要持久化,一般推荐rdb和aof同时开启,同时开启后redis进程启动优先选择aof恢复数据。rdb恢复速度快。

在dump rdb过程中,aof如果停止同步,会不会丢失? 不会,所有的操作缓存在内存的队列里,dump完成后统一操作.

aof重写是指什么? aof重写是指把内存中的数据,逆化成命令,写入到.aof日志里,以解决 aof日志过大的问题,手动重写aof命令:bgrewriteaof

2. 导入和导出数据库

(1) 安装redis-dump工具
yum install ruby rubygems ruby-devel
gem sources --remove http://ruby.taobao.org/
gem sources -a https://ruby.taobao.org/
gem install redis-dump -V

(2) 导出redis数据
redis-dump -u 127.0.0.1:6379 > test.json

(3) 导入redis数据
< test.json redis-load