----------------redis备份恢复方法-----------------------------
1.采用aof恢复方法
若appendonly设置为no的情况下,在每个节点上执行bgrewriteaof命令生成一个aof文件
若appendonly已经为yes的话,在data目录会自动生成有aof文件
我这里是appendonly设置为no的,所以在每个节点上执行如下命令
./redis-cli -c -h 192.168.1.118 -p 1001
./redis-cli -c -h 192.168.1.118 -p 1002
./redis-cli -c -h 192.168.1.118 -p 1003

./redis-cli -c -h 192.168.1.85 -p 2001
./redis-cli -c -h 192.168.1.85 -p 2002
./redis-cli -c -h 192.168.1.85 -p 2003
如下:
192.168.1.118:1001> bgrewriteaof
Background append only file rewriting started
要是数据量很大的话,生成aof文件需要些时间
生成的aof文件是一些指令命令
[root@localhost c3]# more c3.aof
*2
$6
SELECT
$1
0
*3
$3
SET
$6
name15
$15
huangxueliang15
*3
$3
SET
$6
name25
$15
huangxueliang25
*3
$3
SET
$6
name18
$15
huangxueliang18

执行以上脚本后,在每个节点的data目录下都会生成一个aof文件

2.停掉现有的集群
192.168.1.118
./redis-cli -c -h 192.168.1.118 -p 1001 shutdown
./redis-cli -c -h 192.168.1.118 -p 1002 shutdown
./redis-cli -c -h 192.168.1.118 -p 1003 shutdown

192.168.1.85
./redis-cli -c -h 192.168.1.85 -p 2001 shutdown
./redis-cli -c -h 192.168.1.85 -p 2002 shutdown
./redis-cli -c -h 192.168.1.85 -p 2003 shutdown

3.初始化集群(删除data目录下的相应文件)
A.cluster-config-file指定的文件
B.data目录下的aof文件,文件我们不能删除,可以重命名的方式
C.data目录下的rdb文件
我这里是采用mv的方式
[root@localhost c1]# pwd
/opt/redis_cluster/data/c1
[root@localhost c1]# mv c1.aof bak_c1.aof
[root@localhost c1]# rm c1.conf
[root@localhost c1]# mv dump-c1.rdb bak_dump-c1.rdb

4.初始化集群(修改集群各节点端口号)
192.168.1.118(c1.conf,c2.conf,c3.conf)
1001->7001
1002->7002
1003->7003

192.168.1.85(c1.conf,c2.conf,c3.conf)
2001->8001
2002->8002
2003->8003

5.初始化集群(启动各节点)
192.168.1.118
/opt/redis_cluster/bin/redis-server /opt/redis_cluster/conf/c1.conf
/opt/redis_cluster/bin/redis-server /opt/redis_cluster/conf/c2.conf
/opt/redis_cluster/bin/redis-server /opt/redis_cluster/conf/c3.conf

192.168.1.85
/opt/redis_cluster/bin/redis-server /opt/redis_cluster/conf/c1.conf
/opt/redis_cluster/bin/redis-server /opt/redis_cluster/conf/c2.conf
/opt/redis_cluster/bin/redis-server /opt/redis_cluster/conf/c3.conf

5.初始化集群(创建集群)
/opt/redis_cluster/redis-trib.rb create --replicas 1 192.168.1.118:7001 192.168.1.118:7002 192.168.1.118:7003 192.168.1.85:8001 192.168.1.85:8002 192.168.1.85:8003

[root@localhost redis_cluster]# ./redis-trib.rb check 192.168.1.118:7001
>>> Performing Cluster Check (using node 192.168.1.118:7001)
M: 9af2a4297106fd62ca577946781f476b44bbd170 192.168.1.118:7001
slots:0-5460 (5461 slots) master
1 additional replica(s)
M: e2b286b2ce65b2afa4d9afabc9fbadb4106824d3 192.168.1.118:7002
slots:10923-16383 (5461 slots) master
1 additional replica(s)
S: fffaad68a73c0fe62e190c1bb39d92cdcb424eab 192.168.1.85:8003
slots: (0 slots) slave
replicates e2b286b2ce65b2afa4d9afabc9fbadb4106824d3
M: 68783efacb82dc3a52570f593aaa2fe40fb6623e 192.168.1.85:8001
slots:5461-10922 (5462 slots) master
1 additional replica(s)
S: 57a7b5eb8e1612bac7f16bcf7e6d0df9a4c5e3a0 192.168.1.85:8002
slots: (0 slots) slave
replicates 9af2a4297106fd62ca577946781f476b44bbd170
S: 078dc90bbe8d55b6aa6b321704cbe6baa8394505 192.168.1.118:7003
slots: (0 slots) slave
replicates 68783efacb82dc3a52570f593aaa2fe40fb6623e
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered

