redis主从配置

5 篇文章 0 订阅
2 篇文章 0 订阅
本文介绍了如何搭建Redis主从复制,包括其工作原理、优点以及在Redis集群中的应用,如配置、负载均衡和数据分片。后续步骤涵盖了群集的创建、节点管理及哈希槽的分配和调整。
摘要由CSDN通过智能技术生成

接上文搭建redis文章,这章搭建redis主从

什么是redis主从

Redis 主从复制是一种数据复制和同步机制,用于在多个 Redis 实例之间实现数据的自动同步。主从复制通过将一个 Redis 服务器(主服务器)的数据复制到多个其他 Redis 服务器(从服务器)上,以实现数据的备份、读写分离、负载均衡等目的。

在 Redis 主从复制中,主服务器负责处理写操作(写入和更新数据),同时将已处理的写操作同步到所有从服务器上。从服务器则负责处理读操作,它们接收主服务器发送过来的写操作,并根据这些操作更新自己的数据副本,以保持与主服务器数据的一致性。

通过配置 Redis 主从复制,可以提高系统的可扩展性和可靠性,同时降低单点故障的风险,并使系统更具备容错能力。

主从优点

1. **高可用性**:通过主从复制,即使主服务器出现故障,从服务器仍然可以继续提供读取服务,降低系统宕机的风险,增加系统的可用性。

2. **读写分离**:主从复制允许从服务器处理读操作,从而减轻主服务器的负担,并提高系统的读取性能和吞吐量。

3. **数据备份**:通过主从复制,从服务器保存了主服务器的完整数据副本,可以作为数据备份,以防止意外数据丢失。

4. **容灾恢复**:当主服务器发生故障时,可以快速将一个从服务器提升为新的主服务器,实现快速的容灾切换和数据恢复。

5. **负载均衡**:可以通过在多个从服务器上分担读取请求,实现负载均衡,提高系统整体的性能和稳定性。

6. **延迟复制**:可以配置从服务器的延迟复制,以应对误操作或数据意外删除等情况,从而保护数据不受损坏。

redis群集搭建

杀死reids-server进程
[root@node01 redis]# killall redis-server
创建文件夹在/etc/redis/cluter,下创建{7000..7005}.
[root@node01 redis]# mkdir /etc/redis/cluster
[root@node01 cluster]# mkdir {7000..7005}
将conf文件复制进7000下,并编辑。
[root@node01 cluster]# cp /etc/redis/redis.conf 7000
[root@node01 cluster]# vim 7000/redis.conf 

更改端口,并打开aof,打开群集系统功能

其他节点如此操作;

[root@node01 cluster]# cp 7000/redis.conf 7001/
[root@node01 cluster]# cp 7000/redis.conf 7002/
[root@node01 cluster]# cp 7000/redis.conf 7003/
[root@node01 cluster]# cp 7000/redis.conf 7004/
[root@node01 cluster]# cp 7000/redis.conf 7005/
[root@node01 cluster]# sed -i "s/7000/7001/g" 7001/redis.conf 
[root@node01 cluster]# sed -i "s/7000/7002/g" 7002/redis.conf 
[root@node01 cluster]# sed -i "s/7000/7003/g" 7003/redis.conf 
[root@node01 cluster]# sed -i "s/7000/7004/g" 7004/redis.conf 
[root@node01 cluster]# sed -i "s/7000/7005/g" 7005/redis.conf 

启动创建的redis

[root@node01 cluster]# redis-server 7000/redis.conf 
[root@node01 cluster]# redis-server 7001/redis.conf 
[root@node01 cluster]# redis-server 7002/redis.conf 
[root@node01 cluster]# redis-server 7003/redis.conf 
[root@node01 cluster]# redis-server 7004/redis.conf 
[root@node01 cluster]# redis-server 7005/redis.conf 

查看redis启动信息

ss -anpt | grep redis

下载redis群集工具包

[root@node01 redis]# yum -y install ruby
[root@node01 cluster]# gem install redis --version 3.3.0

制作群集(主+从)  会设置每个主配置一个从服务器

[root@node01 cluster]# redis-cli --cluster create 192.168.20.130:7000 192.168.20.130:7001 192.168.20.130:7002 192.168.20.130:7003 192.168.20.130:7004 192.168.20.130:7005 --cluster-replicas 1

