Linux云计算 |【第四阶段】NOSQL-DAY3

主要内容:

redis主从复制、哨兵服务(高可用)、数据持久化(RDB、AOF)

一、Redis主从复制概述

Redis 主从复制是一种数据复制机制,用于在多个 Redis 实例之间同步数据,以提高系统的可用性、可靠性和读取性能。主从复制的基本思想是将一个 Redis 实例(主节点)的数据复制到一个或多个其他 Redis 实例(从节点),从而实现数据的冗余备份和读写分离。以下是 Redis 主从复制的概述:

1. 基本概念

  • 主节点(Master):负责处理所有写操作,并将数据变更同步到从节点。
  • 从节点(Slave):复制主节点的数据,并可以处理读操作。从节点不处理写操作,只负责读取和备份数据。

2. 主从复制的配置

  • 主节点配置:通常不需要特殊配置,主节点默认接受所有客户端的读写请求。
  • 从节点配置:从节点需要配置主节点的地址和端口,例如:
    slaveof <master-ip> <master-port>
    
    或者在配置文件中设置:
    slaveof 192.168.1.100 6379
    

3. 数据同步过程

  • 全量复制(Full Resynchronization)
    • 当从节点首次连接到主节点时,会进行全量复制。主节点生成一个 RDB 快照文件,并将其发送给从节点。
    • 从节点接收并加载 RDB 文件,然后继续同步主节点的增量数据。
  • 增量复制(Partial Resynchronization)
    • 在全量复制完成后,主节点会将后续的数据变更(写操作)通过复制缓冲区(replication buffer)发送给从节点。
    • 从节点接收并应用这些增量数据,保持与主节点的数据一致性。

4. 复制缓冲区

  • 复制缓冲区(Replication Buffer):主节点维护一个复制缓冲区,用于存储最近的数据变更。从节点通过复制缓冲区接收增量数据。
  • 复制积压缓冲区(Replication Backlog):主节点还维护一个复制积压缓冲区,用于在从节点断开连接后重新同步数据。

5. 使用场景

  • 读写分离:适用于读多写少的场景,通过读写分离提高系统的读取性能。
  • 数据备份:适用于需要数据冗余备份的场景,提高数据的可靠性和容错能力。
  • 故障转移:适用于需要高可用性的场景,通过故障转移机制确保服务的连续性。

1)结构模式:一主一从、一主多从、主从从

2)主从复制工作原理(与MySQL的主从同步不同)

  • ① Slave向Master发送sync命令;
  • ② Master启动后台存盘进程,并收集所有修改数据命令;
  • ③ Master完成后台存盘后,传送整个数据文件到Slave;
  • ④ Slave接收数据文件,加载到内存中完成首次完全同步;
  • ⑤ 后续有新数据产生时,Master继续收集数据修改命令一次传给Slave,完成同步;

1、一主一从结构示例:

实验网络拓扑:

步骤1:恢复redis1和redis2的redis默认配置

① 修改2个节点的配置文件,注释集群功能,并重启服务

## redis1 
[root@redis1 ~]# vim /etc/redis/6379.conf
# cluster-enabled yes
# cluster-config-file nodes-6379.conf
# cluster-node-timeout 5000
[root@redis1 ~]# service redis_6379 stop   //停止服务
Stopping ...
Redis stopped
[root@redis1 ~]# ls /var/lib/redis/6379/
dump.rdb         nodes-6379.conf
[root@redis1 ~]# rm -f /var/lib/redis/6379/*    //清除数据目录
[root@redis1 ~]# service redis_6379 start   //启动服务
Starting Redis server...


## redis2 
[root@redis2 ~]# vim /etc/redis/6379.conf
# cluster-enabled yes
# cluster-config-file nodes-6379.conf
# cluster-node-timeout 5000
[root@redis2 ~]# service redis_6379 stop   //停止服务
Stopping ...
Redis stopped
[root@redis2 ~]# ls /var/lib/redis/6379/
dump.rdb         nodes-6379.conf
[root@redis2 ~]# rm -f /var/lib/redis/6379/*    //清除数据目录
[root@redis2 ~]# service redis_6379 start   //启动服务
Starting Redis server...

步骤2:配置主从服务器

① 默认redis都是主服务器(无需配置)

[root@redis1 ~]# redis-cli
127.0.0.1:6379> INFO replication    //查看主从复制信息
# Replication
role:master    /角色为master主节点
connected_slaves:0
master_replid:fea1bd84c837c4968c506c4ef01df7bdb05ffa9f
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:0
second_repl_offset:-1
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0

② 配置redis2(192.168.1.12)为redis1的从服务器

- 方法1:通过命令进行配置(临时生效)

[root@redis2 ~]# redis-cli
127.0.0.1:6379> SLAVEOF 192.168.2.11 6379   //指定主服务器IP和端口
OK
127.0.0.1:6379> INFO replication    //查看主从复制信息
# Replication
role:slave    //角色为Slave从节点
master_host:192.168.2.11    //主节点IP地址
master_port:6379            //主节点端口
master_link_status:up       //到主节点的连接状态
master_last_io_seconds_ago:8
master_sync_in_progress:0
slave_repl_offset:14
slave_priority:100
slave_read_only:1
connected_slaves:0
master_replid:fdeac0f68bb6295ace1c3d82ecc0512f011afb8f
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:14
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:14

- 方法2:修改配置文件(永久生效),需要重启服务

[root@redis2 ~]# vim /etc/redis/6379.conf
#slaveof <ma
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小安运维日记

Hey~ 感谢您的充电支持!!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值