• NoSQL之redis---RDB与AOF


    Redis数据库文件,全称RedisDataBase

    redis支持数据的永久存储,在服务运行过程中,会定期的内存了的数据复制到硬盘文件里存储。

      --数据持久化方式之一

      --数据持久化默认方式

      --按照指定时间间隔,将内存中的数据集快照写入硬盘

    RDB优点与缺点

    优点:高性能的持久化实现,创建一个子进程来执行持久化,将数据写入临时文件,持久化过程结束后,再用这个临时文件替换上次持久化好的文件;过程中主进程不做任何IO操作

      比较适合大规模数据恢复,且对数据完整性要求不是非常高的场合

    缺点

      意外宕机时,丢失最后一次持久化的所有数据

    定义RDB文件名

    dbfilename "dump.rdb"

    使用RDB文件恢复数据

    备份数据

    备份dump.rdb文件到其他位置

    cp  数据库目录/dump.rdb  备份文件

    恢复数据

      --拷贝备份文件到数据库目录,启动redis服务

    cp  备份目录/dump.rdb  数据库目录/

    使用备份的dump.rdb文件恢复数据
    192.168.4.50:6350> keys *
    1) "teaname"
    2) "str"
    3) "student"
    4) "nb"
    5) "y"
    6) "z"
    7) "x"
    192.168.4.50:6350> save
    OK
    192.168.4.50:6350> exit
    [root@host50 ~]# cp /var/lib/redis/6379/dump.rdb 
    [root@host50 ~]# ls /opt/
    dump.rdb  mysql.bak  mysql.tar.gz
    [root@host50 ~]#
    
    > flushall  #数据误删除
    
    [root@host50 ~]# redis-cli -h 192.168.4.50 -p 6350 -a 123456 shutdown
    [root@host50 ~]# ls /var/lib/redis/6379/
    dump.rdb
    [root@host50 ~]# rm -rf /var/lib/redis/6379/dump.rdb 
    [root@host50 ~]# 
    [root@host50 ~]# cp /opt/dump.rdb  /var/lib/redis/6379/
    [root@host50 ~]# /etc/init.d/redis_6379 start
    Starting Redis server...
    [root@host50 ~]# 
    
    验证存盘频率实验
    [root@host50 ~]# redis-cli -h 192.168.4.50 -p 6350 -a 123456 shutdown
    [root@host50 ~]# ls /var/lib/redis/6379/
    dump.rdb
    [root@host50 ~]# rm -rf /var/lib/redis/6379/dump.rdb 
    [root@host50 ~]# 
    [root@host50 ~]# ls /var/lib/redis/6379/
    [root@host50 ~]# 
    [root@host50 ~]# vim /etc/redis/6379.conf
    save 900 1
    #save 300 10
    save 120 10
    save 60 10000
    :wq

    优化设置

    数据从内存保存到硬盘的频率

    #存盘频率 
    219:save 900 1
    220:save 300 10
    221:save 60 10000

    #手动存盘
    save  //阻塞写存盘
    bgsave  //不阻塞写存盘

    AOF介绍

      --追加方式记录写操作的文件

      --记录redis服务所有写操作  

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

      --默认没有启用

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

    启用AOF

    > config  set appendonly yes    //启用
    > config rewrite                    //写进配置文件

    使用AOF文件恢复数据:

    1:备份数据

    备份appendonly.aof文件到其他位置

    cp  数据库目录/appendonly.aof  备份目录

    2:恢复数据

      拷贝备份文件到数据库目录

      启动redis服务

    cp  备份目录/appendonly.aof  数据库目录

     /etc/redis/redis_6379  start

    192.168.4.50:6350> config set  appendonly yes
    OK
    192.168.4.50:6350> config rewrite
     
    [root@host50 ~]# ls /var/lib/redis/6379/
    appendonly.aof  dump.rdb
    [root@host50 ~]# wc -l /var/lib/redis/6379/appendonly.aof 
    82 /var/lib/redis/6379/appendonly.aof
    
        通过备份的aof文件恢复数据
    [root@host50 ~]# cp /var/lib/redis/6379/appendonly.aof /opt/    
        
    [root@host50 ~]# scp  /opt/appendonly.aof  192.168.4.51:/root/
    
     在51主机使用aof文件恢复数据,具体操作如下:
    [root@host51 ~]# redis-cli  -h 192.168.4.51 -a 123456 shutdown
    [root@host51 ~]# vim /etc/redis/6379.conf 
    673 appendonly yes
    677 appendfilename "appendonly.aof"
    :wq
    [root@host51 ~]# cp /root/appendonly.aof /var/lib/redis/6379/
    [root@host51 ~]# ls /var/lib/redis/6379/
    appendonly.aof  dump.rdb
    [root@host51 ~]# /etc/init.d/redis_6379 start
    Starting Redis server...
    [root@host51 ~]#        
    [root@host51 ~]# redis-cli  -h 192.168.4.51 -a 123456 
    192.168.4.51:6379> keys *

    与AOF相关的配置

    #aof记录命令的方式             
                    # appendfsync always     时时记录
                      appendfsync everysec    1秒=1000毫秒
                    # appendfsync no

    #对aof文件做瘦身计划
    
    
    auto-aof-rewrite-percentage 100 再次对文件做瘦身的比例值
    
    
    auto-aof-rewrite-min-size 64mb 首次瘦身的最大值

    修复损坏aof文件

    echo “范德萨发卡戴珊解放军拉斯法”  >> /var/lib/redis/6379/appendonly.aof   //损坏文件
      794  redis-cli -h 192.168.4.50 -p 6350 -a 123456 shutdown  //停止服务
     
      796  /etc/init.d/redis_6379 start      //启服务
    
    ]# tail  /var/log/redis_6379.log        //查看日志
    
     19483:M 03 Jun 17:55:34.218 # Bad file format reading the append only file: 
     make a backup of your AOF file, then use ./redis-check-aof --fix <filename>
     
    [root@host50 ~]# redis-check-aof --fix /var/lib/redis/6379/appendonly.aof   //输入日志提供的命令
    0x             1a2: Expected prefix '*', got: 'i'                //有些情况下此命令不能修复aof文件
    AOF analyzed: size=463, ok_up_to=418, diff=45
    This will shrink the AOF from 463 bytes, with 45 bytes, to 418 bytes
    Continue? [y/N]: y
    Successfully truncated AOF
    [root@host50 ~]#
  • 相关阅读:
    1121 Django基本
    1121 爬虫简单面条版
    1118 DOM
    1114 CSS基础
    1116 前端的练习--博客界面
    1112 前端基础之标签
    仿优酷错误
    1107 python自定义实现ORM
    cesm1_2_2在南信大大型机上的移植以及运行简单case的步骤
    ERROR:105: Unable to locate a modulefile for 'xxx'
  • 原文地址:https://www.cnblogs.com/ahaocloud/p/14726144.html
Copyright © 2020-2023  润新知