redis主从复制

主从复制.png
Rdis 的主从复制特点:
  • 一个master可以有多个slave
  • 一个slave只能有一个master
  • 数据流向是单向的,从master到slave

配置环境:

宿主机上创建一个从redis服务器的docker

docker exec -it redis-s1 bash

从redis服务器

  • 创建文件夹
    mkdir /etc/redis

宿主机:

  • 把前一个主redis服务器中的6379.conf文件cp到宿主机上:
    docker cp b08dd3c84c50:/etc/redis/6379.conf .
  • 把宿主机上的6379.cof文件cp到从redis服务器中
    docker cp 6379.conf redis-s1:/etc/redis

从redis服务器

  • 查看/etc/redis/
    可观察到cp成功
    image.png

主从复制实验

主redis服务器:

  • 修改配置文件
    将bind从127.0.0.1改为0.0.0.0

    修改bind

  • 重启服务
    supervisorctl restart redis-6379

    image.png

  • redis-cli进入终端

  • info replication查看主从信息
    此时还未绑定任何从服务器

    image.png

若在此之前有绑定从服务器,可用slaveof no one清空绑定

  • 进行写操作
    set n 10
    image.png

从redis服务器

  • 修改配置文件
    vi /etc/redis/6379.conf
  1. 将bind从127.0.0.1改为0.0.0.0
    修改bind
  2. 配置隶属于哪个主服务器
slaveof  主服务器的IP  端口号

slaveof 命令是异步的非阻塞
并且此时,从服务器现有的数据会先被清空,之后再同步主服务器的数据。

其中172.17.0.2是主redis服务器的ip地址,也可使用主服务器的容器名,前提是可以ping

image.png

  • 重启服务,让配置文件生效
    supervisorctl restart redis-6379
    image.png
  • 进入终端,查看主从信息
    redis-cli 进入终端
    info replication 查看主从信息
    可观察到,此时该服务器的roleslave,表明为从redis服务器
    master_host: 主服务器的ip地址 (若配置文件中填写的容器名,则会显示为容器名)
从服务器
  • 获取主服务器设置的n的值
    此时,通过get n可获取到之前主服务器setn 的值
image.png

主redis服务器

  • 回到主服务器可观察到主redis服务器已经配置了一个从服务器,且从服务器的ip是:172.17.0.3
    主redis服务器.png

你可能感兴趣的:(redis主从复制)