zoukankan      html  css  js  c++  java
  • RDB与AOF

    1.应该应用哪一个

    1.一般来说,如果想达到足以媲美 PostgreSQL 的数据安全性,你应该同时使用两种持久化功能。
    2.如果你非常关心你的数据,但仍然可以承受数分钟以内的数据丢失,那么你可以只使用RDB持久化。
    3.有很多用户单独使用AOF,但是我们并不鼓励这样,因为时常进行RDB快照非常方便于数据库备份,启动速度也比较快,还避免了AOF引擎的bug。
    4.个人感触:在企业中,通常都使用RDB来做持久化,因为一般redis是在做MySQL的缓存,就算缓存数据丢失,真实的数据还是在MySQL中,之所以用缓存是为了速度,性能而考虑,所以还是建议使用RDB持久化,相对来说会好一些,除非专门用redis来做一个key:value的数据库,而且数据很重要,那么可以考虑使用AOF
    

    2.RDB与AOF相互作用

    1.在版本号大于等于2.4的Redis中,BGSAVE 执行的过程中,不可以执行 BGRWRITEAOF,反过来说,在 BGRWRITEAOF 执行的过程中,也不可以执行 BGSAVE 。
    2.这可以防止两个 Redis 后台进程同时对磁盘进行大量的 I/O 操作。如果 BGSAVE 正在执行,并且用户显示地调用 BGRWRITEAOF 命令,那么服务器将向用户回复一个 OK 状态,并告知用户,BGRWRITEAOF 已经被预定执行;一旦 BGSAVE 执行完毕, BGRWRITEAOF 就会正式开始。
    3.当 Redis 启动时,如果 RDB 持久化和 AOF 持久化都被打开了,那么程序会优先使用 AOF 文件来恢复数据集,因为 AOF 文件所保存的数据通常是最完整的。
    

    3.备份Redis数据

    1.Redis 对于数据备份是非常友好的,因为你可以在服务器运行的时候对 RDB 文件进行复制: RDB 文件一旦被创建,就不会进行任何修改。
    2.当服务器要创建一个新的 RDB 文件时,它先将文件的内容保存在一个临时文件里面,当临时文件写入完毕时,程序才使用临时文件替换原来的 RDB 文件。
    3.这也就是说,无论何时, 复制 RDB 文件都是绝对安全的。
    
    #以下是我们的建议:
    1.创建一个定期任务(cron job), 每小时将一个 RDB 文件备份到一个文件夹, 并且每天将一个 RDB 文件备份到另一个文件夹。
    2.确保快照的备份都带有相应的日期和时间信息, 每次执行定期任务脚本时, 使用 find 命令来删除过期的快照: 比如说, 你可以保留最近 48 小时内的每小时快照, 还可以保留最近一两个月的每日快照。
    3.至少每天一次, 将 RDB 备份到你的数据中心之外, 或者至少是备份到你运行 Redis 服务器的物理机器之外。
    

    4.RDB持久化高级配置

    #编辑配置文件
    [root@db01 redis]# vim /etc/redis/6379/redis.conf
    #后台备份进程出错时,主进程停不停止写入? 主进程不停止容易造成数据不一致
    stop-writes-on-bgsave-error yes
    #导出的rdb文件是否压缩 如果rdb的大小很大的话建议这么做
    rdbcompression yes
    #导入rbd恢复时数据时,要不要检验rdb的完整性 验证版本是不是一致
    rdbchecksum yes
    

    5.AOF持久化高级配置

    #编辑配置文件
    [root@db01 redis]# vim /etc/redis/6379/redis.conf
    #正在导出rdb快照的过程中,要不要停止同步aof
    no-appendfsync-on-rewrite yes
    #aof文件大小比起上次重写时的大小,增长率100%时重写,缺点:业务开始的时候,会重复重写多次
    auto-aof-rewrite-percentage 100
    #aof文件,至少超过64M时,重写
    auto-aof-rewrite-min-size 64mb
    
  • 相关阅读:
    允许Traceroute探测 (在防火墙中禁用Time Exceeded类型的ICMP包)
    fatal: not a git repository (or any of the parent directories): .git
    CentOS 7 配置白名单
    CentOS 7 找不到 iptables 文件(需要安装 iptables 服务)
    Grafana 匿名访问(免登录)
    How to install GCC/G++ 8 on CentOS
    【C++ Primer | 16】std::move、std::forward(完美转发)
    安利一个dll库缺失下载的网站
    google glog 源码编译踩坑 以及编译全流程
    VS工程不产生db后缀的文件
  • 原文地址:https://www.cnblogs.com/Applogize/p/13449017.html
Copyright © 2011-2022 走看看