可以看到当前的集群是没有数据的
[root@localhost bin]# ./redis-cli -c -h 192.168.1.118 -p 7001
192.168.1.118:7001> keys *
(empty list or set)

6.数据恢复
步骤3的时候每个节点我们都备份了一个aof文件,那么我们采用该文件进行恢复
192.168.1.118:7001
./redis-cli -h 192.168.1.118 -p 7001 --pipe < /opt/redis_cluster/data/c1/bak_c1.aof
All data transferred. Waiting for the last reply...
Last reply received from server.
errors: 0, replies: 11

这里导入了11条记录,也就是原来节点的数据

192.168.1.118:7002
./redis-cli -h 192.168.1.118 -p 7002 --pipe < /opt/redis_cluster/data/c2/bak_c2.aof

192.168.1.118:7003
[root@localhost bin]# ./redis-cli -h 192.168.1.118 -p 7003 --pipe < /opt/redis_cluster/data/c3/bak_c3.aof
All data transferred. Waiting for the last reply...
MOVED 10325 192.168.1.85:8001
MOVED 6586 192.168.1.85:8001
MOVED 7702 192.168.1.85:8001
MOVED 10767 192.168.1.85:8001
MOVED 6888 192.168.1.85:8001
MOVED 7012 192.168.1.85:8001
MOVED 6462 192.168.1.85:8001
MOVED 10589 192.168.1.85:8001
MOVED 7368 192.168.1.85:8001
MOVED 6764 192.168.1.85:8001
MOVED 8090 192.168.1.85:8001
MOVED 5878 192.168.1.85:8001
MOVED 7244 192.168.1.85:8001
MOVED 10713 192.168.1.85:8001
MOVED 10891 192.168.1.85:8001
MOVED 7966 192.168.1.85:8001
Last reply received from server.
errors: 16, replies: 17
[root@localhost bin]#
发现该节点是从节点,不需要导入数据,从上面的配置信息发现也是报错

以下操作发现是从节点的也会报上面的错误
192.168.1.85:8001
./redis-cli -h 192.168.1.85 -p 8001 --pipe < /opt/redis_cluster/data/c1/bak_c1.aof
192.168.1.85:8002
./redis-cli -h 192.168.1.85 -p 8002 --pipe < /opt/redis_cluster/data/c2/bak_c2.aof
192.168.1.85:8003
./redis-cli -h 192.168.1.85 -p 8003 --pipe < /opt/redis_cluster/data/c3/bak_c3.aof

其实恢复过程只需要主节点上的aof文件即可

7.检查数据恢复情况(检查主节点上的记录即可)
[root@localhost bin]# ./redis-cli -h 192.168.1.118 -p 7001
192.168.1.118:7001> keys *
1) "name40"
2) "name22"
3) "name31"
4) "name26"
5) "name35"
6) "name08"
7) "name04"
8) "name17"
9) "name13"
10) "name39"

[root@localhost bin]# ./redis-cli -h 192.168.1.118 -p 7002
192.168.1.118:7002> keys *
1) "name10"
2) "name03"
3) "name19"
4) "name25"
5) "name06"
6) "name14"
7) "name36"
8) "name02"
9) "name07"
10) "name29"
11) "name21"
12) "name32"
13) "name15"
14) "name18"
15) "name11"
192.168.1.118:7002>

[root@localhost bin]# ./redis-cli -h 192.168.1.85 -p 8001
192.168.1.85:8001> keys *
1) "name33"
2) "name30"
3) "name34"
4) "name23"
5) "name01"
6) "name05"
7) "name09"
8) "name20"
9) "name12"
10) "name24"
11) "name37"
12) "name27"
13) "name16"
14) "name28"
15) "name38"

可以看到数据以及恢复,原来集群里的数据是name1-name40

