0. 前言
在Redis运维篇的第5.6章节中,将讨论Redis服务器的主从复制配置。在开始之前,让先来了解一下主从复制的概念和作用。
主从复制是指将一个Redis服务器的数据复制到其他Redis服务器的过程。在主从复制中,一个Redis服务器充当主服务器,而其他Redis服务器则充当从服务器。主服务器负责接收写操作,并将这些写操作传播到所有从服务器。从服务器则负责接收主服务器传播的写操作,并将这些写操作应用到自己的数据集中。
主从复制的主要作用是提高系统的可用性和性能。通过将数据复制到多个服务器上,即使主服务器发生故障,从服务器仍然可以提供读取服务,从而保证系统的可用性。此外,主从复制还可以将读操作分摊到多个服务器上,从而提高整个系统的读取性能。
在接下来的内容中,将详细讲解如何进行Redis服务器的主从复制配置和示例。
1. 配置方式 步骤1: 准备硬件和网络确保你的主机和从机的硬件资源符合运行Redis的要求。主服务器和从服务器应该通过可靠的网络连接,确保两者之间的通信稳定且延迟较低。
这里我使用3台虚拟机来搭建一下,主服务器的ip为192.168.10.1,两个从服务器的ip分别为192.168.10.2和192.168.10.2,端口号都为6379,具体的配置如下
步骤2: 安装Redis根据你的操作系统,从Redis官网下载安装包或使用相应的包管理器进行安装。
对于基于RPM的系统(如CentOS):
对于基于Debian的系统(如Ubuntu):
sudo apt-get update sudo apt-get install redis-server对于macOS(使用Homebrew):
brew install redis我的是Centos 7
192.168.10.1
192.168.10.2
192.168.10.3
分别安装完redis 并开放防火墙6379端口号
有两种方式,看你的操作系统的支持。
分别修改三台服务器的配置如下
daemonize yes # 绑定的主机地址,这里注释掉,开放ip连接 #bind 127.0.0.1 logfile"redis.log"requirepass 123456 步骤3: 配置主服务器的Redis编辑Redis配置文件(通常位于/etc/redis/redis.conf或/usr/local/etc/redis.conf),进行以下设置:
# 启用AOF持久化模式,以保证数据安全 appendonly yes # 如果需要密码认证,取消以下注释并设置密码 requirepass 123456重启Redis服务来应用新的配置:
sudo service redis-server restart或在系统中使用对应的命令,如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重启从服务器的Redis服务以应用新的配置。
步骤5: 测试复制功能在主服务器上执行Redis命令,添加一些数据:
redis-cli -a 123456 set key1"value1"然后,在从服务器上执行:
redis-cli -a 123456 get key1如果返回的是"value1",表示复制功能正常。
步骤6: 监控复制状态使用以下命令在主服务器和从服务器上查看复制的状态和信息:
redis-cli -a 123456 info replication会看到类似于以下的信息:
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 2. 参考文档https://redis.io/docs/management/replication/