《云计算》-redis数据库:使用AOF文件恢复数据

3 案例3 :使用AOF文件恢复数据
3.1 问题

要求如下:
启用AOF
备份AOF文件
删除数据
使用AOF文件恢复数据

   
   
  • 1
  • 2
  • 3
  • 4
  • 5

3.2 步骤

实现此案例需要按照如下步骤进行。

步骤一:使用AOF文件恢复数据

1)AOF介绍

只做追加操作的文件,Append Only File

记录redis服务所有写操作

不断的将新的写操作,追加到文件的末尾

使用cat命令可以查看文件内容

2)参数配置

文件名

appendfilename “appendonly.aof” 指定文件名

appendonly yes 启用aof ,默认no

AOF文件记录写操作的方式

appendfsync always 有新写操作立即记录

appendfsync everysec 每秒记录一次

appendfsync no 从不记录

[root@redisA 6379]# redis-cli -h 192.168.4.51 -a 123456 shutdown
[root@redisA 6379]# rm -rf dump.rdb
[root@redisA 6379]# vim /etc/redis/6379.conf
appendonly yes            //启用aof,默认no
appendfilename "appendonly.aof"    //文件名
appendfsync everysec            //每秒记录一次
[root@redisA 6379]# vim /etc/redis/6379.conf 
[root@redisA 6379]# /etc/init.d/redis_6379  start 
Starting Redis server...
[root@redisA 6379]# ls            //会出现appendonly.aof文件
appendonly.aof  dump.rdb  nodes-6351.conf
[root@redisA 6379]# cat appendonly.aof        //无内容
[root@redisA 6379]# redis-cli -h 192.168.4.51 -a 123456
192.168.4.51:6379> set v1 a1
OK
192.168.4.51:6379> set v2 a2
OK
192.168.4.51:6379> set v3 a3
OK
192.168.4.51:6379> set v4 a4
OK
192.168.4.51:6379> set v5 a5
OK
192.168.4.51:6379> set v6 a6
OK
192.168.4.51:6379> set v7 a7
OK
192.168.4.51:6379> set v8 a7
OK
192.168.4.51:6379> set v9 a9
OK
192.168.4.51:6379> set v10 a10
OK
192.168.4.51:6379> keys *
 1) "v2"
 2) "v5"
 3) "v10"
 4) "v9"
 5) "v6"
 6) "v8"
 7) "v3"
 8) "v7"
 9) "v1"
10) "v4"
192.168.4.51:6379> exit
[root@redisA 6379]# cat appendonly.aof            //有数据

   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46

3)使用AOF恢复数据

备份数据

[root@redisA 6379]# cp appendonly.aof appendonly.aof.bak
[root@redisA 6379]# redis-cli -h 192.168.4.51 -a 123456 shutdown

   
   
  • 1
  • 2

删除数据

[root@redisA 6379]# rm -rf appendonly.aof
[root@redisA 6379]# /etc/init.d/redis_6379  start 
Starting Redis server...
[root@redisA 6379]# redis-cli -h 192.168.4.51 -a 123456
192.168.4.51:6379> keys *
(empty list or set)
192.168.4.51:6379> exit 

   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

恢复数据

[root@redisA 6379]# mv appendonly.aof.bak appendonly.aof
mv: overwrite ‘appendonly.aof’? y
[root@redisA 6379]# redis-cli -h 192.168.4.51 -a 123456 shutdown
[root@redisA 6379]# /etc/init.d/redis_6379  start 
Starting Redis server...
[root@redisA 6379]# redis-cli -h 192.168.4.51 -a 123456
192.168.4.51:6379> keys *
 1) "v9"
 2) "v5"
 3) "v8"
 4) "v2"
 5) "v1"
 6) "v4"
 7) "v10"
 8) "v6"
 9) "v7"
10) "v3"
192.168.4.51:6379>

   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

修复AOF文件,把文件恢复到最后一次的正确操作

[root@redisA 6379]# vim appendonly.aof 
*2        //可以把这一行删除
$6
SELECT
$1
0
*3
$3
set
$2
v1
$2
a1
*3
$3
...
[root@redisA 6379]# redis-check-aof --fix appendonly.aof        //恢复文件
0x               0: Expected prefix '*', got: '$'
AOF analyzed: size=311, ok_up_to=0, diff=311
This will shrink the AOF from 311 bytes, with 311 bytes, to 0 bytes
Continue? [y/N]: y
Successfully truncated AOF

   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

RDB优点:

可以灵活的设置同步持久化appendfsync always或异步持久化appendfsync verysec

宕机时,仅可能丢失1秒的数据

RDB的缺点:

AOF文件的体积通常会大于RDB文件的体积

执行fsync策略时的速度可能会比RDB慢

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

尹汇川

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值