Redis高可用
Redis 高可用是指 Redis 系统在发生故障时,能够保证系统尽快恢复,从而减少系统不可用的时间。Redis 高可用可以通过以下几种方式来实现:
- 数据持久化:数据持久化是指将 Redis 中的数据持久化到磁盘上,这样即使 Redis 服务器宕机,数据也不会丢失。Redis 支持多种数据持久化方式,包括 RDB、AOF 等。
- 主从复制:主从复制是指将主节点的数据复制到从节点上,这样当主节点发生故障时,可以由从节点接管服务。Redis 主从复制采用异步复制方式,从节点可以比主节点落后一定数量的命令,但这不会影响系统的可用性。
- 哨兵模式:哨兵模式是专门为 Redis 设计的一种高可用模式。哨兵模式通过监控 Redis 节点的状态,来自动实现主从切换。哨兵模式可以实现主从切换的自动化,从而减少人工干预。
- 集群模式:集群模式是指将多个 Redis 节点组合成一个整体,从而提供更高的可用性。集群模式可以实现数据分片和负载均衡,从而提高系统的性能和可用性。
Redis 高可用模式的选择需要根据实际的业务需求来决定。对于简单的业务场景,可以采用数据持久化和主从复制来实现高可用。对于复杂的业务场景,可以采用哨兵模式或集群模式来实现高可用。
今天我们实战配置一下Redis7主从复制+哨兵模式
准备环境
这里我们准备三台2c4g的虚拟机做一主两从
| 主机名 | IP地址 | 操作系统 | 数据库版本 | 备注 |
|---|---|---|---|---|
| redis-master | 192.168.17.43 | Rocky Linux 9.3 | Redis 7.2.3 | 主节点(读写) |
| redis-slave1 | 192.168.17.44 | Rocky Linux 9.3 | Redis 7.2.3 | 从节点(读) |
| redis-slave2 | 192.168.17.45 | Rocky Linux 9.3 | Redis 7.2.3 | 从节点(读) |

