开发者

Redis 主从搭建的实现(同主机和跨节点)

开发者 https://www.devze.com 2025-09-25 09:14 出处:网络 作者: 咚咚?
目录一. 同主机搭建Redis主从1. 环境介绍2. 环境前准备工作3. 安装 Redis 7.2.54. redis 配置修改并且启动4.1 修改配置文件4.2 编写启动脚本5. 开启主从5.1 开启5.2 主库实例查看主从信息5.3 从库实例查看主从信息5.
目录
  • 一. 同主机搭建Redis主从
    • 1. 环境介绍
    • 2. 环境前准备工作
    • 3. 安装 Redis 7.2.5
    • 4. redis 配置修改并且启动
      • 4.1 修改配置文件
      • 4.2 编写启动脚本
    • 5. 开启主从
      • 5.1 开启
      • 5.2 主库实例查看主从信息
      • 5.3 从库实例查看主从信息
      • 5.4 验证主从配置是否生效
    • 6. 解除 192.168.1.100:16372 实例主从
    • 二. 跨节点部署Redis主从
      • 1. 环境介绍
        • 2. 修改配置文件
          • 2.1 master
          • 2.2 slave 1
          • 2.3 slave 2
        • 3.启动Redis
          • 3.1 master
          • 3.2 slave 1
          • 3.3 slave 2
        • 4. 开启主从
          • 4.1 slave 1
          • 4.2 slave 2
          • 4.3 master
        • 5. 验证主从配置是否生效

        一. 同主机搭建Redis主从

        1. 环境介绍

        同机器 一主两从

        操作系统Centos 7
        内核版本linux 3.10.0-957.el7.x86_64
        主机名称master-salve
        IP地址192.168.1.100
        端口master: 16370 slave1: 16371 slave2: 16372
        Redis7.2.5

        2. 环境前准备工作

        # 关闭防火墙
        systemctl stop firewalld
        systemctl disable firewalld
        
        # 修改 hostname
        hostnamectl set-hostname xxxx  # 修改后退出当前终端重新连接即可
        
        # 更新下软件源
        # 地址 https://developer.aliyun.com/mirror/
        
        # 时区调整,时间校准
        date -R
        timedatectl set-timezone Asia/Shanghai
        yum -y install ntp
        ntpdate ntp1.aliyun.com
        
        # 关闭 selinux: 
        sed -i 's/enforcing/disabled/' /etc/selinux/config
        setenforce 0
        
        

        3. 安装 Redis 7.2.5

        # 下载地址
        http://download.redis.io/releases/
        
        # 下载
        wget http://download.redis.io/releases/redis-7.2.5.tar.gz
        # 解压
        tar -xf redis-7.2.5.tar.gz -C /opt/redis
        
        # 编译
        make MALLOC=libc
        
        # 安装 注意如果安装提示python3不存在 执行 yum install -y python3
        make install PREFIX=/usr/local/redis
        
        # 配置环境变量
        vi /etc/profile.d/redis.sh
        
        #!/bin/bash
        
        export REDIS_HOME=/usr/local/redis
        export PATH=$PATH:$REDIS_HOME/bin 
        
        # 使其配置生效
        source /etc/profile.d/redis.sh
        

        4. redis 配置修改并且启动

        4.1 修改配置文件

        # 创建redis数据存储目录
        mkdir -p /usr/local/redis/data/1637{0..2}
        # 创建redis配置文件存储目录
        mkdir -p /usr/local/redis/conf/1637{0..2}
        # 创建redis日志存储目录
        mkdir -p /usr/local/redis/log/1637{0..2}
        
        # 创建redis pid存储目录
        mkdir /usr/local/redis/run
        
        
        # redis配置文件 16370
        # 开启保护模式
        protected-mode yes
        # 添加本机的ip
        bind 192.168.1.100   
        # 端口  
        port 16370
        # pid存储目录
        pidfile /usr/local/redis/run/redis_1637android0.pid   
        # 日志存储目录
        logfile /usr/local/redis/log/16370/redis_16370.log 
        # 数据存储目录,目录要提前创建好
        dir /usr/local/redis/data/16370
        # 设置实例的验证口令
        requirepass dongdong
        # 以认证的方式连接到master。 如果master中使用了“密码保护”,slave必须交付正确的授权密码,才能连接成功。
        # 此配置项中值需要和master机器的“requirepass”保持一致
        masterauth dongdong
        # 配置RDB持久化策略
        save 900 1
        save 300 10
        save 60 10000
        # 配置AOF持久化
        appendonly yes 
        appendfsync everysec
        # 守护进程
        daemonize yes  
        
        
        
        # redis配置文件 16371
        # 开启保护模式
        protected-mode yes
        # 添加本机的ip
        bind 192.168.1.100   
        # 端口  
        port 16371
        # pid存储目录
        pidfile /usr/local/redis/run/redis_16371.pid   
        # 日志存储目录
        logfile /usr/local/redis/log/16370/redis_16371.log 
        # 数据存储目录,目录要提前创建好
        dir /usr/local/redis/data/16371
        # 设置实例的验证口令
        requirepass dongdong
        # 以认证的方式连接到master。 如果master中使用了“密码保护”,slave必须交付正确的授权密码,才能连接成功。
        # 此配置项中值需要和master机器的“requirepass”保持一致
        masterauth dongdong
        # 配置RDB持久化策略
        save 900 1
        save 300 10
        save 60 10000
        # 配置AOF持久化
        appendonly yes 
        appendfsync everysec
        # 守护进程
        daemonize yes  
        
        
        
        # redis配置文件 16372
        # 开启保护模式
        protected-mode yes
        # 添加本机的ip
        bind 192.168.1.100   
        # 端口  
        port 16372
        # pid存储目录
        pidfile /usr/local/redis/run/redis_16372.pid   
        # 日志存储目录
        logfile /usr/local/redis/log/16370/redis_16372.log 
        # 数据存储目录,目录要提前创建好
        dir /usr/local/redis/data/16372
        # 设置实例的验证口令
        requirepass dongdong
        # 以认证的方式连接到master。 如果master中使用了“密码保护”,slave必须交付正确的授权密码,才能连接成功。
        # 此配置项中值需要和master机器的“requirepass”保持一致
        masterauth dongdong
        # 配置RDB持久化策略
        save 900 1
        save 300 10
        save 60 10000
        # 配置AOF持久化
        appendonly yes 
        appendfsync everysec
        # 守护进程
        daemonize yes  
        
        
        
        
        # 复制下面命令即可
        cat > /uhttp://www.devze.comsr/local/redis/conf/redis_16370.conf <<EOF 
        # 开启保护模式
        protected-mode yes
        # 添加本机的ip
        bindandroid 192.168.1.100   
        # 端口  
        port 16370
        # pid存储目录
        pidfile /usr/local/redis/run/redis_16370.pid   
        # 日志存储目录
        logfile /usr/local/redis/log/16370/redis_16370.log 
        # 数据存储目录,目录要提前创建好
        dir /usr/local/redis/data/16370
        # 设置实例的验证口令
        requirepass dongdong
        # 以认证的方式连接到master。 如果master中使用了“密码保护”,slave必须交付正确的授权密码,才能连接成功。
        # 此配置项中值需要和master机器的“requirepass”保持一致
        masterauth dongdong
        # 配置RDB持久化策略
        save 900 1
        save 300 10
        save 60 10000
        # 配置AOF持久化
        appendonly yes 
        appendfsync everysec
        # 守护进程
        daemonize yes 
        EOF
        
        
        
        cat > /usr/local/redis/conf/redis_16371.conf <<EOF 
        # 开启保护模式
        protected-mode yes
        # 添加本机的ip
        bind 192.168.1.100   
        # 端口  
        port 16371
        # pid存储目录
        pidfile /usr/local/redis/run/redis_16371.pid   
        # 日志存储目录
        logfile /usr/local/redis/log/16370/redis_16371.log 
        # 数据存储目录,目录要提前创建好
        dir /usr/local/redis/data/16371
        # 设置实例的验证口令
        requirepass dongdong
        # 以认证的方式连接到master。 如果master中使用了“密码保护”,slave必须交付正确的授权密码,才能连接成功。
        # 此配置项中值需要和master机器的“requirepass”保持一致
        masterauth dongdong
        # 配置RDB持久化策略
        save 900 1
        save 300 10
        save 60 10000
        # 配置AOF持久化
        appendonly yes 
        appendfsync everysec
        # 守护进程
        daemonize yes 
        EOF
        
        cat > /usr/local/redis/conf/redis_16372.conf <<EOF 
        # 开启保护模式
        protected-mode yes
        # 添加本机的ip
        bind 192.168.1.100   
        # 端口  
        port 16372
        # pid存储目录
        pidfile /usr/local/redis/run/redis_16372.pid   
        # 日志存储目录
        logfile /usr/local/redis/log/16370/redis_16372.log 
        # 数据存储目录,目录要提前创建好
        dir /usr/local/redis/data/16372
        # 设置实例的验证口令
        requirepass dongdong
        # 以认证的方式连接到master。 如果master中使用了“密码保护”,slave必须交付正确的授权密码,才能连接成功。
        # 此配置项中值需要和master机器的“requirepass”保持一致
        masterauth dongdong
        # 配置RDB持久化策略
        save 900 1
        save 300 10
        save 60 10000
        # 配置AOF持久化
        appendonly yes 
        appendfsync everysec
        # 守护进程
        daemonize yes 
        EOF
        

        4.2 编写启动脚本

        # 启动脚本
        cat > /usr/local/redis/bin/master-slave_start.sh << EOF
        #!/bin/bash
        
        
        
        redis-server /usr/local/redis/conf/redis_16370.conf
        redis-server /usr/local/redis/conf/redis_16371.conf
        redis-server /usr/local/redis/conf/redis_16372.conf
        EOF
        
        
        # 赋予可执行权限
        chmod +x /usr/local/redis/bin/master-slave_start.sh
        
        
        # 关闭脚本
        vi /usr/local/redis/bin/master-slave_shutdown.sh
        
        #!/bin/bash
        
        kill -9 $(ps -ef | grep 1637 | grep -v grep | awk '{print $2}')
        
        # 赋予可执行权限
        chmod +x /usr/local/redis/bin/master-slave_shutdown.sh
        

        5. 开启主从

        5.1 开启

        # 以"192.168.1.100:16370"实例为主库,以"192.168.1.100:16371"实例和"192.168.1.100:16372"实例为从库。
        # -a 参数指定密码
        # 从库实例开启主从
         redis-cli -h 192.168.1.100 -p 16371 -a dongdong slaveof 192.168.1.100 16370
         redis-cli -h 192.168.1.100 -p 16372 -a dongdong slaveof 192.168.1.100 16370
         
         # Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
         # 警告:在命令行界面上使用带有“-a”或“-u”选项的密码可能不安全。  可以忽略
         # 解决方式
         # redis-cli -h 192.168.1.100 -p 16371 -a dongdong --no-auth-warning  slaveof 192.168.1.100 16370 
         
        

        5.2 主库实例查看主从信息

         redis-cli -h 192.168.1.100 -p 16370 -a dongdong  info replication 
         
         [root@master-slave ~]# redis-cli -h 192.168.1.100 -p 16370 -a dongdong  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
        slave0:ip=192.168.1.100,port=16371,state=online,offset=8428,lag=0
        slave1:ip=192.168.1.100,port=16372,state=online,offset=8428,lag=1
        master_failover_state:no-failover
        master_replid:a292603e2c96a6f451055e6d84a60795f81f2928
        master_replid2:0000000000000000000000000000000000000000
        master_repl_offset:8428
        second_repl_offset:-1
        repl_backlog_active:1
        repl_backlog_size:1048576
        repl_backlog_first_byte_offset:1
        repl_backlog_histlen:8428
        

        5.3 从库实例查看主从信息

        # 192.168.1.100:16371 查看主从信息
        redis-cli -h 192.168.1.100 -p 16371 -a dongdong  info replication 
        
        [root@master-slave ~]# redis-cli -h 192.168.1.100 -p 16371 -a dongdong  info replication 
        Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
        # Replication
        role:slave
        master_host:192.168.1.100
        master_port:16370
        master_link_status:up
        master_last_io_seconds_ago:0
        master_sync_in_progress:0
        slave_read_repl_offset:8680
        slave_repl_offset:8680
        slave_priority:100
        slave_read_only:1
        replica_announced:1
        connected_slaves:0
        master_failover_state:no-failover
        master_replid:a292603e2c96a6f451055e6d84a60795f81f2928
        master_replid2:0000000000000000000000000000000000000000
        master_repl_offset:8680
        second_repl_offset:-1
        repl_backlog_active:1
        repl_backlog_size:1048576
        repl_backlog_first_byte_offset:15
        repl_backlog_histlen:8666
        

        5.4 验证主从配置是否生效

        # "192.168.1.100:16370"实例主库的11号数据库创建测试数据
        redis-cli -h 192.168.1.100 -p 16370 -a dongdong -n 11
        
        [root@master-slave ~]# redis-cli -h 192.168.1.100 -p 16370 -a dongdong -n 11
        Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
        192.168.1.100:16370[11]> keys *
        (empty array)
        192.168.1.100:16370[11]> set name dongdong
        OK
        192.168.1.100:16370[11]> set age 18
        OK
        192.168.1.100:16370[11]> keys *
        1) "age"
        2) "name"
        
        # "192.168.1.100:16371"实例从库的11号数据库查看是否同步主库的11号数据库
        redis-cli -h 192.168.1.100 -p 16371 -a dongdong -n 11
        
        [root@master-slave ~]# redis-cli -h 192.168.1.100 -p 16371 -a dongdong -n 11
        Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
        192.168.1.100:16371[11]> keys *
        1) "name"
        2) "age"
        192.168.1.100:16371[11]> get name
        "dongdong"
        192.168.1.100:16371[11]> get age
        "18"
        192.168.1.100:16371[11]> 
        
        # "192.168.1.100:16372"实例从库的11号数据库查看是否同步主库的11号数据库
        redis-cli -h 192.168.1.100 -p 16372 -a dongdong -n 11
        
        [root@master-slave ~]# redis-cli -h 192.168.1.100 -p 16372 -a dongdong -n 11
        Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
        192.168.1.100:16372[11]> keys *
        1) "age"
        2) "name"
        192.168.1.100:16372[11]> get name
        "dongdong"
        192.168.1.100:16372[11]> get age
        "18"
        192.168.1.100:16372[11]> 
        

        6. 解除 192.168.1.100:16372 实例主从

        # 192.168.1.100:16372 查看主从信息
        redis-cli -h 192.168.1.100 -p 16372 -a dongdong  info replication 
        
        [root@master-slave ~]# redis-cli -h 192.168.1.100 -p 16372 -a dongdong  info replication 
        Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
        # Replication
        role:slave
        master_host:192.168.1.100
        master_port:16370
        master_link_status:up
        master_last_io_seconds_ago:4
        master_sync_in_progress:0
        slave_read_repl_offset:10003
        slave_repl_offset:10003
        slave_priority:100
        slave_read_only:1
        replica_announced:1
        connected_slaves:0
        master_failover_state:no-failover
        master_replid:a292603e2c96a6f451055e6d84a60795f81f2928
        master_replid2:0000000000000000000000000000000000000000
        master_repl_offset:10003
        second_repl_offset:-1
        repl_backlog_active:1
        repl_backlog_size:1048576
        repl_backlog_first_byte_offset:155
        repl_backlog_histlen:9849
        
        #  192.168.1.100:16370 查看主从信息
        redis-cli -h 192.168.1.100 -p 16370 -a dongdong  info replication 
        [root@master-slave ~]#  redis-cli -h 192.168.1.100 -p 16370 -a dongdong  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
        slave0:ip=192.168.1.100,port=16371,state=online,offset=10157,lag=0
        slave1:ip=192.168.1.100,port=16372,state=online,offset=10157,lag=0
        master_failover_state:no-failover
        master_replid:a292603e2c96a6f451055e6d84a60795f81f2928
        master_replid2:0000000000000000000000000000000000000000
        master_repl_offset:10157
        second_repl_offset:-1
        repl_backlog_active:1
        repl_backlog_size:1048576
        repl_backlog_first_byte_offset:1
        repl_backlog_histlen:10157
        
        # 解除 192.168.1.100:16372 主从信息
        redis-cli -h 192.168.1.100 -p 16372 -a dongdong slaveof no one
        
        [root@master-slave ~]# redis-cli -h 192.168.1.100 -p 16372 -a dongdong slaveof no one
        Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
        OK
        
        # 再次查看 192.168.1.100:16370 查看主从信息
        redis-cli -h 192.168.1.100 -p 16370 -a dongdong  info replication 
        
        [root@master-slave ~]# redis-cli -h 192.168.1.100 -p 16370 -a dongdong  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:1
        slave0:ip=192.168.1.100,port=16371,state=online,offset=10731,lag=0
        master_failover_state:no-failover
        master_replid:a292603e2c96a6f451055e6d84a60795f81f2928
        master_replid2:0000000000000000000000000000000000000000
        master_repl_offset:10731
        second_repl_offset:-1
        repl_backlog_active:1
        repl_backlog_size:1048576
        repl_backlog_first_byte_offset:1
        repl_backlog_histlen:10731
        # 只剩下一个 从节点了
        
        # 把192.168.1.100:16372 添加回来
        redis-cli -h 192.168.1.100 -p 16372 -a dongdong slaveof 192.168.1.100 16370
        [root@master-slave ~]#  redis-cli -h 192.168.1.100 -p 16372 -a dongdong slaveof 192.168.1.100 16370
        Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
        OK
        
        # 此时再看192.168.1.100:16370 查看主从信息
        redis-cli -h 192.168.1.100 -p 16370 -a dongdong  info replication 
        
        [root@master-slave ~]# redis-cli -h 192.168.1.100 -p 16370 -a dongdong  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
        slave0:ip=192.168.1.100,port=16371,state=online,offset=10941,lag=0
        slave1:ip=192.168.1.100,port=16372,state=online,offset=10941,lag=0
        master_failover_state:no-failover
        master_replid:a292603e2c96a6f451055e6d84a60795f81f2928
        master_replid2:0000000000000000000000000000000000000000
        master_repl_offset:10941
        second_repl_offset:-1
        repl_backlog_active:1
        repl_backlog_size:1048576
        repl_backlog_first_byte_offset:1
        repl_backlog_histlen:10941
        # slaves 变成2了
        

        二. 跨节点部署Redis主从

        1. 环境介绍

        操作系统Centos 7Centos 7Centos 7
        内核版本Linux 3.10.0-957.el7.x86_64Linux 3.10.0-957.el7.x86_64Linux 3.10.0-957.el7.x86_64
        主机名称masterslave1slave2
        IP192.168.1.100192.168.1.200192.168.1.250
        端口163801638116382

        2. 修改配置文件

        2.1 master

        # 创建redis数据存储目录
        mkdir -p /usr/local/redis/data/16380
        # 创建redis配置文件存储目录
        mkdir -p /usr/local/redis/conf/16380
        # 创建redis日志存储目录
        mkdir -p /usr/local/redis/log/16380
        
        # 创建redis pid存储目录
        mkdir /usr/local/redis/run
        
        
        # 复制下面命令即可
        cat > /usr/local/redis/conf/redis_16380.conf<<EOF 
        # 开启保护模式
        protected-mode yes
        # 添加本机的ip
        bind 192.168.1.100   
        # 端口  
        port 16380
        # pid存储目录
        pidfile /usr/local/redis/run/redis_16380.pid   
        # 日志存储目录
        logfile /usr/local/redis/log/redis_16380.log 
        # 数据存储目录,目录要提前创建好
        dir /usr/local/redis/data/16380
        # 设置实例的验证口令
        requirepass dongdong
        # 以认证的方式连接到master。 如果master中使用了“密码保护”,slave必须交付正确的授权密码,才能连接成功。
        # 此配置项中值需要和master机器的“requirepass”保持一致
        masterauth dongdong
        # 配置RDB持久化策略
        save 900 1
        save 300 10
        save 60 10000
        # 配置AOF持久化
        appendonly yes 
        appendfsync everysec
        # 守护进程
        daemonize yes 
        EOF
        

        2.2 slave 1

        # 创建redis数据存储目录
        mkdir -p /usr/local/redis/data/16381
        # 创建redis配置文件存储目录
        mkdir -p /usr/local/redis/conf/16381
        # 创建redis日志存储目录
        mkdir -p /usr/local/redis/log/16381
        
        # 创建redis pid存储目录
        mkdir /usr/local/redis/run
        
        
        # 复制下面命令即可
        cat > /usr/local/redis/conf/redis_16381.conf <<EOF 
        # 开启保护模式
        protected-mode yes
        # 添加本机的ip
        bind 192.168.1.200   
        # 端口  
        port 16381
        # pid存储目录
        pidfile /usr/local/redis/run/redis_16381.pid   
        # 日志存储目录
        logfile /usr/local/redis/log/redis_16381.log 
        # 数据存储目录,目录要提前创建好
        dir /usr/local/redis/data/16381
        # 设置实例的验证口令
        requirepass dongdong
        # 以认证的方式连接到master。 如果master中使用了“密码保护”,slave必须交付正确的授权密码,才能连接成功。
        # 此配置项中值需要和master机器的“requirepass”保持一致
        masterauth dongdong
        # 配置RDB持久化策略
        save 900 1
        save 300 10
        save 60 10000
        # 配置AOF持久化
        appendonly yes 
        appendfsync everysec
        # 守护进程
        daemonize yes 
        EOF
        

        2.3 slave 2

        # 创建redis数据存储目录
        mkdir 编程客栈-p /usr/local/redis/data/16382
        # 创建redis配置文件存储目录
        mkdir -p /usr/local/redis/conf/16382
        # 创建redis日志存储目录
        mkdir -p /usr/local/redis/log/16382
        
        # 创建redis pid存储目录
        mkdir /usr/local/redis/run
        
        
        # 复制下面命令即可
        cat > /usr/local/redis/conf/redis_16382.conf <<EOF 
        # 开启保护模式
        protected-mode yes
        # 添加本机的ip
        bind 192.168.1.250   
        # 端口  
        port 16382
        # pid存储目录
        pidfile /usr/local/redis/run/redis_16382.pid   
        # 日志存储目录
        logfile /usr/local/redis/log/redis_16382.log 
        # 数据存储目录,目录要提前创建好
        dir /usr/local/redis/data/16382
        # 设置实例的验证口令
        requirepass dongdong
        # 以认证的方式连接到master。 如果master中使用了“密码保护”,slave必须交付正确的授权密码,才能连接成功。
        # 此配置项中值需要和master机器的“requirepass”保持一致
        masterauth dongdong
        # 配置RDB持久化策略
        save 900 1
        save 300 10
        save 60 10000
        # 配置AOF持久化
        appendonly yes 
        appendfsync everysec
        # 守护进程
        daemonize yes 
        EOF
        

        3.启动Redis

        3.1 master

        redis-server  /usr/local/redis/conf/redis_16380.conf
        

        3.2 slave 1

        redis-server  /usr/local/redis/conf/redis_16381.conf
        

        3.3 slave 2

        redis-server  /usr/local/redis/conf/redis_16382.conf
        

        4. 开启主从

        4.1 slave 1

        # 从库开启主从
        redis-cli -h 192.168.1.200 -p 16381 -a dongdong slaveof 192.168.1.100 16380
         
        [root@slave1 ~]#  redis-cli -h 192.168.1.200 -p 16381 -a dongdong slaveof 192.168.1.100 16380
        Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
        OK
        
        # 从库查看主从信息
        redis-cli -h 192.168.1.200 -p 16381 -a dongdong  info replication 
        
        [root@slave1 ~]# redis-cli -h 192.168.1.200 -p 16381 -a dongdong  info replication 
        Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
        # Replication
        role:slave
        master_host:192.168.1.100
        master_port:16380
        master_link_status:up
        master_last_io_seconds_ago:3
        master_sync_in_progress:0
        slave_read_repl_offset:532
        slave_repl_offset:532
        slave_priority:100
        slave_read_only:1
        replica_announced:1
        connected_slaves:0
        master_failover_state:no-failover
        master_replid:7330881025ee2709ee6c9c32ea3fcc9b6649893d
        master_replid2:0000000000000000000000000000000000000000
        master_repl_offset:532
        second_repl_offset:-1
        repl_backlog_active:1
        repl_backlog_size:1048576
        repl_backlog_first_byte_offset:15
        repl_backlog_histlen:518
        
        

        4.2 slave 2

        # 从库开启主从
        redis-cli -h 192.168.1.250 -p 16382 -a dongdong slaveof 192.168.1.100 16380
        
        [root@slave2 ~]# redis-cli -h 192.168.1.250 -p 16382 -a dongdong slaveof 192.168.1.100 16380
        Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
        OK
        
        # 从库查看主从信息
        redis-cli -h 192.168.1.250 -p 16382 -a dongdong  info replication 
        
        [root@slave2 ~]# redis-cli -h 192.168.1.250 -p 16382 -a dongdong  info replication
        Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
        # Replication
        role:slave
        master_host:192.168.1.100
        master_port:16380
        master_link_status:up
        master_last_io_seconds_ago:10
        master_sync_in_progress:0
        slave_read_repl_offset:560
        slave_repl_offset:560
        slave_priority:100
        slave_read_only:1
        replica_announced:1
        connected_slaves:0
        master_failover_state:no-failover
        master_replid:7330881025ee2709ee6c9c32ea3fcc9b6649893d
        master_replid2:0000000000000000000000000000000000000000
        master_repl_offset:560
        second_repl_offset:-1
        repl_backlog_active:1
        repl_backlog_size:1048576
        repl_backlog_first_byte_offset:211
        repl_backlog_histlen:350
        
        

        4.3 master

        # 查看 主从信息
        redis-cli -h 192.168.1.100 -p 16380 -a dongdong  info replication 
        
        [root@master ~]# redis-cli -h 192.168.1.100 -p 16380 -a dongdong  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
        slave0:ip=192.168.1.200,port=16381,state=online,offset=336,lag=0
        slave1:ip=192.168.1.250,port=16382,state=online,offset=336,lag=1
        master_failover_state:no-failover
        master_replid:7330881025ee2709ee6c9c32ea3fcc9b6649893d
        master_replid2:0000000000000000000000000000000000000000
        master_repl_offset:336
        second_repl_offset:-1
        repl_backlog_active:1
        repl_backlog_size:1048576
        repl_backlog_first_byte_offset:1
        repl_backlog_histlen:336
        

        5. 验证主从配置是否生效

        # "master主机名"实例主库的11号数据库创建测试数据
        redis-cli -h 192.168.1.100 -p 16380 -a dongdong -n 11
        
        [root@master ~]# redis-cli -h 192.168.1.100 -p 16380 -a dongdong -n 11
        Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
        192.168.1.100:16380[11]> keys *
        (empty array)
        192.168.1.100:16380[11]> set name dongdong
        OK
        192.168.1.100:16380[11]> set age 18
        OK
        192.168.1.100:16380[11]> keys *
        1) "name"
        2) "age"
        192.168.1.100:16380[11]> 
        
        
        # "slave1主机名"实例从库的11号数据库查看是否同步主库的11号数据库
        redis-cli -h 192.168.1.200 -p 16381 -a dongdong -n 11
        
        [root@slave1 ~]# redis-cli -h 192.168.1.200 -p 16381 -a dongdong -n 11
        Warning: Using a password with '-a' or '-u' option on the command line interface may not be编程 safe.
        192.168.1.200:16381[11]> get name
        "dongdong"
        192.168.1.200:16381[11]> get age
        "18"
        192.168.1.200:16381[11]> key *
        (error) ERR unknown command 'key', with args beginning with: '*' 
        192.168.1.200:16381[11]> keys *
        1) "age"
        2) "name"
        192.168.1.200:16381[11]> 
        
        # "slave2主机名"实例从库的11号数据库查看是否同步主库的11号数据库
        redis-cli -h 192.168.1.250 -p 16382 -a dongdong -n 11
        
        [root@slave2 ~]# redis-cli -h 192.168.1.250 -p 16382 -a dongdong -n 11
        Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
        192.168.1.250:16382[11]> get name 
        "dongdong"
        192.168.1.250:16382[11]> get age
        "18"
        192.168.1.250:16382[11]> keys *
        1) "age"
        2) "name"
        192.168.1.250:16382[11]> 
        
        # 如果针对 slave1 或者 slave2 进行写入操作 则会报错 错误信息  只能在master操作哦
        (error) READONLY You can't write against a read only replica.
        

        到此这篇关于Redis 主从搭建的实现(同主机和跨节点)的文章就介绍到这了,更多相关Redis 主从搭建内容请搜索编程客栈(www.devze.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.devze.com)!

        0

        精彩评论

        暂无评论...
        验证码 换一张
        取 消

        关注公众号