Redis之主从复制

一:简介

一:产生背景

redis是一个高可用的数据库,可以进行高速的读写操作,但是单机redis容易出现单点故障灯问题

一:虽然redis可以进行数据持久化等操作避免数据丢失,但是物理故障 例如磁盘损坏等 数据还是会丢失

二:当只有单台redis服务器的时候 大量读写操作 对CPU,内存,磁盘容量很容易达到瓶颈

二:解决办法

针对上述问题:可以通过redis复制功能,通过一主(master)多从(slave),或者多主多从(集群),通过多台服务器进行redis服务搭建,提供高可用的redis服务

三:主从复制介绍

redis主从复制模型中,分为主服务器(master)从服务器(slave)两种角色,一台主服务器可以有多台从服务器,一台从服务器也可以有自己的从服务器,主服务器可以进行读写操作,而从服务器只进行读取操作(可以通过修改配置文件 让从服务器具有写的功能)同时会同步主服务器写入的数据,如果主服务器宕机,从服务区可以充当主服务器

四:特点

 (1):一个主服务器可以有多个从服务器

 (2):一个从服务器可以有自己从服务器

 (3):主服务器挂了可以让从服务器充当主服务器

 (4):使用异步复制

 (5):异步复制不会阻塞主服务器

   (6):可以让主服务器免去持久化操作 让从服务器进行持久化操作

   (7):通过主从实现读写分离

五:主从复制原理

redis主从复制方式分为两种方式(两个阶段)

(1)全同步:当主从复制开始的时候 会进行全同步数据

(2)部分同步:当全同步结束会进行部分同步

PS:无论何时 从服务器都可以在任意时刻进行全同步

(1):从服务器会向主服务器发送SYNC请求

(2):接收到SYNC的主服务器会调用BGSAVE命令,创建一个RDB文件,并使用缓冲区记录下来执行的所有命令

(3):当主服务器BGSAVE命令执行完毕,会向从服务器发送RDB文件,而从服务器则会接收并且载入这个文件

(4):从服务器执行RDB文件 然后完成数据初始化同步

六:命令传播

在主从服务器完成同步之后,主服务器每执行一个写命令,它都会将被执行的写命令发送给从服务器执行,这个操作被称为“命令传播”(command propagate)。

 二:redis主从复制配置

 在安装redis时就进行了多实例的配置

准备两个或两个以上redis实例
6380/redis-server
6380/redis.conf
6381/redis-server
6381/redis.conf
6382/redis-server
6382/redis.conf

配置文件示例:

bind 127.0.0.1 10.0.0.186

port 6380

daemonize yes

pidfile /var/run/redis_6380.pid

loglevel notice

logfile "/var/log/redis_6380.log"

dbfilename dump.rdb

dir /application/redis/6380/

appendonly no

appendfilename "appendonly.aof"

appendfsync everysec

slowlog-log-slower-than 10000

slowlog-max-len 128

protected-mode no

启动:

./6380/redis-server ./6380/redis.conf

./6381/redis-server ./6381/redis.conf

./6382/redis-server ./6382/redis.conf

复制环境说明

主节点:6380

从节点:6381、6382

开启主从(在6381 6382实例中执行)

redis-cli -p 6381/6382

SLAVEOF 127.0.0.1 6380
原文地址:https://www.cnblogs.com/SR-Program/p/12444795.html