Redis主从复制配置

文章目录

  • 前言
  • 一、Linux中安装Redis
  • 二、开启主从复制
    • 1. 创建新配置文件
    • 2. 启动redis服务
    • 3. 进入Redis服务
    • 4. 关联主服务(开启主从复制)
  • 三、主从复制实现原理
  • 四、薪火相传
  • 五、反客为主
  • 六、哨兵模式
    • 1. 什么是哨兵模式
    • 2. 如何开启
    • 3. 故障恢复

前言

因为本人只有一台服务器,所以配置的一台主和两台从Redis服务器都是在一台主机上,仅使用端口区分

一、Linux中安装Redis

  1. 官方下载压缩包
    Redis6.2.6版本压缩包下载路径
  2. 解压到本地,进入到redis目录中
    make
    make install 
    # 安装成功之后,默认的服务会安装到/usr/local/bin/目录下
    
  3. 修改配置文件中的daemonize属性为yes,即reids支持后台方式启动
  4. 启动redis服务(携带配置文件的方式启动,我的配置文件是存放在/redis目录下面)
    redis-server /redis/redis.conf
    
  5. 查看后台进程,若可以看到redis的进程号,则证明启动成功
    ps -aux | grep redis
    

二、开启主从复制

1. 创建新配置文件

以6379为端口启动的redis服务的配置文件

# 引入主配置文件
include /redis/redis.conf
pidfile "/var/run/redis_6379.pid"
# 修改端口号
port 6379
# 修改生成的RDB文件文件名
dbfilename "dump6379.rdb"

以6380为端口启动的redis服务的配置文件

# 引入主配置文件
include /redis/redis.conf
pidfile "/var/run/redis_6380.pid"
# 修改端口号
port 6380
# 修改生成的RDB文件文件名
dbfilename "dump6380.rdb"

以6381为端口启动的redis服务的配置文件

# 引入主配置文件
include /redis/redis.conf
pidfile "/var/run/redis_6381.pid"
# 修改端口号
port 6381
# 修改生成的RDB文件文件名
dbfilename "dump6381.rdb"

2. 启动redis服务

redis-server /redis/redis6379.conf
redis-server /redis/redis6380.conf
redis-server /redis/redis6381.conf

3. 进入Redis服务

# 查看服务的属性
info replication

Redis主从复制配置_第1张图片

4. 关联主服务(开启主从复制)

# 表示和本地端口号为6379的redis服务关联,成为它的从服务
slaveof 127.0.0.1 6379

三、主从复制实现原理

  1. 当从服务器连接上主服务器之后,从服务器会向主服务器发送一个请求数据同步的消息
  2. 主服务器接收到从服务器的消息同步请求之后,会先把主服务器的数据进行RDB持久化到本地,然后把持久化的RDB文件发送给从服务器,从服务器以此获得主服务器的数据
  3. 后续主服务器再进行数据库的修改操作时,会主动发送修改操作请求给从服务器,从服务器同步进行修改

四、薪火相传

从服务器全部挂在主服务器下面时,主服务器对于从服务器进行数据同步需要消耗不少的资源。因此可以使用薪火相传模式,即部分从服务器不挂在主服务器下面,而是挂在另外一部分从服务器下面,由这些从服务器对其进行数据的同步,减少主服务器的性能消耗

# 将端口号为6381的从服务挂在端口号为6380的从服务下面
slaveof 127.0.0.1 6380

五、反客为主

当主服务器宕机之后,后面的从服务器立即升为主服务

slaveof no one

六、哨兵模式

1. 什么是哨兵模式

可以后台监控主机是否故障,如果故障了可以根据投票数自动将从库转为主库

2. 如何开启

  1. 新建配置文件
    touch sentinel.conf
    
  2. 添加内容
    sentinel monitor mymaster 127.0.0.1 6379 1
    # 其中mymaster是为监控对象起的服务器名称 1为至少有多少个哨兵同意迁移的数量
    
  3. 启动哨兵
    redis-sentinel /redis/sentinel.conf
    

3. 故障恢复

  1. master发生故障
  2. 从下线的主服务的所有从服务中挑选一个转换为主服务,筛选的条件依次为:优先级靠前的;偏移量最大的;runid最小的。
  3. 挑选出新的主服务之后,sentinel会向原主服务发送slaveof命令 ,让其服从新的主服务
  • 优先级在redis.conf中默认的是:replica-priority 100,数字越小,优先级越高
  • 偏移量是指获得原主机数据最全的
  • 每个redis启动之后都会获得一个四十位的runid

你可能感兴趣的:(Redis,redis,数据库,linux)