• Redis环境搭建--主从模式


    概念

    通过持久化功能,Redis保证了即使在服务器重启的情况下也不会损失(或少量损失)数据,因为持久化会把内存中数据保存到硬盘上,重启会从硬盘上加载数据。
    但是由于数据是存储在一台服务器上的,如果这台服务器出现硬盘故障等问题,也会导致数据丢失。为了避免单点故障,通常的做法是将数据库复制多个副本以部署在不同的服务器上,这样即使有一台服务器出现故障,其他服务器依然可以继续提供服务。为此, Redis 提供了复制(replication)功能,可以实现当一台数据库中的数据更新后,自动将更新的数据同步到其他数据库上。

    在复制的概念中,数据库分为两类,一类是主数据库(master),另一类是从数据库(slave)。主数据库可以进行读写操作,当写操作导致数据变化时会自动将数据同步给从数据库。而从数据库一般是只读的,并接受主数据库同步过来的数据。一个主数据库可以拥有多个从数据库,而一个从数据库只能拥有一个主数据库。

    主从数据库的配置

    主数据库不用配置,从redis的conf文件中可以加载从数据库的信息,也可以在启动时,使用 redis-server --port 6380 --slaveof 127.0.0.1 6379
    从数据库一般是只读,可以改为可写,但写入的数据很容易被主同步没,所以还是只读就可以。
    也可以在运行时使用slaveof ip port命令,停止原来的主,切换成刚刚设置的主 slaveof no one会把自己变成主

    一主两从环境搭建

    • 本地编译安装
    mkdir -p /home/apps
    cd /home/apps
    wget http://download.redis.io/releases/redis-5.0.5.tar.gz
    tar xzf redis-5.0.5.tar.gz
    cd redis-5.0.5
    make
    
    • 复制&修改配置文件
    mkdir configs
    cp redis.conf configs
    cd configs
    
    # 作为主
    cp redis.conf redis7000.conf
    # 作为从
    cp redis.conf redis7001.conf
    cp redis.conf redis7002.conf
    
    • 主节点配置
    port 7000
    daemonize  yes
    requirepass 123456
    pidfile /var/run/redis_7000.pid
    logfile /var/log/redis/redis_7000.log
    
    • 从节点配置
    port 7001
    daemonize  yes
    requirepass 123456
    masterauth 123456
    replicaof 127.0.0.1 7000
    pidfile /var/run/redis_7001.pid
    logfile /var/log/redis/redis_7001.log
    
    port 7002
    daemonize  yes
    requirepass 123456
    masterauth 123456
    replicaof 127.0.0.1 7000
    pidfile /var/run/redis_7002.pid
    logfile /var/log/redis/redis_7002.log
    
    • 集群查看
    ../src/redis-cli -p 7000 -a 123456
    127.0.0.1:7000> info replication
    # Replication
    role:master
    connected_slaves:2
    slave0:ip=127.0.0.1,port=7001,state=online,offset=224,lag=0
    slave1:ip=127.0.0.1,port=7002,state=online,offset=224,lag=1
    master_replid:1dde0f60b747564b1e469ddab6382a935cc1bce7
    master_replid2:0000000000000000000000000000000000000000
    master_repl_offset:224
    second_repl_offset:-1
    repl_backlog_active:1
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:1
    repl_backlog_histlen:224
    
    • 启动
    ../src/redis-server redis7000.conf
    ../src/redis-server redis7001.conf
    ../src/redis-server redis7002.conf
    

    测试

    • 主从复制测试
    # 主节点写入数据
    ../src/redis-cli -p 7000 -a 123456
    Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
    127.0.0.1:7000> set aaa 111
    OK
    127.0.0.1:7000>
    
    # 从节点获取数据
    ../src/redis-cli -p 7001 -a 123456
    Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
    127.0.0.1:7001> get aaa
    "111"
    127.0.0.1:7001>
    
    ../src/redis-cli -p 7002 -a 123456
    Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
    127.0.0.1:7002> get aaa
    "111"
    127.0.0.1:7002>
    
    
  • 相关阅读:
    resin网站出错!
    Java的编译与执行
    对SDK、JDK、JRE和JVM的理解总结
    第一个JDBC实例 操作MYSQL数据库
    三种定义JavaScript函数方法以及使用匿名函数打造自己的类库
    JavaScript 闭包原理和闭包实现
    学习Java运算符时的取余(%)和自加减(++、)的小结
    chmod 命令用法
    Eclipse快捷键大全
    ||运算符在JavaScript的另类用法
  • 原文地址:https://www.cnblogs.com/CSunShine/p/11475152.html
Copyright © 2020-2023  润新知