zoukankan      html  css  js  c++  java
  • redis主从与备份

    1、设定服务端密码
    1.1、编辑 redis的配置文件
    [root@centos7 ~]# vim /usr/local/redis/etc/redis.conf 
        requirepass 123 # 大约500行左右,取消注释,写上自己想设定的密码
    
    1.2、重启redis
    [root@centos7 ~]# pkill redis ; /usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf 
    3140:C 19 Jan 2020 17:14:36.274 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
    3140:C 19 Jan 2020 17:14:36.274 # Redis version=5.0.7, bits=64, commit=00000000, modified=0, pid=3140, just started
    3140:C 19 Jan 2020 17:14:36.274 # Configuration loaded
    
    1.3、连接

    输入密码有两种方式

    #1、交互模式直接输入,使用 -a 参数,会提示不安全
    [root@centos7 ~]# /usr/local/redis/bin/redis-cli -h 127.0.0.1 -p 6379 -a 123
    Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
    
    #2、连接后使用 auth 命令
    [root@centos7 ~]# /usr/local/redis/bin/redis-cli -h 127.0.0.1 -p 6379
    127.0.0.1:6379> auth 123
    OK
    
    2、redis主从
    2.1、redis主从复制过程
    • Slave 与 master 建立连接,发送 sync 同步命令
    • Master 会启动一个后台进程,将数据库快照保存到文件中,同时 master 主进程会开始收集新的写命令并缓存。
    • 后台完成保存后,就将此文件发送给 slave
    • Slave 将此文件保存到硬盘上
    2.2、复制配置文件,生成多个实列。
    6380.conf(主)
    6381.conf(从1)
    6382.conf(从2)
    
    [root@centos7 ~]# cd /usr/local/redis/etc/
    [root@centos7 etc]# cp -a redis.conf  6380.conf
    [root@centos7 etc]# cp -a redis.conf  6381.conf
    [root@centos7 etc]# cp -a redis.conf  6382.conf
    
    # 需要将对应的pid 文件修改下,和端口。
    port 6380
    pidfile /var/run/redis_6380.pid
    
    port 6381
    pidfile /var/run/redis_6381.pid
    
    port 6382
    pidfile /var/run/redis_6382.pid
    
    
    2.3、修改配置文件
    老版本:  
    从:
        slaveof <masterip> <msterport>  #主服务器的 IP 和端口   
        masterauth <masterpass>   #主服务器的密码(主服务器要设置好密码) 
    
    新版本 redis 5.* 以上:  
    主:   
        找到 bind 127.0.0.1 注释掉,或者修改为本机的 IP 地址(重启)
        #这里因为是在一台机器上,运行多个实例,所以 ip 为 127.0.0.1 不需要改。   
    从:   
        replicaof  <masterip> <msterport> #主服务器的 IP 和端口   
        masterauth <masterpass>   #主服务器的密码(主服务器要设置好密码)
        # 将 6381.conf , 6382.conf 修改配置
        replicaof  127.0.0.1 6380
        masterauth 123
    
    2.4、启动三个实例
    [root@centos7 etc]# /usr/local/redis/bin/redis-server /usr/local/redis/etc/6380.conf 
    
    [root@centos7 etc]# /usr/local/redis/bin/redis-server /usr/local/redis/etc/6381.conf 
    
    [root@centos7 etc]# /usr/local/redis/bin/redis-server /usr/local/redis/etc/6382.conf 
    
    
    2.5、通过命令查看是否成功
    [root@centos7 ~]# /usr/local/redis/bin/redis-cli -p 6380 -a 123  info Replication
    Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
    # Replication
    role:master
    connected_slaves:2
    
    
    3、数据持久化

    Redis 是一个支持持久化的内存数据库,也就是说需要经常将内存中的数据同步到硬盘来保证持久化。

    snapshotting(快照)--默认方式

    RDB 持久化方式能够在指定的时间间隔能对你的数据进行快照存储。是默认的持久化方式。这种方式是将内存中数据以快照的方式写入到二进制文件中,默认的文件名dump.rdb。这种持久化方式被称为快照。

    # 过了 900 秒并且有 1 个 key 发生了改变 就会触发 save 动作 
    # 过了 300 秒并且有 10 个 key 发生了改变 就会触发 save 动作 
    # 过了 60 秒并且至少有 10000 个 key 发生了改变 也会触发 save 动作 
    

    redis.conf 文件中 dir ./定义了数据库文件的存放位置,默认是当前目录。所以每次重启 redis 服务所在的位置不同,将会生成新的 dump.rdb 文件;建议服务器搭建完成时先修改快照文件保存位置
    在进行rdb快照时,如果此时又触发了save动作,这个时候是不会进行rdb备份,因为此时rdb进程已经被占用,为了解决这个为题,redis引入了下面的aof备份。

    append-only file(aof日志)

    使用 AOF 会让你的 Redis 更加耐久: 你可以使用不同的持久化策略:每次写的时候备份、每秒备份、无备份。使用默认的每秒备份策略,Redis 的性能依然很好(备份是由后台线程进行处理的,主线程会尽力处理客户端请求),一旦出现故障,你最多丢失 1 秒的数据。
    打开 redis.conf 配置文件开启 AOF 持久化 appendonly no 默认不使用 AOF 持久化(450 行)将 no 改成 yes。

    # appendfsync always  有写操作,就马上写入磁盘。效率最慢,但是最安全 
    # appendfsync everysec   默认,每秒钟写入磁盘一次。 
    # appendfsync no    不进行 AOF 备份,将数据交给操作系统处理。最快,最不安全 
    # no-appendfsync-on-rewrite no 在进行aof重写的时候要不要停止aof备份,默认是否,不过我们应该停止aof写入,因为此时会造成rdb备份与aof备份不一致的情况,此时虽然停止了aof,但是redis会将此时的命令加入任务队列中,待当前备份动作完成后,在进行执行。
    
    #aof重写,aof备份是类似于日志的备份方法,每当有命令执行时,就会记录在aof文件中,久而久之aof文件就会特别大,而aof重写技术,就是当aof备份文件到达一定大小,对数据库中的**数据逆化成命令**,再将命令重新写入aof备份文件中的过程。
    #auto-aof-rewrite-percentage 100   aof备份文件比上次重写时大100%时重写。
    #auto-aof-rewrite-min-size 64mb    当aof备份文件大于64mb重写。
    

    重启 redis 服务,登录 client 添加一个键值,退出然后 ls 命令查看下是否生成 appendonly.aof。

  • 相关阅读:
    采样定理
    空间谱专题03:时空特性与采样定理
    常见的矩阵形式
    【Windows】XShell中使用小键盘和ALT键(作Meta键),使BackSpace正常
    【Linux】Ubuntu13.10搭建gitlab报错信息及解决
    〖Android〗ant build android project, setting android.jar precedence
    〖Linux〗使用命令行切换触摸板的状态on/off/toggle
    【Android】ant编译aidl的错误
    【Android】源码external/目录中在编译过程中生成的文件列表
    〖Linux〗实时更新 hosts 文件的脚本
  • 原文地址:https://www.cnblogs.com/hjnzs/p/12214733.html
Copyright © 2011-2022 走看看