• 【运维篇】5.6 Redis server 主从复制配置



    在这里插入图片描述

    0. 前言

    在Redis运维篇的第5.6章节中,将讨论Redis服务器的主从复制配置。在开始之前,让先来了解一下主从复制的概念和作用。

    主从复制是指将一个Redis服务器的数据复制到其他Redis服务器的过程。在主从复制中,一个Redis服务器充当主服务器,而其他Redis服务器则充当从服务器。主服务器负责接收写操作,并将这些写操作传播到所有从服务器。从服务器则负责接收主服务器传播的写操作,并将这些写操作应用到自己的数据集中。

    主从复制的主要作用是提高系统的可用性和性能。通过将数据复制到多个服务器上,即使主服务器发生故障,从服务器仍然可以提供读取服务,从而保证系统的可用性。此外,主从复制还可以将读操作分摊到多个服务器上,从而提高整个系统的读取性能。

    在接下来的内容中,将详细讲解如何进行Redis服务器的主从复制配置和示例。

    1. 配置方式

    步骤1: 准备硬件和网络

    确保你的主机和从机的硬件资源符合运行Redis的要求。主服务器和从服务器应该通过可靠的网络连接,确保两者之间的通信稳定且延迟较低。

    这里我使用3台虚拟机来搭建一下,主服务器的ip为192.168.10.1,两个从服务器的ip分别为192.168.10.2192.168.10.2,端口号都为6379,具体的配置如下

    步骤2: 安装Redis

    根据你的操作系统,从Redis官网下载安装包或使用相应的包管理器进行安装。
    对于基于RPM的系统(如CentOS):

    sudo yum install redis
    
    • 1

    对于基于Debian的系统(如Ubuntu):

    sudo apt-get update
    sudo apt-get install redis-server
    
    • 1
    • 2

    对于macOS(使用Homebrew):

    brew install redis
    
    • 1

    我的是Centos 7
    192.168.10.1
    192.168.10.2
    192.168.10.3
    分别安装完redis 并开放防火墙6379端口号
    有两种方式,看你的操作系统的支持。

    1. 使用firewall
    	   # 检查当前防火墙规则:
    	  sudo firewall-cmd --list-all 
    	 #  如果没有特定规则,可以使用以下命令开放端口 6379:
    	  sudo firewall-cmd --add-port=6379/tcp --permanent 
    	   # 重新加载防火墙规则:
    	 sudo firewall-cmd --reload
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    1. 或者使用iptables
    sudo iptables -A INPUT -p tcp --dport 6379 -j ACCEPT
    
    • 1

    分别修改三台服务器的配置如下

    daemonize yes
    # 绑定的主机地址,这里注释掉,开放ip连接
    #bind 127.0.0.1
    logfile "redis.log"
    requirepass 123456
    
    • 1
    • 2
    • 3
    • 4
    • 5

    步骤3: 配置主服务器的Redis

    编辑Redis配置文件(通常位于/etc/redis/redis.conf/usr/local/etc/redis.conf),进行以下设置:

    # 启用AOF持久化模式,以保证数据安全
    appendonly yes
    
    # 如果需要密码认证,取消以下注释并设置密码
    requirepass 123456
    
    • 1
    • 2
    • 3
    • 4
    • 5

    重启Redis服务来应用新的配置:

    sudo service redis-server restart
    
    • 1

    或在系统中使用对应的命令,如systemctl等。

    步骤4: 配置从服务器的Redis

    在从服务器上,同样编辑Redis配置文件。添加以下设置:

    # 指定主服务器的地址和端口
    slaveof 192.168.10.1 6379
    
    # 如果主服务器设置了密码,配置从服务器的masterauth以匹配主服务器的密码
    masterauth 123456
    
    # 设置从服务器为只读模式
    slave-read-only yes
    
    # 设置从服务器与主服务器断开连接时的超时时间,单位为秒
    repl-timeout 60
    
    # 设置从服务器向主服务器发送PING的频率,单位为秒
    repl-ping-slave-period 10
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    重启从服务器的Redis服务以应用新的配置。

    步骤5: 测试复制功能

    在主服务器上执行Redis命令,添加一些数据:

    redis-cli -a 123456
    set key1 "value1"
    
    • 1
    • 2

    然后,在从服务器上执行:

    redis-cli -a 123456
    get key1
    
    • 1
    • 2

    如果返回的是"value1",表示复制功能正常。

    步骤6: 监控复制状态

    使用以下命令在主服务器和从服务器上查看复制的状态和信息:

    redis-cli -a 123456
    info replication
    
    • 1
    • 2

    会看到类似于以下的信息:

    192.168.10.1:6379> info replication
    # Replication
    role:master
    connected_slaves:2
    slave0:ip=192.168.10.2,port=6379,state=online,offset=700,lag=0
    slave1:ip=192.168.10.3,port=6379,state=online,offset=700,lag=0
    master_replid:b80a4720c0001efb62940f5ad6abaf9cdaf7a813
    master_replid2:0000000000000000000000000000000000000000
    master_repl_offset:700
    second_repl_offset:-1
    repl_backlog_active:1
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:1
    repl_backlog_histlen:700
    
    192.168.10.2:6379> info replication
    # Replication
    role:slave
    master_host:192.168.10.1
    master_port:6379
    master_link_status:up
    master_last_io_seconds_ago:3
    master_sync_in_progress:0
    slave_repl_offset:854
    slave_priority:100
    slave_read_only:1
    connected_slaves:0
    master_replid:b80a4720c0001efb62940f5ad6abaf9cdaf7a813
    master_replid2:0000000000000000000000000000000000000000
    master_repl_offset:854
    second_repl_offset:-1
    repl_backlog_active:1
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:57
    repl_backlog_histlen:798
    
    192.168.10.3:6379> info replication
    # Replication
    role:slave
    master_host:192.168.10.1
    master_port:6379
    master_link_status:up
    master_last_io_seconds_ago:6
    master_sync_in_progress:0
    slave_repl_offset:854
    slave_priority:100
    slave_read_only:1
    connected_slaves:0
    master_replid:b80a4720c0001efb62940f5ad6abaf9cdaf7a813
    master_replid2:0000000000000000000000000000000000000000
    master_repl_offset:854
    second_repl_offset:-1
    repl_backlog_active:1
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:1
    repl_backlog_histlen:854
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57

    2. 参考文档

    https://redis.io/docs/management/replication/

  • 相关阅读:
    vcruntime140.dll缺失如何修复,vcruntime140.dll重新安装方法分享
    测试自动化中遵循的最佳实践
    linux下netlink的使用
    速盾cdn:cdn可以设置页面压缩吗?
    趣测系统搭建APP源码开发,娱乐丰富生活的选择!
    三丁基-巯基膦烷「tBuBrettPhos Pd(allyl)」OTf),1798782-17-8
    [附源码]计算机毕业设计基于SpringBoot的校园报修平台
    ModbusCRC16校验 示例代码
    镜像底层原理详解和基于Docker file创建镜像
    CUDA环境配置问题
  • 原文地址:https://blog.csdn.net/wangshuai6707/article/details/134503207