zoukankan      html  css  js  c++  java
  • 作业第二十周

    1、搭建一个 LNMP 架构请写出它的底层原理,当用户访问的是静态资源、和动态资源这两种类型的资源是,其中各个 service 之间做了什么操作。请分别一 一写出

     

    2、AOF 和 RDB 的两者之间的区别以及优缺点
    RDB模式的优缺点

    优点:RDB快照保存了某个时间点的数据,可以通过脚本执行bgsave(非阻塞,后台执行)或者save(阻塞,不推荐)命令自定义时间点备份,可以保留多个备份,当出现问题可以恢复到不同时间点的版本。可以最大化IO 的性能,因为父进程在保存RDB 文件的时候唯一要做的是fork出一个子进程,然后的-操作都会有这个子进程操作,父进程无需任何的IO操作RDB在大量数据比如几个G的数据,恢复的速度比AOF的快

    缺点: 不能实时时保存数据,会丢失自上一次执行RDB备份到当前的内存数据 -数据量非常大的时候,从父进程fork的时候需要一点时间,可能是毫秒或者秒或者分钟,取决于磁盘IO性能

    AOF优缺点
    优点:数据安全性相对较高,根据所使用的fsync策略(fsync是同步内存中redis所有已经修改的文件到存储设备),默认是appendfsync everysec,即每秒执行一次fsync。
    由于该机制对日志文件的写入操作采用的是append模式,因此在写入过程中即使出现宕机现象,也不会破坏日志文件中已经存在的内容。然而如果我们本次操作只是写入了一半数据就出现了系统崩溃问题,不用担心,在Redis下一次启动之前,我们可以通过redis-check-aof工具来帮助我们解决数据一致性的问题。
    如果日志过大,Redis可以自动启用rewrite机制。即Redis以append模式不断的将修改数据写入到老的磁盘文件中,同时Redis还会创建一个新的文件用于记录此期间有哪些修改命令被执行。因此在进行rewrite切换时可以更好的保证数据安全性。
    AOF包含一个格式清晰、易于理解的日志文件用于记录所有的修改操作。事实上,我们也可以通过该文件完成数据的重建。

    缺点:
    即使有些操作是重复的也会全部记录,AOF的文件大小要大于RDB格式的文件
    RDB 在恢复大数据集时的速度比 AOF 的恢复速度要快

    3、请问 Redis 持久化如何实现。
    RDB模式 默认开启

    [root@centos8-1 ~]$vim /etc/redis.conf
    #主配置文件的RDB相关参数
    save 900 1 #15分钟内至少有一个键被更改则进行快照 
    save 300 10 #5分钟内至少有10个键被更改则进行快照 
    save 60 1000 #1分钟内至少有10000个键被更改则进行快照
    dbfilename dump.rdb #默认的rdb文件名dump.rdb 
    dir ./ #redis工作目录也是存放,rdb文件目录
    rdbcompression yes #持久化到RDB文件时,是否压缩,"yes"为压缩,"no"则反之 
    stop-writes-on-bgsave-error yes #yes时因空间满等原因快照无法保存出错时,禁止redis写入操作,建议为no 
    rdbchecksum yes #是否对备份文件开启RC64校验,默认是开启
    
    [root@centos8-1 ~]$ll /var/lib/redis/
    total 2200
    -rw-r--r-- 1 redis redis 894832 Oct 21 13:07 dump.rdb #生成的RDB文件

    AOF模式需要在配置文件中开启

    [root@centos8-1 ~]$vim /etc/redis.conf
    appendonly yes
    appendfilename "appendonly.aof" #AOF文件名,是文本文件,存放在dir指令指定的目录中
    appendfsync everysec #aof持久化策略的配置,no表示不执行fsync,由操作系统保证数据同步到磁盘,always表示每次写入都执行fsync,以保证数据同步到磁盘,everysec表示每秒执行一次fsync,可能会导致丢失这1s数据。
    dir ./ #redis工作目录也是存放,AOF文件目录
    
    [root@centos8-1 ~]$ll /var/lib/redis/
    total 2200
    -rw-r--r-- 1 redis redis 1354417 Oct 19 11:30 appendonly-6379.aof

    4、通过脚本实现自动化 RDB 备份

    #通过While死循环+sleep休眠实现自动备份
    [root@centos8-1 data]$vim redis_rdb.sh
    #!/bin/bash
    while :; 
    do
    redis-cli -a 123456 save &> /dev/null
    DATE=`date +%F_H-%M-%S`
    [ -e /backup/redis-rdb/ ] || mkdir -p /backup/redis-rdb/
    mv /var/lib/redis/dump.rdb /backup/redis-rdb/dump-${DATE}.rdb
    sleep 600
    done
    [root@centos8-1 data]$chmod +x redis_rdb.sh
    [root@centos8-1 data]$nohup bash redis_rdb.sh &
    
    #通过shell脚本+定时任务实现自动备份
    [root@centos8-1 data]$vim redis_rdb.sh
    #!/bin/bash
    redis-cli -a 123456 save &> /dev/null
    DATE=`date +%F_H-%M-%S`
    [ -e /backup/redis-rdb/ ] || mkdir -p /backup/redis-rdb/
    mv /var/lib/redis/dump.rdb /backup/redis-rdb/dump-${DATE}.rdb
    
    #添加定时任务
    [root@centos8-1 data]$crontab -e 
    */10 * * * * /usr/bin/sh /data/redis_rdb.sh
  • 相关阅读:
    《大道至简》读后感
    论校园跑腿软件的体验
    php学习
    小资料:管理学中的几种分析方法
    SQL Server 连接失败(转自http://7880.com/Info/Article116a9e40.html)
    无法打开项目文件:Visual Studio .net
    ASP.NET设计网络硬盘之下载或在线查看 (转)
    upload file to sql
    转自thinhunan 应用WEB标准进行网站设计--《网站重构》读书笔记
    关于轻量级权限控制的实现(转自登峰之道)
  • 原文地址:https://www.cnblogs.com/tz66/p/13851891.html
Copyright © 2011-2022 走看看