注:如果节点报错,可删除/var/lib/redis下以nodes开头的信息,重新启动服务

检测节点详细信息(只需设置其中一个节点即可查看整个集群信息)

[root@node01 cluster]# redis-cli --cluster check 192.168.20.130:7000
查看简要信息:
[root@node01 cluster]# redis-cli --cluster info 192.168.20.130:7000
如果想新添加从节点;
[root@node01 cluster]# mkdir 7006
[root@node01 cluster]# cp 7001/redis.conf 7006/
[root@node01 cluster]# sed -i "s/7001/7006/g" 7006/redis.conf 
[root@node01 cluster]# grep "7006" 7006/redis.conf 
port 7006
appendfilename "appendonly-7006.aof"
cluster-config-file nodes-7006.conf
[root@node01 cluster]# redis-server 7006/redis.conf 
[root@node01 cluster]# ss -anpt | grep 7006
LISTEN 0      511    192.168.20.130:17006        0.0.0.0:*     users:(("redis-server",pid=39031,fd=10))
LISTEN 0      511    192.168.20.130:7006         0.0.0.0:*     users:(("redis-server",pid=39031,fd=6)) 
LISTEN 0      511             [::1]:17006           [::]:*     users:(("redis-server",pid=39031,fd=11))
LISTEN 0      511             [::1]:7006            [::]:*     users:(("redis-server",pid=39031,fd=7)) 
将该节点加入集群作为从的身份,以7000为主。
[root@node01 cluster]# redis-cli --cluster add-node 192.168.20.130:7006 192.168.20.130:7000 --cluster-slave
添加新的主节点
[root@node01 cluster]# mkdir 7007
[root@node01 cluster]# cp 7001/redis.conf 7007/
[root@node01 cluster]# sed -i "s/7001/7007/g" 7007/redis.conf 
[root@node01 cluster]# redis-server 7007/redis.conf 
[root@node01 cluster]# ss -anpt | grep 7007
LISTEN 0      511    192.168.20.130:17007        0.0.0.0:*     users:(("redis-server",pid=39249,fd=10))
LISTEN 0      511    192.168.20.130:7007         0.0.0.0:*     users:(("redis-server",pid=39249,fd=6)) 
LISTEN 0      511             [::1]:17007           [::]:*     users:(("redis-server",pid=39249,fd=11))
LISTEN 0      511             [::1]:7007            [::]:*     users:(("redis-server",pid=39249,fd=7)) 
[root@node01 cluster]# redis-cli --cluster add-node 192.168.20.130:7007 192.168.20.130:7000
[root@node01 cluster]# redis-cli --cluster check 192.168.20.130:7000 查看群集信息

由于是新添加的主节点,没有槽点,需要重新分配哈希槽点

哈希槽点;

哈希槽(Hash Slot)是Redis集群中用于数据分片的基本单位,Redis集群将整个数据集划分为16384个哈希槽。每个键都会被映射到这16384个哈希槽中的一个,从而实现数据在集群节点之间的均匀分布和负载均衡。

在Redis集群中,每个节点负责处理其中一部分哈希槽的数据。当客户端发送命令访问某个键时,Redis根据键计算哈希槽的位置,并将请求发送到负责该哈希槽的节点上进行处理。这样可以实现数据的分布式存储和查询,提高了系统的扩展性和可用性。

使用哈希槽可以使得Redis集群在动态扩容或缩容时更加灵活,因为只需要迁移部分哈希槽对应的数据即可,而不需要对整个数据集进行重新分片。此外,哈希槽还有利于实现数据的负载均衡,避免某些节点负载过重或数据倾斜的情况发生。

[root@node01 cluster]# redis-cli --cluster reshard 192.168.20.130:7000

被询问需要分配多少槽点(根据主节点数量计算)16384/主节点数量

添加新添加的节点id(check查看)

是否执行此计划(yes)

查看所有节点信息,是否分配槽点(4096)

删除7006从节点,将其加入给7007

因为上无槽点,所以可以直接删除

[root@node01 cluster]# redis-cli --cluster add-node 192.168.20.130:7006 192.168.20.130:7000 --cluster-slave --cluster-master-id 7349b971e58af1982f645b3c6824c5f8dca3382f
格式:添加的节点ip   群集   给哪个主机设置从的master id

 

 

  • 23
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值