源码安装
三台虚拟机做相同的操作
操作系统准备
#查看操作系统版本
cat /etc/redhat-release
#关闭防火墙
systemctl stop firewalld.service
systemctl disable firewalld.service
#关闭selinux
setenforce 0
sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config
#安装操作系统依赖包
yum -y install gcc gcc-c++ make cmake
#设置sysctl参数
cat >> /etc/sysctl.conf << "EOF"
vm.overcommit_memory = 1
net.core.somaxconn = 2048
EOF
sysctl -p
#调整文件打开限制
ulimit -n 10032
cat >> /etc/security/limits.conf << "EOF"
* soft nofile 10032
* hard nofile 10032
EOF
#配置大内存页面
echo never > /sys/kernel/mm/transparent_hugepage/enabled
cat >> /etc/rc.local << "EOF"
if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
echo never > /sys/kernel/mm/transparent_hugepage/enabled
fi
EOF
#关闭swap
swapoff -a
操作如下:
[root@redis-master ~]# cat /etc/redhat-release
Rocky Linux release 9.3 (Blue Onyx)
[root@redis-master ~]# systemctl stop firewalld.service
[root@redis-master ~]# systemctl disable firewalld.service
[root@redis-master ~]# setenforce 0
setenforce: SELinux is disabled
[root@redis-master ~]# sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config
[root@redis-master ~]# yum -y install gcc gcc-c++ make cmake
Last metadata expiration check: 0:00:10 ago on Thu 21 Dec 2023 04:24:06 PM CST.
Dependencies resolved.
========================================================================================================================================
Package Architecture Version Repository Size
========================================================================================================================================
Installing:
cmake x86_64 3.20.2-9.el9_3 appstream 6.7 M
gcc x86_64 11.4.1-2.1.el9 appstream 32 M
gcc-c++ x86_64 11.4.1-2.1.el9 appstream 13 M
make x86_64 1:4.3-7.el9 baseos 530 k
Installing dependencies:
cmake-data noarch 3.20.2-9.el9_3 appstream 1.5 M
cmake-filesystem x86_64 3.20.2-9.el9_3 appstream 11 k
cmake-rpm-macros noarch 3.20.2-9.el9_3 appstream 9.9 k
glibc-devel x86_64 2.34-83.el9.7 appstream 50 k
glibc-headers x86_64 2.34-83.el9.7 appstream 450 k
kernel-headers x86_64 5.14.0-362.13.1.el9_3 appstream 6.4 M
libstdc++-devel x86_64 11.4.1-2.1.el9 appstream 2.2 M
libxcrypt-devel x86_64 4.4.18-3.el9 appstream 28 k
Transaction Summary
========================================================================================================================================
Install 12 Packages
Total download size: 63 M
Installed size: 173 M
Downloading Packages:
(1/12): cmake-rpm-macros-3.20.2-9.el9_3.noarch.rpm 335 kB/s | 9.9 kB 00:00
(2/12): cmake-filesystem-3.20.2-9.el9_3.x86_64.rpm 331 kB/s | 11 kB 00:00
(3/12): cmake-data-3.20.2-9.el9_3.noarch.rpm 11 MB/s | 1.5 MB 00:00
(4/12): libxcrypt-devel-4.4.18-3.el9.x86_64.rpm 1.4 MB/s | 28 kB 00:00
(5/12): make-4.3-7.el9.x86_64.rpm 1.5 MB/s | 530 kB 00:00
(6/12): cmake-3.20.2-9.el9_3.x86_64.rpm 21 MB/s | 6.7 MB 00:00
(7/12): kernel-headers-5.14.0-362.13.1.el9_3.x86_64.rpm 11 MB/s | 6.4 MB 00:00
(8/12): libstdc++-devel-11.4.1-2.1.el9.x86_64.rpm 3.5 MB/s | 2.2 MB 00:00
(9/12): gcc-c++-11.4.1-2.1.el9.x86_64.rpm 19 MB/s | 13 MB 00:00
(10/12): glibc-devel-2.34-83.el9.7.x86_64.rpm 2.4 MB/s | 50 kB 00:00
(11/12): glibc-headers-2.34-83.el9.7.x86_64.rpm 4.4 MB/s | 450 kB 00:00
(12/12): gcc-11.4.1-2.1.el9.x86_64.rpm 28 MB/s | 32 MB 00:01
----------------------------------------------------------------------------------------------------------------------------------------
Total 16 MB/s | 63 MB 00:03
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : cmake-filesystem-3.20.2-9.el9_3.x86_64 1/12
Installing : cmake-rpm-macros-3.20.2-9.el9_3.noarch 2/12
Installing : make-1:4.3-7.el9.x86_64 3/12
Installing : cmake-data-3.20.2-9.el9_3.noarch 4/12
Installing : cmake-3.20.2-9.el9_3.x86_64 5/12
Installing : glibc-headers-2.34-83.el9.7.x86_64 6/12
Installing : libstdc++-devel-11.4.1-2.1.el9.x86_64 7/12
Installing : kernel-headers-5.14.0-362.13.1.el9_3.x86_64 8/12
Installing : glibc-devel-2.34-83.el9.7.x86_64 9/12
Installing : libxcrypt-devel-4.4.18-3.el9.x86_64 10/12
Installing : gcc-11.4.1-2.1.el9.x86_64 11/12
Installing : gcc-c++-11.4.1-2.1.el9.x86_64 12/12
Running scriptlet: gcc-c++-11.4.1-2.1.el9.x86_64 12/12
Verifying : make-1:4.3-7.el9.x86_64 1/12
Verifying : cmake-rpm-macros-3.20.2-9.el9_3.noarch 2/12
Verifying : cmake-filesystem-3.20.2-9.el9_3.x86_64 3/12
Verifying : cmake-data-3.20.2-9.el9_3.noarch 4/12
Verifying : cmake-3.20.2-9.el9_3.x86_64 5/12
Verifying : libxcrypt-devel-4.4.18-3.el9.x86_64 6/12
Verifying : kernel-headers-5.14.0-362.13.1.el9_3.x86_64 7/12
Verifying : libstdc++-devel-11.4.1-2.1.el9.x86_64 8/12
Verifying : gcc-c++-11.4.1-2.1.el9.x86_64 9/12
Verifying : gcc-11.4.1-2.1.el9.x86_64 10/12
Verifying : glibc-headers-2.34-83.el9.7.x86_64 11/12
Verifying : glibc-devel-2.34-83.el9.7.x86_64 12/12
Installed:
cmake-3.20.2-9.el9_3.x86_64 cmake-data-3.20.2-9.el9_3.noarch cmake-filesystem-3.20.2-9.el9_3.x86_64
cmake-rpm-macros-3.20.2-9.el9_3.noarch gcc-11.4.1-2.1.el9.x86_64 gcc-c++-11.4.1-2.1.el9.x86_64
glibc-devel-2.34-83.el9.7.x86_64 glibc-headers-2.34-83.el9.7.x86_64 kernel-headers-5.14.0-362.13.1.el9_3.x86_64
libstdc++-devel-11.4.1-2.1.el9.x86_64 libxcrypt-devel-4.4.18-3.el9.x86_64 make-1:4.3-7.el9.x86_64
Complete!
[root@redis-master ~]# cat >> /etc/sysctl.conf << "EOF"
vm.overcommit_memory = 1
net.core.somaxconn = 2048
EOF
sysctl -p
vm.overcommit_memory = 1
net.core.somaxconn = 2048
[root@redis-master ~]# ulimit -n 10032
cat >> /etc/security/limits.conf << "EOF"
* soft nofile 10032
* hard nofile 10032
EOF
[root@redis-master ~]# echo never > /sys/kernel/mm/transparent_hugepage/enabled
cat >> /etc/rc.local << "EOF"
if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
echo never > /sys/kernel/mm/transparent_hugepage/enabled
fi
EOF
[root@redis-master ~]#
下载解压安装
#创建安装目录
mkdir -p /usr/local/redis/{bin,conf,data,run,log,tls}
#下载源码包
wget https://download.redis.io/redis-stable.tar.gz
#解压
tar -xzvf redis-stable.tar.gz
cd redis-stable
#安装
make
make install PREFIX=/usr/local/redis
#环境变量设置
cat >> ~/.bash_profile << "EOF"
export PATH=/usr/local/redis/bin:$PATH
EOF
source ~/.bash_profile
操作如下:
[root@redis-master ~]# mkdir -p /usr/local/redis/{bin,conf,data,run,log,tls}
[root@redis-master ~]# wget https://download.redis.io/redis-stable.tar.gz
--2023-12-21 16:27:14-- https://download.redis.io/redis-stable.tar.gz
Resolving download.redis.io (download.redis.io)... 45.60.125.1
Connecting to download.redis.io (download.redis.io)|45.60.125.1|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 3477620 (3.3M) [application/octet-stream]
Saving to: ‘redis-stable.tar.gz’
redis-stable.tar.gz 100%[=============================================================>] 3.32M 8.26MB/s in 0.4s
2023-12-21 16:27:15 (8.26 MB/s) - ‘redis-stable.tar.gz’ saved [3477620/3477620]
[root@redis-master ~]# tar -xzvf redis-stable.tar.gz
redis-stable/
redis-stable/src/
redis-stable/src/geohash.h
redis-stable/src/redis-trib.rb
redis-stable/src/t_string.c
。。。略
redis-stable/.codespell/
redis-stable/.codespell/.codespellrc
redis-stable/.codespell/wordlist.txt
redis-stable/.codespell/requirements.txt
redis-stable/sentinel.conf
redis-stable/runtest-moduleapi
[root@redis-master ~]# cd redis-stable
[root@redis-master redis-stable]# make
cd src && make all
make[1]: Entering directory '/root/redis-stable/src'
CC Makefile.dep
rm -rf redis-server redis-sentinel redis-cli redis-benchmark redis-check-rdb redis-check-aof *.o *.gcda *.gcno *.gcov redis.info lcov-ht ml Makefile.dep *.so
。。。略
CC logreqres.o
LINK redis-server
lto-wrapper: warning: using serial compilation of 30 LTRANS jobs
INSTALL redis-sentinel
CC redis-cli.o
CC redisassert.o
CC cli_common.o
CC cli_commands.o
LINK redis-cli
lto-wrapper: warning: using serial compilation of 4 LTRANS jobs
CC redis-benchmark.o
LINK redis-benchmark
lto-wrapper: warning: using serial compilation of 2 LTRANS jobs
INSTALL redis-check-rdb
INSTALL redis-check-aof
Hint: It's a good idea to run 'make test' ;)
make[1]: Leaving directory '/root/redis-stable/src'
[root@redis-master redis-stable]# make install PREFIX=/usr/local/redis
cd src && make install
make[1]: Entering directory '/root/redis-stable/src'
CC Makefile.dep
Hint: It's a good idea to run 'make test' ;)
INSTALL redis-server
INSTALL redis-benchmark
INSTALL redis-cli
make[1]: Leaving directory '/root/redis-stable/src'
[root@redis-master redis-stable]# cat >> ~/.bash_profile << "EOF"
export PATH=/usr/local/redis/bin:$PATH
EOF
[root@redis-master redis-stable]# source ~/.bash_profile
[root@redis-master redis-stable]#
主从配置
配置文件修改
3台虚拟机都要添加
#添加redis配置文件
cat > /usr/local/redis/conf/redis.conf << "EOF"
#主机IP
bind 0.0.0.0
#Redis 端口
port 6379
#保护模式设成no
protected-mode no
#进程文件
pidfile "/usr/local/redis/run/redis.pid"
#日志文件
logfile "/usr/local/redis/log/redis.log"
#守护模式
daemonize yes
#数据文件目录
dir "/usr/local/redis/data"
#非集群模式
cluster-enabled no
#设置AOF持久化
appendonly yes
appendfilename "appendonly.aof"
#设置验证密码
requirepass redis_123456
EOF
操作如下:
[root@redis-master redis-stable]# cat > /usr/local/redis/conf/redis.conf << "EOF"
#主机IP
bind 0.0.0.0
#Redis 端口
port 6379
#保护模式设成no
protected-mode no
#进程文件
pidfile "/usr/local/redis/run/redis.pid"
#日志文件
logfile "/usr/local/redis/log/redis.log"
#守护模式
daemonize yes
#数据文件目录
dir "/usr/local/redis/data"
#非集群模式
cluster-enabled no
#设置AOF持久化
appendonly yes
appendfilename "appendonly.aof"
#设置验证密码
requirepass redis_123456
EOF
[root@redis-master redis-stable]#
主节点启动Redis
在一台主节点上设置
#运行redis进程
redis-server /usr/local/redis/conf/redis.conf
#检查日志有没有报错
tail -200f /usr/local/redis/log/redis.log
#查看redis进程
ps -ef|grep redis
#查看redis目录树结构
tree /usr/local/redis
操作如下:
[root@redis-master redis-stable]# redis-server /usr/local/redis/conf/redis.conf
[root@redis-master redis-stable]# tail -200f /usr/local/redis/log/redis.log
37578:C 21 Dec 2023 16:35:20.286 * oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
37578:C 21 Dec 2023 16:35:20.286 * Redis version=7.2.3, bits=64, commit=00000000, modified=0, pid=37578, just started
37578:C 21 Dec 2023 16:35:20.286 * Configuration loaded
37578:M 21 Dec 2023 16:35:20.286 * monotonic clock: POSIX clock_gettime
37578:M 21 Dec 2023 16:35:20.287 * Running mode=standalone, port=6379.
37578:M 21 Dec 2023 16:35:20.287 * Server initialized
37578:M 21 Dec 2023 16:35:20.288 * Creating AOF base file appendonly.aof.1.base.rdb on server start
37578:M 21 Dec 2023 16:35:20.288 * Creating AOF incr file appendonly.aof.1.incr.aof on server start
37578:M 21 Dec 2023 16:35:20.288 * Ready to accept connections tcp
^C
[root@redis-master redis-stable]# ps -ef|grep redis
avahi 791 1 0 16:02 ? 00:00:00 avahi-daemon: running [redis-master.local]
root 37578 1 0 16:35 ? 00:00:00 redis-server 0.0.0.0:6379
root 37585 1649 0 16:35 pts/0 00:00:00 grep --color=auto redis
[root@redis-master redis-stable]# tree /usr/local/redis
/usr/local/redis
├── bin
│ ├── redis-benchmark
│ ├── redis-check-aof -> redis-server
│ ├── redis-check-rdb -> redis-server
│ ├── redis-cli
│ ├── redis-sentinel -> redis-server
│ └── redis-server
├── conf
│ └── redis.conf
├── data
│ └── appendonlydir
│ ├── appendonly.aof.1.base.rdb
│ ├── appendonly.aof.1.incr.aof
│ └── appendonly.aof.manifest
├── log
│ └── redis.log
├── run
│ └── redis.pid
└── tls
7 directories, 12 files
[root@redis-master redis-stable]#
从节点添加配置启动Redis
两台从节点都需要设置
#从节点添加配置参数,注意下面的IP是主节点
cat >> /usr/local/redis/conf/redis.conf << "EOF"
#设置主节点IP同步
replicaof 192.168.17.43 6379
#主节点密码验证
masterauth redis_123456
#设置从节点只读
slave-read-only yes
EOF
#运行redis进程
redis-server /usr/local/redis/conf/redis.conf
#检查日志有没有报错
tail -200f /usr/local/redis/log/redis.log
操作如下:
[root@redis-slave1 redis-stable]# cat >> /usr/local/redis/conf/redis.conf << "EOF"
#设置主节点IP同步
replicaof 192.168.17.43 6379
#主节点密码验证
masterauth redis_123456
#设置从节点只读
slave-read-only yes
EOF
[root@redis-slave1 redis-stable]# redis-server /usr/local/redis/conf/redis.conf
[root@redis-slave1 redis-stable]# tail -200f /usr/local/redis/log/redis.log
7822:C 21 Dec 2023 16:54:04.566 * oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
7822:C 21 Dec 2023 16:54:04.566 * Redis version=7.2.3, bits=64, commit=00000000, modified=0, pid=7822, just started
7822:C 21 Dec 2023 16:54:04.566 * Configuration loaded
7822:S 21 Dec 2023 16:54:04.566 * monotonic clock: POSIX clock_gettime
7822:S 21 Dec 2023 16:54:04.566 * Running mode=standalone, port=6379.
7822:S 21 Dec 2023 16:54:04.567 * Server initialized
7822:S 21 Dec 2023 16:54:04.567 * Reading RDB base file on AOF loading...
7822:S 21 Dec 2023 16:54:04.567 * Loading RDB produced by version 7.2.3
7822:S 21 Dec 2023 16:54:04.567 * RDB age 230 seconds
7822:S 21 Dec 2023 16:54:04.567 * RDB memory usage when created 0.84 Mb
7822:S 21 Dec 2023 16:54:04.567 * RDB is base AOF
7822:S 21 Dec 2023 16:54:04.567 * Done loading RDB, keys loaded: 0, keys expired: 0.
7822:S 21 Dec 2023 16:54:04.567 * DB loaded from base file appendonly.aof.2.base.rdb: 0.000 seconds
7822:S 21 Dec 2023 16:54:04.567 * DB loaded from append only file: 0.000 seconds
7822:S 21 Dec 2023 16:54:04.567 * Opening AOF incr file appendonly.aof.2.incr.aof on server start
7822:S 21 Dec 2023 16:54:04.567 * Ready to accept connections tcp
7822:S 21 Dec 2023 16:54:04.568 * Connecting to MASTER 192.168.17.43:6379
7822:S 21 Dec 2023 16:54:04.568 * MASTER <-> REPLICA sync started
7822:S 21 Dec 2023 16:54:04.569 * Non blocking connect for SYNC fired the event.
7822:S 21 Dec 2023 16:54:04.569 * Master replied to PING, replication can continue...
7822:S 21 Dec 2023 16:54:04.569 * Partial resynchronization not possible (no cached master)
7822:S 21 Dec 2023 16:54:09.702 * Full resync from master: d058cc4b508f4c410812c6db750c230ef6097f42:84
7822:S 21 Dec 2023 16:54:09.703 * MASTER <-> REPLICA sync: receiving streamed RDB from master with EOF to disk
7822:S 21 Dec 2023 16:54:09.703 * MASTER <-> REPLICA sync: Flushing old data
7822:S 21 Dec 2023 16:54:09.703 * MASTER <-> REPLICA sync: Loading DB in memory
7822:S 21 Dec 2023 16:54:09.705 * Loading RDB produced by version 7.2.3
7822:S 21 Dec 2023 16:54:09.705 * RDB age 0 seconds
7822:S 21 Dec 2023 16:54:09.705 * RDB memory usage when created 0.97 Mb
7822:S 21 Dec 2023 16:54:09.705 * Done loading RDB, keys loaded: 0, keys expired: 0.
7822:S 21 Dec 2023 16:54:09.705 * MASTER <-> REPLICA sync: Finished with success
7822:S 21 Dec 2023 16:54:09.705 * Creating AOF incr file temp-appendonly.aof.incr on background rewrite
7822:S 21 Dec 2023 16:54:09.705 * Background append only file rewriting started by pid 7841
7841:C 21 Dec 2023 16:54:09.706 * Successfully created the temporary AOF base file temp-rewriteaof-bg-7841.aof
7841:C 21 Dec 2023 16:54:09.706 * Fork CoW for AOF rewrite: current 0 MB, peak 0 MB, average 0 MB
7822:S 21 Dec 2023 16:54:09.766 * Background AOF rewrite terminated with success
7822:S 21 Dec 2023 16:54:09.766 * Successfully renamed the temporary AOF base file temp-rewriteaof-bg-7841.aof into appendonly.aof.3.base.rdb
7822:S 21 Dec 2023 16:54:09.766 * Successfully renamed the temporary AOF incr file temp-appendonly.aof.incr into appendonly.aof.3.incr.aof
7822:S 21 Dec 2023 16:54:09.767 * Removing the history file appendonly.aof.2.incr.aof in the background
7822:S 21 Dec 2023 16:54:09.767 * Removing the history file appendonly.aof.2.base.rdb in the background
7822:S 21 Dec 2023 16:54:09.767 * Background AOF rewrite finished successfully
^C
[root@redis-slave1 redis-stable]#
主从验证
用redis-cli客户端命令验证
#分别在主和从节点上输入info relication查询
#用redis-cli登录
redis-cli -p 6379
#本地验证
auth redis_123456
#查看主从状态
info replication
操作如下:
[root@redis-master ~]# redis-cli -p 6379
127.0.0.1:6379> auth redis_123456
OK
127.0.0.1:6379> info replication
# Replication
role:master
connected_slaves:2
slave0:ip=192.168.17.44,port=6379,state=online,offset=798,lag=1
slave1:ip=192.168.17.45,port=6379,state=online,offset=798,lag=1
master_failover_state:no-failover
master_replid:d058cc4b508f4c410812c6db750c230ef6097f42
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:798
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:798
127.0.0.1:6379>
[root@redis-slave1 redis-stable]# redis-cli -p 6379
127.0.0.1:6379> auth redis_123456
OK
127.0.0.1:6379> info replication
# Replication
role:slave
master_host:192.168.17.43
master_port:6379
master_link_status:up
master_last_io_seconds_ago:10
master_sync_in_progress:0
slave_read_repl_offset:882
slave_repl_offset:882
slave_priority:100
slave_read_only:1
replica_announced:1
connected_slaves:0
master_failover_state:no-failover
master_replid:d058cc4b508f4c410812c6db750c230ef6097f42
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:882
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:85
repl_backlog_histlen:798
127.0.0.1:6379>
[root@redis-slave2 redis-stable]# redis-cli -p 6379
127.0.0.1:6379> auth redis_123456
OK
127.0.0.1:6379> info replication
# Replication
role:slave
master_host:192.168.17.43
master_port:6379
master_link_status:up
master_last_io_seconds_ago:2
master_sync_in_progress:0
slave_read_repl_offset:952
slave_repl_offset:952
slave_priority:100
slave_read_only:1
replica_announced:1
connected_slaves:0
master_failover_state:no-failover
master_replid:d058cc4b508f4c410812c6db750c230ef6097f42
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:952
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:85
repl_backlog_histlen:868
127.0.0.1:6379>
主节点插入键值,从节点验证是否同步
#主节点写入
#用redis-cli登录
redis-cli -p 6379
#本地验证
auth redis_123456
set name "Zhangshan"
set age 28
#从节点查询
#用redis-cli登录
redis-cli -p 6379
#本地验证
auth redis_123456
get name
get age
操作如下:
[root@redis-master ~]# redis-cli -p 6379
127.0.0.1:6379> auth redis_123456
OK
127.0.0.1:6379> set name "Zhangshan"
OK
127.0.0.1:6379> set age 28
OK
127.0.0.1:6379>
[root@redis-slave1 redis-stable]# redis-cli -p 6379
127.0.0.1:6379> auth redis_123456
OK
127.0.0.1:6379> get name
"Zhangshan"
127.0.0.1:6379> get age
"28"
127.0.0.1:6379>
[root@redis-slave2 redis-stable]# redis-cli -p 6379
127.0.0.1:6379> auth redis_123456
OK
127.0.0.1:6379> get name
"Zhangshan"
127.0.0.1:6379> get age
"28"
127.0.0.1:6379>
哨兵模式
注意三个节点都需要配置
配置sentinel.conf文件
#配置sentinel.conf文件
cat >> /usr/local/redis/conf/sentinel.conf << "EOF"
#设置主机IP
bind 0.0.0.0
#设置端口
port 26379
#守护模式
daemonize yes
#进程文件
pidfile "/usr/local/redis/run/sentinel.pid"
#日志文件
logfile "/usr/local/redis/log/sentinel.log"
#数据文件目录
dir "/usr/local/redis/data"
#哨兵监听的master数据库,redis-master是为主数据库起的名称,后面是master的ip和端口
#客观下线的判断节点数
sentinel monitor redis-master 192.168.17.43 6379 2
#配置master的登陆密码,redis-master是为主数据库起的名称
sentinel auth-pass redis-master redis_123456
#30秒内master无响应则认为master挂掉
sentinel down-after-milliseconds redis-master 30000
#限制从服务器向新主发起复制的并发数
sentinel parallel-syncs redis-master 1
#故障转移超时时间,指在该时间内如果故障转移没有成功,则会再发起一次故障转移
sentinel failover-timeout redis-master 180000
EOF
操作如下:
[root@redis-master ~]# cat >> /usr/local/redis/conf/sentinel.conf << "EOF"
#设置主机IP
bind 0.0.0.0
#设置端口
port 26379
#守护模式
daemonize yes
#进程文件
pidfile "/usr/local/redis/run/sentinel.pid"
#日志文件
logfile "/usr/local/redis/log/sentinel.log"
#数据文件目录
dir "/usr/local/redis/data"
#哨兵监听的master数据库,redis-master是为主数据库起的名称,后面是master的ip和端口
#客观下线的判断节点数
sentinel monitor redis-master 192.168.17.43 6379 2
#配置master的登陆密码,redis-master是为主数据库起的名称
sentinel auth-pass redis-master redis_123456
#30秒内master无响应则认为master挂掉
sentinel down-after-milliseconds redis-master 30000
#限制从服务器向新主发起复制的并发数
sentinel parallel-syncs redis-master 1
#故障转移超时时间,指在该时间内如果故障转移没有成功,则会再发起一次故障转移
sentinel failover-timeout redis-master 180000
EOF
[root@redis-master ~]#
[root@redis-slave1 ~]# cat >> /usr/local/redis/conf/sentinel.conf << "EOF"
#设置主机IP
bind 0.0.0.0
#设置端口
port 26379
#守护模式
daemonize yes
#进程文件
pidfile "/usr/local/redis/run/sentinel.pid"
#日志文件
logfile "/usr/local/redis/log/sentinel.log"
#数据文件目录
dir "/usr/local/redis/data"
#哨兵监听的master数据库,redis-master是为主数据库起的名称,后面是master的ip和端口
#客观下线的判断节点数
sentinel monitor redis-master 192.168.17.43 6379 2
#配置master的登陆密码,redis-master是为主数据库起的名称
sentinel auth-pass redis-master redis_123456
#30秒内master无响应则认为master挂掉
sentinel down-after-milliseconds redis-master 30000
#限制从服务器向新主发起复制的并发数
sentinel parallel-syncs redis-master 1
#故障转移超时时间,指在该时间内如果故障转移没有成功,则会再发起一次故障转移
sentinel failover-timeout redis-master 180000
EOF
[root@redis-slave1 ~]#
[root@redis-slave2 ~]# cat >> /usr/local/redis/conf/sentinel.conf << "EOF"
#设置主机IP
bind 0.0.0.0
#设置端口
port 26379
#守护模式
daemonize yes
#进程文件
pidfile "/usr/local/redis/run/sentinel.pid"
#日志文件
logfile "/usr/local/redis/log/sentinel.log"
#数据文件目录
dir "/usr/local/redis/data"
#哨兵监听的master数据库,redis-master是为主数据库起的名称,后面是master的ip和端口
#客观下线的判断节点数
sentinel monitor redis-master 192.168.17.43 6379 2
#配置master的登陆密码,redis-master是为主数据库起的名称
sentinel auth-pass redis-master redis_123456
#30秒内master无响应则认为master挂掉
sentinel down-after-milliseconds redis-master 30000
#限制从服务器向新主发起复制的并发数
sentinel parallel-syncs redis-master 1
#故障转移超时时间,指在该时间内如果故障转移没有成功,则会再发起一次故障转移
sentinel failover-timeout redis-master 180000
EOF
[root@redis-slave2 ~]#
启动哨兵服务
#先主节点开始启动,然从节点
redis-sentinel /usr/local/redis/conf/sentinel.conf
ps -ef|grep sentinel
#启动后检查
redis-cli -p 26379
#本地验证
auth redis_123456
#查看哨兵状态
info sentinel
操作如下:
[root@redis-master ~]# redis-sentinel /usr/local/redis/conf/sentinel.conf
[root@redis-master ~]# tail -200f /usr/local/redis/log/sentinel.log
37806:X 21 Dec 2023 19:42:30.740 * oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
37806:X 21 Dec 2023 19:42:30.740 * Redis version=7.2.3, bits=64, commit=00000000, modified=0, pid=37806, just started
37806:X 21 Dec 2023 19:42:30.740 * Configuration loaded
37806:X 21 Dec 2023 19:42:30.740 * monotonic clock: POSIX clock_gettime
37806:X 21 Dec 2023 19:42:30.740 * Running mode=sentinel, port=26379.
37806:X 21 Dec 2023 19:42:30.767 * Sentinel new configuration saved on disk
37806:X 21 Dec 2023 19:42:30.767 * Sentinel ID is c5ec7f0684aa45f4b477246d339d47a97a90cfd6
37806:X 21 Dec 2023 19:42:30.767 # +monitor master redis-master 192.168.17.43 6379 quorum 2
37806:X 21 Dec 2023 19:42:30.768 * +slave slave 192.168.17.44:6379 192.168.17.44 6379 @ redis-master 192.168.17.43 6379
37806:X 21 Dec 2023 19:42:30.768 * Sentinel new configuration saved on disk
37806:X 21 Dec 2023 19:42:30.768 * +slave slave 192.168.17.45:6379 192.168.17.45 6379 @ redis-master 192.168.17.43 6379
37806:X 21 Dec 2023 19:42:30.769 * Sentinel new configuration saved on disk
^C
[root@redis-master ~]# ps -ef|grep sentinel
root 37806 1 0 19:42 ? 00:00:00 redis-sentinel 0.0.0.0:26379 [sentinel]
root 37822 37603 0 19:43 pts/1 00:00:00 grep --color=auto sentinel
[root@redis-master ~]# redis-cli -p 26379
127.0.0.1:26379> info sentinel
# Sentinel
sentinel_masters:1
sentinel_tilt:0
sentinel_tilt_since_seconds:-1
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
sentinel_simulate_failure_flags:0
master0:name=redis-master,status=ok,address=192.168.17.43:6379,slaves=2,sentinels=3
127.0.0.1:26379>
[root@redis-slave1 ~]# redis-sentinel /usr/local/redis/conf/sentinel.conf
[root@redis-slave1 ~]# tail -200f /usr/local/redis/log/sentinel.log
7986:X 21 Dec 2023 19:45:58.676 * oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
7986:X 21 Dec 2023 19:45:58.676 * Redis version=7.2.3, bits=64, commit=00000000, modified=0, pid=7986, just started
7986:X 21 Dec 2023 19:45:58.676 * Configuration loaded
7986:X 21 Dec 2023 19:45:58.676 * monotonic clock: POSIX clock_gettime
7986:X 21 Dec 2023 19:45:58.677 * Running mode=sentinel, port=26379.
7986:X 21 Dec 2023 19:45:58.703 * Sentinel new configuration saved on disk
7986:X 21 Dec 2023 19:45:58.703 * Sentinel ID is 881f87d04abf73f23b61a798c927a8871fa3eea0
7986:X 21 Dec 2023 19:45:58.703 # +monitor master redis-master 192.168.17.43 6379 quorum 2
7986:X 21 Dec 2023 19:45:58.704 * +slave slave 192.168.17.44:6379 192.168.17.44 6379 @ redis-master 192.168.17.43 6379
7986:X 21 Dec 2023 19:45:58.705 * Sentinel new configuration saved on disk
7986:X 21 Dec 2023 19:45:58.705 * +slave slave 192.168.17.45:6379 192.168.17.45 6379 @ redis-master 192.168.17.43 6379
7986:X 21 Dec 2023 19:45:58.705 * Sentinel new configuration saved on disk
7986:X 21 Dec 2023 19:46:00.332 * +sentinel sentinel c5ec7f0684aa45f4b477246d339d47a97a90cfd6 192.168.17.43 26379 @ redis-master 192.168.17.43 6379
7986:X 21 Dec 2023 19:46:00.333 * Sentinel new configuration saved on disk
7986:X 21 Dec 2023 19:46:15.299 * +sentinel sentinel 0a858415f3ee9431ceb732bc5e8a5d0e65ecb48a 192.168.17.45 26379 @ redis-master 192.168.17.43 6379
7986:X 21 Dec 2023 19:46:15.300 * Sentinel new configuration saved on disk
^C
[root@redis-slave1 ~]# ps -ef|grep sentinel
root 7986 1 0 19:45 ? 00:00:00 redis-sentinel 0.0.0.0:26379 [sentinel]
root 7993 1645 0 19:46 pts/0 00:00:00 grep --color=auto sentinel
[root@redis-slave1 ~]# redis-cli -p 26379
127.0.0.1:26379> info sentinel
# Sentinel
sentinel_masters:1
sentinel_tilt:0
sentinel_tilt_since_seconds:-1
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
sentinel_simulate_failure_flags:0
master0:name=redis-master,status=ok,address=192.168.17.43:6379,slaves=2,sentinels=3
127.0.0.1:26379>
[root@redis-slave2 ~]# redis-sentinel /usr/local/redis/conf/sentinel.conf
[root@redis-slave2 ~]# tail -200f /usr/local/redis/log/sentinel.log
7854:X 21 Dec 2023 19:46:13.284 * oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
7854:X 21 Dec 2023 19:46:13.284 * Redis version=7.2.3, bits=64, commit=00000000, modified=0, pid=7854, just started
7854:X 21 Dec 2023 19:46:13.284 * Configuration loaded
7854:X 21 Dec 2023 19:46:13.284 * monotonic clock: POSIX clock_gettime
7854:X 21 Dec 2023 19:46:13.285 * Running mode=sentinel, port=26379.
7854:X 21 Dec 2023 19:46:13.311 * Sentinel new configuration saved on disk
7854:X 21 Dec 2023 19:46:13.311 * Sentinel ID is 0a858415f3ee9431ceb732bc5e8a5d0e65ecb48a
7854:X 21 Dec 2023 19:46:13.311 # +monitor master redis-master 192.168.17.43 6379 quorum 2
7854:X 21 Dec 2023 19:46:13.312 * +slave slave 192.168.17.44:6379 192.168.17.44 6379 @ redis-master 192.168.17.43 6379
7854:X 21 Dec 2023 19:46:13.313 * Sentinel new configuration saved on disk
7854:X 21 Dec 2023 19:46:13.313 * +slave slave 192.168.17.45:6379 192.168.17.45 6379 @ redis-master 192.168.17.43 6379
7854:X 21 Dec 2023 19:46:13.313 * Sentinel new configuration saved on disk
7854:X 21 Dec 2023 19:46:14.633 * +sentinel sentinel c5ec7f0684aa45f4b477246d339d47a97a90cfd6 192.168.17.43 26379 @ redis-master 192.168.17.43 6379
7854:X 21 Dec 2023 19:46:14.634 * Sentinel new configuration saved on disk
7854:X 21 Dec 2023 19:46:14.855 * +sentinel sentinel 881f87d04abf73f23b61a798c927a8871fa3eea0 192.168.17.44 26379 @ redis-master 192.168.17.43 6379
7854:X 21 Dec 2023 19:46:14.856 * Sentinel new configuration saved on disk
^C
[root@redis-slave2 ~]# ps -ef|grep sentinel
root 7854 1 0 19:46 ? 00:00:00 redis-sentinel 0.0.0.0:26379 [sentinel]
root 7861 1640 0 19:46 pts/0 00:00:00 grep --color=auto sentinel
[root@redis-slave2 ~]# redis-cli -p 26379
127.0.0.1:26379> info sentinel
# Sentinel
sentinel_masters:1
sentinel_tilt:0
sentinel_tilt_since_seconds:-1
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
sentinel_simulate_failure_flags:0
master0:name=redis-master,status=ok,address=192.168.17.43:6379,slaves=2,sentinels=3
127.0.0.1:26379>
主从切换

