Redis集群管理攻略:Redis Trib命令实战教程
Redis集群操作
没有槽位时直接删除
(5)学习如何使用redis-trib命令:添加两个节点docker-compose.yaml
1创建:创建集群环境host1:port1...hostN:portN(集群中主从节点的比例)2call:可以执行redis命令3add-node:向集群添加节点添加第一个参数是新节点的ip:port,第二个参数是集群中现有的节点。
ip:port4del-node[host:portnode_id]:删除节点5reshard:重新分片6check[hosts:port]:检查集群状态
第1步:使用add-node命令。
−绿色为新节点,红色为已知现有节点
输出如下:
第2步:检查集群状态:
注意:以后当节点添加成功时。
新添加的节点不会有任何数据,因为还没有分配槽(哈希槽)。
新节点的槽位需要手动分配。
第一步:使用redis-trib命令查找集群中任意master节点(红色状态代表集群中任意master节点)并重新分发。
输出如下:
1提示1:您可以自行设置要移动到新图块的图块数量,例如200。
2两个提示:需要移动200个槽到该节点(需要指定节点ID),下一点是所有主节点响应槽的数量(700170027003)(总共200个槽到新指定节点,以及将打印执行分片的命令。
)3提示3-分片任务输入yes进行确认。
到底,我们再看一下集群情况:
如上图所示,我们的7007现在可以读取7007上的数据;有一个可以写字的洞。
至此我们的7007已经添加到集群中,并且是主节点(master)。
第1步:我们还需要运行add-node命令:
出现提示后,安装成功,我们继续查看集群的状态:
如图。
它仍然是主节点,没有分配插槽。
第二步:需要运行sync命令设置当前节点(从节点)的主节点ID。
第一的,需要登录新安装的7008节点的客户端,然后将当前7008(从)节点设置为主节点来运行并设置(这里使用之前创建的7007主节点,红色表示节点ID)
我们继续查看集群当前状态如下图:7008在主节点7007下安装成功。
至此我们已经成功安装了从节点。
(9)我们可以读到,可以写您可以运行集群来检查是否没有(当然)。
(10)现在我们尝试删除节点(7008slave)。
步骤1:删除从节点7008;输入del-node命令;指定要删除的节点ip和端口;和节点id(红色是7008节点id)
输出如下:
第二步:再次发现7008slave节点已经被成功移除,如下图所示。
当前节点的服务进程也会被销毁。
可以使用ps命令查看当前服务(ps-el|grepredis),是7008从节点,即7008从节点。
(11)最后,我们尝试删除之前安装的主节点7007。
此时必须先删除7007,因为主节点已经分配了槽位。
在其他可用的主节点上;然后删除节点,否则,将会发生数据丢失。
第一步:删除7007(主)节点之前,我们需要将其所有数据(槽位)移动到其他节点(目前只能暂时将master的数据移动到一个节点,无法做平均分配功能。
)
输出如下:
至此我们已成功将7007master的数据迁移到7001。
您可以查看当前批次状态,如下所示。
你会发现7007下面没有数据(slot)槽,证明迁移成功。
docker配置redis主从,哨兵sentinel
注意:使用Docker自行安装,配置Redis一主两服务器,并使用看门狗配置最佳可用性。
当slave的master失效时,slave立即晋升为master。
主从模式简介:在主从复制中,数据库分为两种:主数据库(master)和从数据库(slave)。
Heril复制的特点包括:主数据库将支持读写操作,数据变化会自动与数据库服务器的读写操作同步。
数据库服务器主要用于从主库读取数据并接收同步数据。
一个主人可以有多个奴隶,但一个奴隶只能听命于一个主人。
暂停服务器不会影响其他服务器的读取,停止后对Master数据的读写操作会同步。
master挂起后,slave节点并不会被slave本身提升为master。
工作机制:当slave启动时,会主动向master发送SYNC命令。
当这个被接受时,master保存快照(RDB持久化)并在后台,然后将快照文件和命令的执行发送到服务器。
一旦接收到,服务器就会加载快照文件并执行单元命令。
复制初始化后,Master收到的写命令会同步发送到Slave,以保证数据的一致性。
准备和配置:启动并安装Redis。
设置配置目录,如果不存在则创建它。
单击并拖动redis.conf文件并为配置复制三份。
配置文件修改如下:修改redis-6379.conf允许远程连接、关闭安全模式、开启持久化、指定日志文件。
修改redis-6380.conf和redis-6381.conf,以只读方式配置主IP配置,允许远程连接,授予持久化,指定日志文件。
启动容器:使用-d、--name、-p、-v参数启动三个容器,分别是主服务器(return-6379)和两个从服务器(return-6380,return-第6381章)
测试容器启动成功,点击查看是否出现容器名称。
配置redis-6380和redis-6381为主服务器。
测试主服务器使用三个客户端窗口进行服务器配置,主服务器设置密钥值,从服务器获取验证密钥值。
watch的配置(watch模式):watch用于监控运行中的Redis集群的状态。
特点包括:警察模式基于从属模式。
当主服务器出现故障时,警察从服务器中选择一个新的主服务器并更改配置文件。
当master释放slave后,slave就变成了slave。
一个警察集群可以管理多台Redis服务器,但最好不要部署在同一台机器上。
Ping工作机制:按频率发送PING命令来监控模型。
使用Docker启动Redis服务器,配置服务器的网络连接和集群监控,并测试行为。
观察模式说明:启动三台Redis服务器,作为观察者进行监控,并配置与主从关系。
测试步骤:查看警察权限包的状态文件。
阻止主人持有奴隶以及奴隶的主人提升奴隶。
检查slave是否已经成为slave的新master。
redis集群在线迁移
在线迁移Redis集群时,首先需要在新节点上部署Redis实例。请注意,此实例只能部署为单节点实例,而不是集群。
旧环境中的操作必须与新环境保持一致。
将新节点Redis添加到旧集群中,并确保其为集群的主节点。
然后新节点作为从节点添加到集群中。
添加节点后,使用命令查看主从节点信息以及集群状态。
使用“redis-cli-p7000-a'password'clusternodes”命令获取集群节点列表,并验证集群状态是否显示“ok”。
检查集群中的主节点,使用`redis-cli-p7000-a'password'clusternodes|grepmaster`命令查看并验证主节点信息。
接下来执行集群迁移操作。
目标是将所有槽迁移到新节点node_id:614272e21df1cbbcda117f277ff7baa075b3d15e。
确保插槽在集群中的其余主节点之间均匀分布。
通过检查节点状态和集群信息来验证迁移是否成功。
迁移完成后,小心地从集群中删除所有旧节点信息,首先删除从节点,然后删除主节点。
删除节点前,请确保使用“del-node”命令后旧环境中的Redis进程可以正常关闭,以避免集群故障。
最后,检查集群可用性和数据完整性,以确保迁移操作不会对数据或性能产生负面影响。