• Redis 学习-持久化与主从复制


    一、持久化

     1. RDB

    rdb 是 redis 内存到硬盘的快照,用于持久化

    ①. 通过执行命令,主动保存快照

    save # 执行保存快照,执行时 redis 会处理阻塞状态直至执行完成。
    bgsave # 异步执行保存快照。

    ②. 通过配置文件,自动生成快照策略

    save 900 1 # 900秒内至少有1个key被改变则做一次快照
    save 300 10 # 300秒内至少有300个key被改变则做一次快照
    save 60 10000 # 60秒内至少有10000个key被改变则做一次快照

    只要满足其中一条,就会通过 bgsave 命令自动保存 RDB 文件。

     ③. rdb 的所有配置

    save m n
    #配置快照(rdb)促发规则,格式:save <seconds> <changes>
    #save 900 1  900秒内至少有1个key被改变则做一次快照
    #save 300 10  300秒内至少有300个key被改变则做一次快照
    #save 60 10000  60秒内至少有10000个key被改变则做一次快照
    #关闭该规则使用svae “” 
    
    dbfilename  dump.rdb
    #rdb持久化存储数据库文件名,默认为dump.rdb,建议改为dump-6379.rdb
    
    stop-write-on-bgsave-error yes 
    #yes代表当使用bgsave命令持久化出错时候停止写RDB快照文件,no表明忽略错误继续写文件。
    
    rdbchecksum yes
    #在写入文件和读取文件时是否开启rdb文件检查,检查是否有无损坏,如果在启动是检查发现损坏,则停止启动。
    
    rdbcompression yes
    #是否开启RDB文件压缩,该功能可以节约磁盘空间

    ④. 其他触发 bgsave 的方式

    主从的全量复制时

    debug reload 时

    shutdown 

    2. AOF

    AOF 是将 Redis 执行的每一条命令追加到文件中。

    ①. 开启 AOF(默认是关闭状态),通过命令开启,并回写到配置文件。

    127.0.0.1:6379> config get appendonly
    1) "appendonly"
    2) "no"
    127.0.0.1:6379> config set appendonly yes
    OK
    127.0.0.1:6379> config rewrite
    OK

     ②. 同步策略,由配置参数 appendfsync 决定。

    no:不使用 fsync 方法同步,而是交给操作系统write函数去执行同步操作,在 linux 操作系统中大约每 30 秒刷一次缓冲。这种情况下,缓冲区数据同步不可控,并且在大量的写操作下,aof_buf 缓冲区会堆积会越来越严重,一旦 redis 出现故障,数据丢失严重。
    always:表示每次有写操作都调用 fsync 方法强制内核将数据写入到 aof 文件。这种情况下由于每次写命令都写到了文件中, 虽然数据比较安全,但是因为每次写操作都会同步到 AOF 文件中,所以在性能上会有影响,同时由于频繁的 IO 操作,硬盘的使用寿命会降低。
    everysec:数据将使用调用操作系统 write 写入文件,并使用 fsync 每秒一次从内核刷新到磁盘。 这是折中的方案,兼顾性能和数据安全,所以 redis 默认推荐使用该配置。

    ③. 文件重写

    手动触发

    bgrewriteaof # 执行此命令

    自动触发

    auto-aof-rewrite-percentage 100 # 增长百分比100时重写
    auto-aof-rewrite-min-size 64mb # 当AOF文件大于该值重写

    ④. AOF 的全部配置

    auto-aof-rewrite-min-size 64mb
    #当AOF文件大小大于该值时候才可能重写。
    
    auto-aof-rewrite-percentage  100
    #增长百分比,如100代表当前AOF文件是上次重写的两倍时候才重写。
    
    appendfsync everysec
    #no:不使用fsync方法同步,而是交给操作系统write函数去执行同步操作,在linux操作系统中大约每30秒刷一次缓冲。这种情况下,缓冲区数据同步不可控,并且在大量的写操作下,aof_buf缓冲区会堆积会越来越严重,一旦redis出现故障,数据
    #always:表示每次有写操作都调用fsync方法强制内核将数据写入到aof文件。这种情况下由于每次写命令都写到了文件中, 虽然数据比较安全,但是因为每次写操作都会同步到AOF文件中,所以在性能上会有影响,同时由于频繁的IO操作,硬盘的使用寿命会降低。
    #everysec:数据将使用调用操作系统write写入文件,并使用fsync每秒一次从内核刷新到磁盘。 这是折中的方案,兼顾性能和数据安全,所以redis默认推荐使用该配置。
    
    aof-load-truncated yes
    #当redis突然运行崩溃时,会出现aof文件被截断的情况,Redis可以在发生这种情况时退出并加载错误,以下选项控制此行为。
    #如果aof-load-truncated设置为yes,则加载截断的AOF文件,Redis服务器启动发出日志以通知用户该事件。
    #如果该选项设置为no,则服务将中止并显示错误并停止启动。当该选项设置为no时,用户需要在重启之前使用“redis-check-aof”实用程序修复AOF文件在进行启动。
    
    appendonly no 
    #yes开启AOF,no关闭AOF
    
    appendfilename appendonly.aof
    #指定AOF文件名,建议改为 appendonly-6379.aof

    二、主从复制

    1. 实现方式

    即使同一台机器,也不建议使用 127.0.0.1 

    ①. 命令方式

    slaveof 127.0.0.1 6379 # 在从节点上执行此命令,将该 ip 和 port 设置为 master 节点
    
    slaveof no one # 取消主从复制,将自己恢复为 master 节点

    ②. 配置文件方式

    slaveof 127.0.0.1 6379 # 修改从节点配置文件
    slaveof-read-only yes # 是否只读

    2. 其他命令

    info replication # 查看主从状态
  • 相关阅读:
    操作系统作业调度-操作系统
    评论--软件工程
    实验二 作业调度模拟程序
    复利计算评价博客
    构建之法(第四章读后感)
    复利计算--结对项目<04-11-2016> 1.0.0 lastest 阶段性完工~
    实验一 命令解释程序的编写
    构建之法(前三章读后感)
    实验0 了解和熟悉操作系统(操作系统)
    Scrum项目4.0
  • 原文地址:https://www.cnblogs.com/libra0920/p/12028342.html
Copyright © 2020-2023  润新知