停主库自动切换
模拟主库关闭的情况进行切换
#在主库192.168.17.43用redis-cli登录
redis-cli -p 6379
#本地验证
auth redis_123456
#在主库执行关闭
shutdown
#在主库观察sentinel.log切换日志,通过日志我们可以发现主节点已经变成了192.168.17.45
tail -200f /usr/local/redis/log/sentinel.log
#在从库192.168.17.45验证
redis-cli -p 6379
#本地验证
auth redis_123456
#查看主从状态
info replication
#登录
redis-cli -p 26379
#查看哨兵状态
info sentinel
操作如下:
[root@redis-master ~]# redis-cli
127.0.0.1:6379> auth redis_123456
OK
127.0.0.1:6379> shutdown
not connected> exit
[root@redis-master ~]# tail -200f /usr/local/redis/log/sentinel.log
37806:X 21 Dec 2023 19:42:30.740 * oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
37806:X 21 Dec 2023 19:42:30.740 * Redis version=7.2.3, bits=64, commit=00000000, modified=0, pid=37806, just started
37806:X 21 Dec 2023 19:42:30.740 * Configuration loaded
37806:X 21 Dec 2023 19:42:30.740 * monotonic clock: POSIX clock_gettime
37806:X 21 Dec 2023 19:42:30.740 * Running mode=sentinel, port=26379.
37806:X 21 Dec 2023 19:42:30.767 * Sentinel new configuration saved on disk
37806:X 21 Dec 2023 19:42:30.767 * Sentinel ID is c5ec7f0684aa45f4b477246d339d47a97a90cfd6
37806:X 21 Dec 2023 19:42:30.767 # +monitor master redis-master 192.168.17.43 6379 quorum 2
37806:X 21 Dec 2023 19:42:30.768 * +slave slave 192.168.17.44:6379 192.168.17.44 6379 @ redis-master 192.168.17.43 6379
37806:X 21 Dec 2023 19:42:30.768 * Sentinel new configuration saved on disk
37806:X 21 Dec 2023 19:42:30.768 * +slave slave 192.168.17.45:6379 192.168.17.45 6379 @ redis-master 192.168.17.43 6379
37806:X 21 Dec 2023 19:42:30.769 * Sentinel new configuration saved on disk
37806:X 21 Dec 2023 19:46:00.714 * +sentinel sentinel 881f87d04abf73f23b61a798c927a8871fa3eea0 192.168.17.44 26379 @ redis-master 192.168.17.43 6379
37806:X 21 Dec 2023 19:46:00.715 * Sentinel new configuration saved on disk
37806:X 21 Dec 2023 19:46:15.304 * +sentinel sentinel 0a858415f3ee9431ceb732bc5e8a5d0e65ecb48a 192.168.17.45 26379 @ redis-master 192.168.17.43 6379
37806:X 21 Dec 2023 19:46:15.305 * Sentinel new configuration saved on disk
37806:X 21 Dec 2023 20:17:02.725 # +sdown master redis-master 192.168.17.43 6379
37806:X 21 Dec 2023 20:17:02.802 # +odown master redis-master 192.168.17.43 6379 #quorum 2/2
37806:X 21 Dec 2023 20:17:02.802 # +new-epoch 1
37806:X 21 Dec 2023 20:17:02.802 # +try-failover master redis-master 192.168.17.43 6379
37806:X 21 Dec 2023 20:17:02.803 * Sentinel new configuration saved on disk
37806:X 21 Dec 2023 20:17:02.803 # +vote-for-leader c5ec7f0684aa45f4b477246d339d47a97a90cfd6 1
37806:X 21 Dec 2023 20:17:02.804 * 0a858415f3ee9431ceb732bc5e8a5d0e65ecb48a voted for c5ec7f0684aa45f4b477246d339d47a97a90cfd6 1
37806:X 21 Dec 2023 20:17:02.804 * 881f87d04abf73f23b61a798c927a8871fa3eea0 voted for c5ec7f0684aa45f4b477246d339d47a97a90cfd6 1
37806:X 21 Dec 2023 20:17:02.887 # +elected-leader master redis-master 192.168.17.43 6379
37806:X 21 Dec 2023 20:17:02.887 # +failover-state-select-slave master redis-master 192.168.17.43 6379
37806:X 21 Dec 2023 20:17:02.979 # +selected-slave slave 192.168.17.45:6379 192.168.17.45 6379 @ redis-master 192.168.17.43 6379
37806:X 21 Dec 2023 20:17:02.979 * +failover-state-send-slaveof-noone slave 192.168.17.45:6379 192.168.17.45 6379 @ redis-master 192.168.17.43 6379
37806:X 21 Dec 2023 20:17:03.058 * +failover-state-wait-promotion slave 192.168.17.45:6379 192.168.17.45 6379 @ redis-master 192.168.17.43 6379
37806:X 21 Dec 2023 20:17:03.405 * Sentinel new configuration saved on disk
37806:X 21 Dec 2023 20:17:03.405 # +promoted-slave slave 192.168.17.45:6379 192.168.17.45 6379 @ redis-master 192.168.17.43 6379
37806:X 21 Dec 2023 20:17:03.405 # +failover-state-reconf-slaves master redis-master 192.168.17.43 6379
37806:X 21 Dec 2023 20:17:03.478 * +slave-reconf-sent slave 192.168.17.44:6379 192.168.17.44 6379 @ redis-master 192.168.17.43 6379
37806:X 21 Dec 2023 20:17:03.894 # -odown master redis-master 192.168.17.43 6379
37806:X 21 Dec 2023 20:17:04.419 * +slave-reconf-inprog slave 192.168.17.44:6379 192.168.17.44 6379 @ redis-master 192.168.17.43 6379
37806:X 21 Dec 2023 20:17:04.419 * +slave-reconf-done slave 192.168.17.44:6379 192.168.17.44 6379 @ redis-master 192.168.17.43 6379
37806:X 21 Dec 2023 20:17:04.476 # +failover-end master redis-master 192.168.17.43 6379
37806:X 21 Dec 2023 20:17:04.476 # +switch-master redis-master 192.168.17.43 6379 192.168.17.45 6379
37806:X 21 Dec 2023 20:17:04.476 * +slave slave 192.168.17.44:6379 192.168.17.44 6379 @ redis-master 192.168.17.45 6379
37806:X 21 Dec 2023 20:17:04.476 * +slave slave 192.168.17.43:6379 192.168.17.43 6379 @ redis-master 192.168.17.45 6379
37806:X 21 Dec 2023 20:17:04.477 * Sentinel new configuration saved on disk
37806:X 21 Dec 2023 20:17:34.564 # +sdown slave 192.168.17.43:6379 192.168.17.43 6379 @ redis-master 192.168.17.45 6379
[root@redis-slave2 ~]# redis-cli
127.0.0.1:6379> auth redis_123456
OK
127.0.0.1:6379> info replication
# Replication
role:master
connected_slaves:1
slave0:ip=192.168.17.44,port=6379,state=online,offset=523870,lag=1
master_failover_state:no-failover
master_replid:5a963d9d2fba4abb99be63ab39270382473d7155
master_replid2:d058cc4b508f4c410812c6db750c230ef6097f42
master_repl_offset:524015
second_repl_offset:421545
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:85
repl_backlog_histlen:523931
127.0.0.1:6379> exit
[root@redis-slave2 ~]# redis-cli -p 26379
127.0.0.1:26379> info sentinel
# Sentinel
sentinel_masters:1
sentinel_tilt:0
sentinel_tilt_since_seconds:-1
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
sentinel_simulate_failure_flags:0
master0:name=redis-master,status=ok,address=192.168.17.45:6379,slaves=2,sentinels=3
127.0.0.1:26379>
恢复集群
原主库修复完毕后,将原主库加入到集群
#添加参数到原192.168.17.43
cat >> /usr/local/redis/conf/redis.conf << "EOF"
#主节点密码验证
masterauth redis_123456
#设置从节点只读
slave-read-only yes
EOF
#原192.168.17.43启动Redis加入到集群
redis-server /usr/local/redis/conf/redis.conf
#三个节点分别检查集群
#用redis-cli登录
redis-cli -p 6379
#本地验证
auth redis_123456
#查看主从状态
info replication
操作如下:
[root@redis-master ~]# cat >> /usr/local/redis/conf/redis.conf << "EOF"
#主节点密码验证
masterauth redis_123456
#设置从节点只读
slave-read-only yes
EOF
[root@redis-master ~]# redis-server /usr/local/redis/conf/redis.conf
[root@redis-master ~]#
[root@redis-slave2 ~]# redis-cli -p 26379
127.0.0.1:26379> info sentinel
# Sentinel
sentinel_masters:1
sentinel_tilt:0
sentinel_tilt_since_seconds:-1
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
sentinel_simulate_failure_flags:0
master0:name=redis-master,status=ok,address=192.168.17.45:6379,slaves=2,sentinels=3
127.0.0.1:26379> exit
[root@redis-slave2 ~]# redis-cli -p 6379
127.0.0.1:6379> auth redis_123456
OK
127.0.0.1:6379> info replication
# Replication
role:master
connected_slaves:2
slave0:ip=192.168.17.44,port=6379,state=online,offset=850779,lag=1
slave1:ip=192.168.17.43,port=6379,state=online,offset=850779,lag=1
master_failover_state:no-failover
master_replid:5a963d9d2fba4abb99be63ab39270382473d7155
master_replid2:d058cc4b508f4c410812c6db750c230ef6097f42
master_repl_offset:850924
second_repl_offset:421545
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:85
repl_backlog_histlen:850840
127.0.0.1:6379>
[root@redis-slave1 ~]# redis-cli -p 6379
127.0.0.1:6379> auth redis_123456
OK
127.0.0.1:6379> info replication
# Replication
role:slave
master_host:192.168.17.45
master_port:6379
master_link_status:up
master_last_io_seconds_ago:0
master_sync_in_progress:0
slave_read_repl_offset:842313
slave_repl_offset:842313
slave_priority:100
slave_read_only:1
replica_announced:1
connected_slaves:0
master_failover_state:no-failover
master_replid:5a963d9d2fba4abb99be63ab39270382473d7155
master_replid2:d058cc4b508f4c410812c6db750c230ef6097f42
master_repl_offset:842313
second_repl_offset:421545
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:85
repl_backlog_histlen:842229
127.0.0.1:6379>
[root@redis-master ~]# redis-cli -p 6379
127.0.0.1:6379> auth redis_123456
OK
127.0.0.1:6379> info replication
# Replication
role:slave
master_host:192.168.17.45
master_port:6379
master_link_status:up
master_last_io_seconds_ago:1
master_sync_in_progress:0
slave_read_repl_offset:779412
slave_repl_offset:779412
slave_priority:100
slave_read_only:1
replica_announced:1
connected_slaves:0
master_failover_state:no-failover
master_replid:5a963d9d2fba4abb99be63ab39270382473d7155
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:779412
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:753426
repl_backlog_histlen:25987
127.0.0.1:6379>
以上就是Redis7主从哨兵模式的部署实战,分享给小伙伴们😊
最后修改时间:2023-12-22 18:38:09
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




