• docker实现redis主从复制


    一、概览

    • 主库:192.168.3.13:6380
    • 从库一:192.168.3.14:6381
    • 从库二:192.168.3.14:6382

    2、开放上以端口

    • 查看所有打开的端口: firewall-cmd --zone=public --list-ports
    • 分别添加以上端口:firewall-cmd --zone=public --add-port=6380/tcp --permanent
    • 刷新防火墙:firewall-cmd --reload

    二、安装master库

    1、安装镜像

    docker pull redis:6.2.5
    

    2、新建目录

    mkdir -p /home/apps/redis-master/{conf,data}
    

    3、创建/修改配置文件

    cd /home/apps/redis-master/conf
    wget http://download.redis.io/redis-stable/redis.conf
    

    -- 修改配置文件,参考第5步
    vim redis.conf

    4、创建并启动

    docker run \
    -d \
    --name redis-master \
    --restart=always \
    --privileged=true \
    -p 6380:6379 \
    -v /home/apps/redis-master/conf/redis.conf:/etc/redis/redis.conf \
    -v /home/apps/redis-master/data:/data \
    redis:6.2.5 \
    redis-server /etc/redis/redis.conf
    

    命令 描述
    -d 后台运行
    --restart=always 重启docker时,自动启动相关容器
    --privileged=true 以特权方式启动容器,解决报错问题(Permission denied)
    --appendonly yes redis持久化
    redis-server /etc/redis/redis.conf Redis 容器中设置 redis-server 每次启动读取 /etc/redis/redis.conf 这个配置为准
    \ shell 命令换行

    5、修改redis.conf配置

    命令 功能
    appendonly yes 启动Redis持久化功能
    protected-mode no 关闭protected-mode模式,此时外部网络可以直接访问 (docker貌似自动开启了)
    bind 0.0.0.0 注释掉,设置所有IP都可以访问 (docker貌似自动开启了)
    requirepass 密码 设置密码
    dir ./ 输入本地redis数据库存放文件夹

    三、安装slave从库

    • 参考上面的建法,新建redis-slave-01、redis-slave-02
    -- 新建目录
    mkdir -p /home/apps/redis-slave-01/{conf,data}
    mkdir -p /home/apps/redis-slave-02/{conf,data}
    

    --从主库那里复制配置文件
    # cp /home/apps/redis-master/conf/redis.conf /home/apps/redis-slave-01/conf/
    # cp /home/apps/redis-master/conf/redis.conf /home/apps/redis-slave-02/conf/

    -- 修改从库配置
    vim /home/apps/redis-slave-01/conf/redis.conf

    # 配置连接主库信息
    replicaof 192.168.3.13 6380

    # 从机只读模式默认是开启的:
    replica-read-only yes

    # 配置主库密码
    masterauth 123456

    -- 启动slave1
    docker run -d --name redis-slave-01 --restart=always --privileged=true -p 6381:6379 -v /home/apps/redis-slave-01/conf/redis.conf:/etc/redis/redis.conf -v /home/apps/redis-slave-01/data:/data redis:6.2.5 redis-server /etc/redis/redis.conf

    -- 启动slave2
    docker run -d --name redis-slave-02 --restart=always --privileged=true -p 6382:6379 -v /home/apps/redis-slave-02/conf/redis.conf:/etc/redis/redis.conf -v /home/apps/redis-slave-02/data:/data redis:6.2.5 redis-server /etc/redis/redis.conf

    --查看redis主从配置

    # 进入容器
    docker exec -it redis-slave-01 /bin/bash
    # 连接redis
    redis-cli -h 127.0.0.1 -p 6379 -a 123456
    # 查看主从配置
    info replication

    # Replication
    role:slave
    master_host:192.168.3.13
    master_port:6380
    master_link_status:up

    四、错误分析

    在从库中出现:master_link_status:down

    • 防火墙问题
    • 密码问题

    五、参考网址

  • 相关阅读:
    SQL查询,点击三维图层,查询属性信息
    title标签的使用
    idea快捷键大全
    intellij idea创建第一个动态web项目
    IDEA设置为黑色背景(今天开始使用idea,并记录点滴,记录坑)
    Eclipse导出Jar包(包含外部包)
    获取当前系统时间
    JS实现的ajax和同源策略
    缓存
    Restful Framework (四)
  • 原文地址:https://www.cnblogs.com/edda/p/16274155.html
Copyright © 2020-2023  润新知