说明

  • 由于机器有限,本次操作将在 1台服务器上完成 1主 2从的操作
  • 服务器的内网 IP 地址为 192.168.0.241
  • master (主 redis) 使用 6379 端口, slave1(从 redis) 使用 6380 端口, slave2(从redis) 使用 6381 端口
  • 为了方便查看日志输出,本次操作不将 redis设置为后台运行
  • 主从复制架构仅仅用来解决数据的冗余备份,从节点仅仅用来同步数据
  • 无法解决: 1.master节点出现故障的自动故障转移

    架构图

    Redis主从复制 - 图1

    编辑配置文件

    创建 3 个目录

    1. mkdir /root/master
    2. mkdir /root/slave1
    3. mkdir /root/slave2

    从解压的 redis 源码中拷贝 redis.conf 文件分别到 刚创建的 3 个目录中

    1. cp /data/redis-4.0.11/redis.conf /root/master/
    2. cp /data/redis-4.0.11/redis.conf /root/slave1/
    3. cp /data/redis-4.0.11/redis.conf /root/slave2/

    分别编辑这三个配置文件

    1. vim /root/master/redis.conf
    2. vim /root/slave1/redis.conf
    3. vim /root/slave2/redis.conf
    ```shell
  • master port 6379 bind 0.0.0.0

  • slave1 port 6380 bind 0.0.0.0 slaveof masterip masterport

  • slave2 port 6381 bind 0.0.0.0 slaveof masterip masterport

    1. <a name="N1C41"></a>
    2. ## 启动 redis 服务
    3. <a name="MbwCv"></a>
    4. ### 启动 master redis 服务
    5. ```shell
    6. /usr/local/redis/bin/redis-server /root/master/redis.conf

    启动 slave1 redis 服务

    /usr/local/redis/bin/redis-server /root/slave1/redis.conf
    

    启动 slave2 redis 服务

    /usr/local/redis/bin/redis-server /root/slave2/redis.conf
    

    使用 redis client 登录

    登录 master

    cd /usr/local/redis/bin/
    ./redis-cli -p 6379
    

    进行读写操作(读写ok):

    127.0.0.1:6379> set name zs
    OK
    127.0.0.1:6379> set sex man
    OK
    127.0.0.1:6379> get sex
    "man"
    127.0.0.1:6379> get name
    "zs"
    

    登录 slave1 (或 slave2)

    cd /usr/local/redis/bin/
    ./redis-cli -p 6380
    

    进行读写操作(可以读, 但不能写):

    127.0.0.1:6380> get name
    "zs"
    127.0.0.1:6380> set age 11
    (error) READONLY You can't write against a read only slave.
    127.0.0.1:6380>