redis恢复(aof)的更多相关文章

  1. Redis的AOF功能

    引言:  Redis是基于内存的数据库,同时也提供了若干持久化的方案,允许用户把内存中的数据,写入本地文件系统,以备下次重启或者当机之后继续使用.本文将描述如何基于Redis来设置AOF功能 什么是R ...

  2. Redis开启AOF导致的删库事件

    事件背景 Redis主从开启AOF,错误操作导致数据被清空. Redis主要作用:缓存.队列. 事故过程 Redis搭建了主从,持久化方式为RDB,RDB没有定时备份,且AOF都没有开启. 考虑到开启 ...

  3. Redis持久化——AOF(二)

    核心知识点: 1.AOF:以独立日志的方式记录写命令,重启时再执行命令.与RDB不同的是解决数据持久化的实时性,可以记录所有写操作. 2.AOF工作流程:写入命令.文件同步.文件重写.文件加载. 3. ...

  4. 一文了解:Redis的AOF持久化

    Redis的AOF持久化 每当Redis-Server接收到写数据时,就把命令以文本形式追加到AOF文件里,当重启Redis服务时,AOF文件里的命令会被重新执行一次,重新恢复数据.当AOF过大时将重 ...

  5. Golang 实现 Redis(4): AOF 持久化与AOF重写

    本文是使用 golang 实现 redis 系列的第四篇文章,将介绍如何使用 golang 实现 Append Only File 持久化及 AOF 文件重写. 本文完整源代码在作者GithubHDT ...

  6. redis 开启AOF 持久化

    redis 开启AOF 找到redis 安装目录 打开 redis.conf  修改以下参数: appendonly  yes        (默认no,关闭)表示是否开启AOF持久化: append ...

  7. Redis持久化——AOF日志

    最新:Redis内存--内存消耗(内存都去哪了?) 最新:Redis持久化--如何选择合适的持久化方式 最新:Redis持久化--AOF日志 更多文章... 上一篇文章Redis持久化--内存快照(R ...

  8. Redis - 持久化 AOF 和 RDB

    Redis - 持久化 AOF 和 RDB AOF AOF 持久化记录服务器执行的所有写操作命令,并在服务器启动时,通过重新执行这些命令来还原数据集. AOF 文件中的命令全部以 Redis 协议的格 ...

  9. redis 配置文件aof配置

    redis 配置文件aof配置: bind 127.0.0.1 port 6379 daemonize yes dbfilename dump.rdb dir /new_renpeng/redis/ ...

随机推荐

  1. IntelliJ IDEA 2017.2.6 x64 配置 tomcat 启动 maven 项目

    IntelliJ IDEA 2017.2.6 x64 配置 tomcat 启动 maven 项目 1.确认 IDEA 是否启用了 tomcat 插件 2.添加 tomcat 选择 tomcat 存放路 ...

  2. 屏蔽登录QQ后总是弹出的QQ网吧页面

    不知道从什么时候开始的,每次登录QQ的时候,有个叫qq网吧的页面都会弹出来,腾讯你是撒吗?这个公司真是死性不改.按照它的提示,已经设置了好几次这是我家,这特么不是网吧,然并卵.你说它技术不行吧,它堪称 ...

  3. sqlserver 表循环-游标、表变量、临时表

    SQL Server遍历表的几种方法 阅读目录 使用游标 使用表变量 使用临时表 在数据库开发过程中,我们经常会碰到要遍历数据表的情形,一提到遍历表,我们第一印象可能就想到使用游标,使用游标虽然直观易 ...

  4. [ipsec][crypto] 在IPSec ESP使用AES-GCM加密时的IV

    IV IV是指初始化向量. 在我们当前讨论的场景中: 在IPSec ESP使用AES-GCM加密 IV有两个含义: 1. ESP报文封装时的IV,RFC中称为 AES-GCM IV +-+-+-+-+ ...

  5. C博客作业01--分支,顺序结构

    1.本章学习总结 1.1 思维导图 1.2本章学习体会及代码量学习体会 1.2.1学习体会 因为暑假的时候没有事先了解过C语言这门课程,翁恺老师的学习视频没看,pta习题也没有刷,所以开学后学得也蛮吃 ...

  6. Jmeter压测基础(二)——Badboy功能、Jmeter参数化、检查点、集合点、动态关联、图形监控

    Badboy 以下稍微介绍一下badboy的部分功能: 1.Record;play(badboy打开后默认是recording状态) 2.Assertion(检查点/断言) 3.Variable: t ...

  7. VUE-007-通过路由 router.push 传递 query 参数(路由 name 识别,请求链接显示参数传递)

    在前端页面表单列表修改时,经常需要在页面切换的时候,传递需要修改的表单内容,通常可通过路由进行表单参数的传递. 首先,配置页面跳转路由.在 router/index.js 中配置相应的页面跳转路由,如 ...

  8. js中hash、hashchange事件

    1.hash即URL中"#"字符后面的部分. ①使用浏览器访问网页时,如果网页URL中带有hash,页面就会定位到id(或name)与hash值一样的元素的位置: ②hash还有另 ...

  9. theano使用GPU踩坑

    1.安装pygpu的部分 #使用豆瓣源or不使用,均安装失败 pip install pygpu -i http://pypi.douban.com/simple/ --trusted-host py ...

  10. 增长中的时间序列存储(Scaling Time Series Data Storage) - Part I

    本文摘译自 Netflix TechBlog : Scaling Time Series Data Storage - Part I 重点:扩容.缓存.冷热分区.分块. 时序数据 - 会员观看历史 N ...