redis分布式@架构师NoSQL数据库

Redis持久化

2023-03-17  本文已影响0人  技术老男孩

一、实现方式:

实现方式有2种:分别是 RDB文件 和 AOF文件
  1. RDB文件(存储数据)
    指定就是数据库目录下的 dump.rdb 文件
    redis运行服务后,会根据配置文件的设置的存盘频率 把内存里的数据复制到数据库目录下的dump.rdb文件里(覆盖保存)
  2. AOF文件(存储命令)
    redis服务AOF文件(与mysql服务的binlog日志文件的功能相同)
    是一个文件,记录连接redis服务后执行的写操作命令并且是以追加的方式记录写操作命令
    默认没有开启,使用需要人为启用。

二、RDB文件的使用

vim /etc/redis/6379.conf (默认 219行 220行 221行)    
# 以下的值可以根据需求进行修改  
# save  秒    变量的个数
save    900   1             # 每15分钟有1个变量改变则存盘
save    300   10            # 每5分钟有10个变量改变则存盘
save    60    10000         # 每1分钟有10000个变量改变则存盘
# 拷贝 dump.rdb 文件就是对数据的备份
[root@host56 ~]# cp /var/lib/redis/6379/dump.rdb  /opt/
[root@host56 ~]# ls /opt/*.rdb
/opt/dump.rdb

# 模拟数据丢失
192.168.88.56:6379> FLUSHALL 
OK
192.168.88.56:6379> keys *
(empty list or set)

# 把备份的dump.rdb文件再次拷贝回数据库目录就是恢复
# 停止内存没有数据的redis服务
[root@host56 ~]# redis-cli -h 192.168.88.56 -p 6379  shutdown
# 把没有数据的dump.rdb文件删除
[root@host56 ~]# rm -rf /var/lib/redis/6379/dump.rdb 
# 把备份dump.rdb文件拷贝到数据库目录下
[root@host56 ~]# cp /opt/dump.rdb  /var/lib/redis/6379/
# 启动redis服务 并连接服务查看数据
[root@host56 ~]# /etc/init.d/redis_6379 start
Starting Redis server...
[root@host56 ~]# redis-cli -h 192.168.88.56 -p 6379
192.168.88.56:6379> keys *
 1) "i"
 2) "d"
 3) "x"
优缺点 说明
优点 高性能的持久化实现 —— 创建一个子进程来执行持久化
先将数据写入临时文件,持久化过程结束后,
再用这个临时文件替换上次持久化好的文件
过程中主进程不做任何IO操作
比较适合大规模数据恢复
且对数据完整性要求不是非常高的场合
缺点 意外宕机时,丢失最后一次持久化的所有数据

三、AOF文件的使用:

# 备份aof文件
[root@host56 ~]# cp /var/lib/redis/6379/appendonly.aof  /opt/
[root@host56 ~]# ls /opt/*.aof
/opt/appendonly.aof

# 模拟数据丢失
[root@host56 ~]# redis-cli -h 192.168.88.56 -p 6379
192.168.88.56:6379> flushall 
192.168.88.56:6379> exit

# 恢复数据
# 把没有数据的服务停止
[root@host56 ~]# redis-cli -h 192.168.88.56 -p 6379  shutdown
# 删除没有数据的aof文件和rdb文件
[root@host56 ~]# rm -rf  /var/lib/redis/6379/*
# 把备份的aof文件拷贝到数据库目录
[root@host56 ~]# cp /opt/appendonly.aof  /var/lib/redis/6379/
# 启动redis服务并查看数据
[root@host56 ~]# /etc/init.d/redis_6379 start
Starting Redis server...
[root@host56 ~]# redis-cli -h 192.168.88.56 -p 6379  
192.168.88.56:6379> keys *
1) "v4"
2) "v3"
[root@host56 ~]# redis-check-aof --fix /var/lib/redis/6379/appendonly.aof 
0x 78: Expected prefix '*', got: 'd'
AOF analyzed: size=126, ok_up_to=120, diff=6
This will shrink the AOF from 126 bytes, with 6 bytes, to 120 bytes
Continue? [y/N]: y  同意修复     
Successfully truncated AOF
参数 说明
appendfsync always** 时时记录,并完成磁盘同步
安全性较高,内存消耗过大
appendfsync everysec 每秒记录一次,并完成磁盘同步
推荐策略
appendfsync no 写入aof ,不执行磁盘同步
优缺点 说明
优点 可以灵活设置持久化方式
出现意外宕机时,仅可能丢失1秒的数据
缺点 持久化文件的体积通常会大于RDB方式
执行fsync策略时的速度可比RDB方式慢
上一篇下一篇

猜你喜欢

热点阅读