暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Redis7主从+哨兵模式实战

原创 孙莹 2023-12-21
864

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 从节点(读)

redismasterslave.png

源码安装

三台虚拟机做相同的操作

操作系统准备

#查看操作系统版本 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>

主从切换

redisswitch.png

停主库自动切换

模拟主库关闭的情况进行切换

#在主库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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论