IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Redis RDB持久化和AOF持久化及恢复测试 -> 正文阅读

[大数据]Redis RDB持久化和AOF持久化及恢复测试

Redis Rdb Aof 恢复

RDB恢复

虚拟机搭建cachecloud测试服务参考文档:https://blog.csdn.net/wejack/article/details/120569162

现在通过cachecloud创建一个测试集群,测试rdb和aof的备份与恢复

通过连接节点服务,可以查看到缓存实例备份文件的目录为 /opt/cachecloud/data

>redis-cli -h 10.4.7.212 -p 6450
10.4.7.212:6450> auth 84eefb67aad12bbd1428786f6d137408
OK
10.4.7.212:6450> config get dir
1) "dir"
2) "/opt/cachecloud/data"
# config get save命令可以看到rdb备份频次设置
10.4.7.212:6450> config get save
1) "save"
2) ""

或者登录实例所在的服务器,直接查看实例的配置文件,也可以看到相应配置

[root@m212 ~]# cat /opt/cachecloud/conf/redis-cluster-6450.conf
daemonize no
tcp-backlog 511
timeout 0
tcp-keepalive 60
loglevel notice
databases 16
dir "/opt/cachecloud/data"

appendonly yes
appendfsync everysec
appendfilename "appendonly-6450.aof"
dbfilename "dump-6450.rdb"
aof-rewrite-incremental-fsync yes
no-appendfsync-on-rewrite yes
auto-aof-rewrite-min-size 62500kb
auto-aof-rewrite-percentage 87

要使用rdb恢复数据,需要将配置文件的appendonly yes设置为no,否则实例重启以后不会读取rdb文件进行恢复

另外要注意,如果是使用集群的某一个主节点实例进行测试,要将其从节点下线,否则可能会因为主节点重启导致主从切换,导致数据恢复失败

连接redis实例,执行bgsave命令即执行rdb持久化

10.4.7.212:6450> bgsave
Background saving started

在相应的数据目录可以看到相应的数据文件

[root@m212 data]# ls -l | grep 6450
-rw-r--r--. 1 cachecloud-open cachecloud-open   8575680 129 16:38 appendonly-6450.aof
-rw-rw-r--. 1 cachecloud-open cachecloud-open   1083576 129 16:49 dump-6450.rdb

在redis实例上执行flushdb清空数据,并删除data中的aof备份文件,可以查看到实例数据已被清空。

10.4.7.212:6450> flushall
OK
10.4.7.212:6450> keys *
(empty list or set)

重启实例

[root@m212 logs]# sudo su - cachecloud-open -c '/opt/cachecloud/redis-3.2.12/src/redis-server /opt/cachecloud/conf/redis-cluster-6450.conf > /opt/cachecloud/logs/redis-6450-`date +%Y%m%d%H%M`.log 2>&1 &'
[root@m212 logs]# ps -ef | grep 6450
cachecl+  97203      1  0 17:05 ?        00:00:00 /opt/cachecloud/redis-3.2.12/src/redis-server 0.0.0.0:6450 [cluster]

查看redis日志,可以看到加载了数据。

[root@m212 logs]# tail -500f /opt/cachecloud/logs/redis-6450-202201291821.log
`-.__.-'

100017:M 29 Jan 18:21:06.266 # Server started, Redis version 3.2.12
100017:M 29 Jan 18:21:06.315 * DB loaded from disk: 0.049 seconds
100017:M 29 Jan 18:21:06.316 * The server is now ready to accept connections on port 6450
100017:M 29 Jan 18:21:08.339 # Cluster state changed: ok

再连接实例查看,数据已经恢复。

10.4.7.212:6450> keys *
  1) "cj:hello_bigstr_00000013"
  2) "cj:hello_biglist_00000053"
  3) "cj:hello_list_00000098"
  4) "cj:hello_abigzset_00000059"
  5) "cj:hello_list_00000087"
  6) "cj:hello_set_00000063"

AOF恢复

首先修改缓存实例配置文件,打开aof持久化,将appendonly 属性改为yes

appendonly yes

插入一批数据以后,可以看到有数据

10.4.7.212:6450> keys *
  1) "cj:hello_hash_00000012"
  2) "cj:hello_bighash_00000024"
  3) "cj:hello_hash_00000079"
  4) "cj:hello_bigstr_00000063"
  5) "cj:hello_bigset_00000051"
  6) "cj:hello00000031"

查看aof持久化文件,可以看到有相应命令

[root@m212 data]# tail -50f /opt/cachecloud/data/appendonly-6450.aof
cj:hello_abigzset_00000099
$2
59
$5
YBxAh
*4
$4
ZADD
$26
cj:hello_abigzset_00000099
$2

执行flushall将实例的数据清空

10.4.7.212:6450> flushall
OK
10.4.7.212:6450> keys *
(empty list or set)

可以看到aof持久化文件的末尾有flushall命令

data]# less /opt/cachecloud/data/appendonly-6450.aof
……省略……
0
*1
$8
flushall
(END)

编辑aof配置文件,将末尾行的flushall命令删除并保存,然后重启redis实例,查看缓存日志,可以看到从aof持久化文件加载了数据。

[root@m212 logs]# tail -500f /opt/cachecloud/logs/redis-6450-202201291936.log
102639:M 29 Jan 19:36:15.090 * Increased maximum number of open files to 4096 (it was originally set to 1024).
102639:M 29 Jan 19:36:15.090 * Node configuration loaded, I'm 5d9a574bbcd42451079e3b4daecd7c329104c7e6
                _._
           _.-``__ ''-._
      _.-``    `.  `_.  ''-._           Redis 3.2.12 (00000000/0) 64 bit
  .-`` .-```.  ```\/    _.,_ ''-._
 (    '      ,       .-`  | `,    )     Running in cluster mode
 |`-._`-...-` __...-.``-._|'` _.-'|     Port: 6450
 |    `-._   `._    /     _.-'    |     PID: 102639
  `-._    `-._  `-./  _.-'    _.-'
 |`-._`-._    `-.__.-'    _.-'_.-'|
 |    `-._`-._        _.-'_.-'    |           http://redis.io
  `-._    `-._`-.__.-'_.-'    _.-'
 |`-._`-._    `-.__.-'    _.-'_.-'|
 |    `-._`-._        _.-'_.-'    |
  `-._    `-._`-.__.-'_.-'    _.-'
      `-._    `-.__.-'    _.-'
          `-._        _.-'
              `-.__.-'

102639:M 29 Jan 19:36:15.091 # Server started, Redis version 3.2.12
102639:M 29 Jan 19:36:15.366 # !!! Warning: short read while loading the AOF file !!!
102639:M 29 Jan 19:36:15.366 # !!! Truncating the AOF at offset 8575833 !!!
102639:M 29 Jan 19:36:15.366 # AOF loaded anyway because aof-load-truncated is enabled
102639:M 29 Jan 19:36:15.366 * DB loaded from append only file: 0.276 seconds
102639:M 29 Jan 19:36:15.367 * The server is now ready to accept connections on port 6450
102639:M 29 Jan 19:36:17.392 # Cluster state changed: ok

查看实例可以看到恢复了数据

10.4.7.212:6450> keys *
  1) "cj:hello_bighash_00000099"
  2) "cj:hello_biglist_00000022"
  3) "cj:hello_biglist_00000017"
  4) "cj:hello_bighash_00000091"
  5) "cj:hello_hash_00000030"
  6) "cj:hello_set_00000049"
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-01-30 18:59:54  更:2022-01-30 19:01:51 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 12:38:07-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码