ToB企服应用市场:ToB评测及商务社交产业平台

标题: redis的持久化存储 [打印本页]

作者: 钜形不锈钢水箱    时间: 2022-11-2 14:59
标题: redis的持久化存储
  Redis虽然是一个内存级别的缓存程序,也就是redis是使用内存进行数据的缓存的,但是其可以将内存的数据按照一定的策略保存到硬盘中,这样的话就可以实现持久保存的目的;目前的话redis支持的两种不同方式的数据持久化保存机制,分别是RDB和AOF,这两种方式的话很类似于MySQL数据库的dump和二进制日志的方式。
1、RBD模式 

1.1、RDB模式的工作原理


 
RDB(Redis DataBase):基于时间的快照,其默认只保留当前最新的一次快照,特点是执行速度比较快,缺点是可能会丢失从上次快照到当前的时间点未做快照的数据。
1.2、RDB bgsave实现快照的具体过程


 
Redis从master主进程先fork出一个子进程,使用写时复制机制,子进程将内存的数据保存为一个临时文件,比如dump.rdb,当数据保存完后在将上一次保存的RDB文件替换掉,然后就会关掉子进程,这样可以保证每一次做RDB快照保存的数据都是完整的;因为直接替换RDB文件的时候,可能会出现突然断电等问题,从而导致RDB文件还没有保存完整就因为突然关机停止保存,并会出现导致数据丢失的情况。后续的话是可以手动将每次生成的RDB文件进行备份,这样的话就可以最大化的来保存历史数据。
1.3、RDB的相关配置
  1. #在配置文件中的 save 选项设置多个保存条件,只有任何一个条件满足,服务器都会自动执行 BGSAVE 命令
  2. save 900 1         #900s内修改了1个key即触发保存RDB
  3. save 300 10        #300s内修改了10个key即触发保存RDB
  4. save 60 10000      #60s内修改了10000个key即触发保存RDB
  5. dbfilename dump.rdb
  6. dir ./             #编泽编译安装时默认RDB文件存放在Redis的工作目录,此配置可指定保存的数据目录
  7. stop-writes-on-bgsave-error yes  #当快照失败是否仍允许写入,yes为出错后禁止写入,建议为no
  8. rdbcompression yes
  9. rdbchecksum yes
复制代码
1.4实现RBD的方法
 1.4、自动备份的方式

  1. [root@node1 ~]#grep '^save' /apps/redis/etc/redis.conf
  2. save 900 1   #900秒内更改一条及以上信息即自动备份
  3. save 300 10 #300秒内更改十条及以上信息即自动备份
  4. save 60 10000 #60秒内更改一万条及以上信息即自动备份
复制代码
1.5、RDB模式的优缺点

RDB模式优点:

RDB模式缺点:

2、AOF模式

2.1、AOF模式工作原理


 
 
 注意事项:AOF模式默认是关闭的,第一次开启AOF后,并重启服务生效后,会因为AOF的优先级高于RDB,而AOF默认没有数据文件存在,从而导致所有数据丢失,因此所以要使用正确的方法来开启AOF,以防数据丢失。
2.2、AOF相关配置
  1. appendonly no #是否开启AOF日志记录,默认redis使用的是rdb方式持久化,这种方式在许多应用中已经足够用了,但是redis如果中途宕机,会导致可能有几分钟的数据丢失(取决于dump数据的间隔时间),根据save来策略进行持久化,Append Only File是另一种持久化方式,可以提供更好的持久化特性,Redis会把每次写入的数据在接收后都写入 appendonly.aof 文件,每次启动时Redis都会先把这个文件的数据读入内存里,先忽略RDB文件。默认不启用此功能
  2. appendfilename "appendonly.aof" #文本文件AOF的文件名,存放在dir指令指定的目录中
  3. appendfsync everysec #aof持久化策略的配置
  4. #no表示由操作系统保证数据同步到磁盘,Linux的默认fsync策略是30秒,最多会丢失30s的数据
  5. #always表示每次写入都执行fsync,以保证数据同步到磁盘,安全性高,性能较差
  6. #everysec表示每秒执行一次fsync,可能会导致丢失这1s数据,此为默认值,也生产建议值
  7. dir /path
  8. #rewrite相关
  9. no-appendfsync-on-rewrite yes
  10. auto-aof-rewrite-percentage 100
  11. auto-aof-rewrite-min-size 64mb
  12. aof-load-truncated yes
复制代码
2.2.1动态设置(建议使用的方式)
  1. #这时aof是没有开启的
  2. [root@node1 ~]#grep '^append' /apps/redis/etc/redis6379.conf
  3. appendonly no
  4. appendfilename "appendonly.aof"
  5. appendfsync everysec
  6. #把data文件夹所有者所有组设为redis
  7. [root@node1 ~]#ll /apps/redis/data
  8. total 1452
  9. drwxr-xr-x 2 redis redis    4096 Nov  2 13:13 ./
  10. drwxr-xr-x 7 redis redis    4096 Oct 31 15:41 ../
  11. -rw-r--r-- 1 redis redis 1477882 Nov  2 13:13 dump6379.rdb
  12. [root@node1 ~]#systemctl restart redis6379.service
  13. #进入客户端设置
  14. [root@node1 ~]#redis-cli -a 123456
  15. Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
  16. 127.0.0.1:6379> dbsize
  17. (integer) 100000
  18. 127.0.0.1:6379> config get appendonly
  19. 1) "appendonly"
  20. 2) "no"
  21. 127.0.0.1:6379> config set appendonly yes
  22. OK
  23. 127.0.0.1:6379> config get appendonly
  24. 1) "appendonly"
  25. 2) "yes"   
复制代码

 
 
 2.3、AOF rewrite重写

 将一些重复的、可以合并的、过期的数据重新写入一个新的AOF文件,这样的话可以节约AOF备份占用的硬盘空间,也是可以加速恢复过程。可以手动执行bgrewriteaof触发AOF,第一次开启AOF功能,或定义自动rewrite策略。

 
 
 2.4、AOF模式的优缺点

AOF模式的优点:
AOF模式缺点:
3、RDB模式和AOF模式的选择

 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4