Redis集群-主从复制
admin
2024-01-17 15:04:31
0

1.安装环境

  • Ubuntu20.04
  • Redis:7.0.5
  • Redis下载地址:https://github.com/redis/redis/archive/7.0.5.tar.gz

2.安装步骤

  1. 复制压缩包到Ubuntu服务器,并解压缩

    tar -xzvf redis-7.0.5.tar.gz
    
  2. 安装gcc

    因为第一次执行make命令编译redis时报错了,所以需要先安装gcc环境

    # 安装gccsudo apt-get install gcc
    
  3. 执行编译命令

    cd redis-7.0.5
    make
    
  4. 执行安装命令

    安装过程可能会报pkg-config: not found

    # 解决pkg-config: not found错误
    sudo apt-get install pkg-config
    # 将redis安装到/usr/local/redis
    make install PREFIX=/usr/local/redis
    
  5. 添加环境变量

    编辑/etc/profile文件

    vi /etc/profile
    

    最后一行添加环境变量

    export PATH=$PATH:/usr/local/redis/bin
    

    使系统变量生效

    source /etc/profile
    
  6. 添加配置文件

    cd /usr/local/redis
    mkdir conf
    

    将解压redis压缩包后文件夹里的redis.conf拷贝到conf文件夹下

  7. 配置远程主机连接redis

    # 默认配置:bind 127.0.0.1,只允许host主机访问redis服务
    bind 192.168.110.97
    # 默认配置:protected-mode yes。保护模式开启后,不允许其他host的客户端连接。
    # By default protected mode is enabled. You should disable it only if
    # you are sure you want clients from other hosts to connect to Redis
    # even if no authentication is configured.
    protected-mode no
    # 配置redis启动时已后台方式运行
    daemonize yes
    

3.启动主节点

启动主节点

redis-server /usr/local/redis/conf/redis.conf

查看主从复制关系

# Replication
role:master
connected_slaves:0
master_failover_state:no-failover
master_replid:d4bf4a9f7a62576d53ca4ab37a661b0e0a8e15b6
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

4.主从复制

4.1 什么是主从模式

​ 主从复制也就是主从模式,当用户向master节点写入数据时,redis同步机制将数据同步到slave节点。配置主从复制后,master节点提供读写服务,slave节点只提供读服务,如果在slave节点上执行写命令,会提示报错READONLY You can't write against a read only replica.

主从模式特点:

  • 同一个master可以有多个slave
  • master以非阻塞方式将数据同步到slave,不会影响master的读写请求
  • 主从复制可以做到读写分离
  • 主从复制可以避免redis单点故障,一台slave故障后,其余的节点还可以继续提供服务,如果master节点故障,会导致整个服务不可用。

4.2 主从复制原理

​ 当启动一个slave节点后,会向master节点发送一个sync命令,请求同步连接。不管slave与master是第一次连接还是重新连接,master节点都会启动一个后台进程,将数据快照保存到文件中,同时master节点会将记录所有修改数据的命令并将其缓存在数据文件中。

​ 后台进程完成缓存操作后,master将数据文件发送给slave,slave将数据文件保存到硬盘上,然后将其加载到内存中,接着master就会把所有修改数据的命令发送给slave。

4.3 主从复制搭建

  1. 创建从节点slave1和slave2的配置文件redis-6380.conf,redis-6381.conf

    redis-6380.conf

    port 6380
    bind 192.168.110.97
    protected-mode no
    daemonize yes
    # replicaof  
    replicaof 192.168.110.97 6379
    

    redis-6381.conf

    port 6381
    bind 192.168.110.97
    protected-mode no
    daemonize yes
    # replicaof  
    replicaof 192.168.110.97 6379
    
  2. 启动slave1和slave2

    redis-server /usr/local/redis/conf/redis-6380.conf
    redis-server /usr/local/redis/conf/redis-6381.conf
    

    查看主从复制关系

    # Replication
    role:master
    connected_slaves:2
    slave0:ip=192.168.110.97,port=6380,state=online,offset=14,lag=1
    slave1:ip=192.168.110.97,port=6381,state=wait_bgsave,offset=0,lag=0
    master_failover_state:no-failover
    master_replid:78358da5a228467f0de1278fea4685ad81b21216
    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
    
  3. 测试主节点宕机

    # Replication
    role:slave
    master_host:192.168.110.97
    master_port:6379
    # 主节点连接状态为down
    master_link_status:down
    master_last_io_seconds_ago:-1
    master_sync_in_progress:0
    slave_read_repl_offset:17094
    slave_repl_offset:17094
    master_link_down_since_seconds:62
    slave_priority:100
    slave_read_only:1
    replica_announced:1
    connected_slaves:0
    master_failover_state:no-failover
    master_replid:78358da5a228467f0de1278fea4685ad81b21216
    master_replid2:0000000000000000000000000000000000000000
    master_repl_offset:17094
    second_repl_offset:-1
    repl_backlog_active:1
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:14687
    repl_backlog_histlen:2408
    

    主节点宕机后,slave节点的角色没有发生任何变化,master_link_status的值变为down,意味着slave节点只能提供读服务,无法承担起master节点的写任务,因此整个redis系统将无法正常运行。

    如果master节点宕机后,slave节点能够主动变成master节点,那么上述问题就解决啦。

相关内容

热门资讯

微软安卓系统叫什么,Windo... 你知道吗?在科技界,微软这个巨头最近可是搞了个大动作,竟然把目光投向了安卓系统!没错,就是那个我们日...
安卓系统没有最近任务,揭秘无最... 你是不是也遇到了这个问题?安卓系统里怎么就没有“最近任务”这个功能呢?别急,让我来给你详细说说这个事...
安卓系统怎么拒聊天,安卓系统聊... 你是不是也和我一样,有时候手机里聊天软件的消息太多,让人头都大了?别急,今天就来教你怎么在安卓系统里...
下载工资软件安卓系统,高效便捷... 你有没有想过,每个月的工资一到手,是不是就感觉整个人都轻松了呢?但是,你知道怎么轻松地管理你的工资吗...
下载灰灰影音安卓系统,畅享高清... 你有没有想过,一部手机,一部电脑,就能让你随时随地享受高清电影、热门剧集的乐趣?没错,这就是我们今天...
安卓系统是不是中国,中国智慧与... 你有没有想过,那个陪伴你每天刷手机、玩游戏、办公的安卓系统,它是不是中国的“孩子”呢?这个问题听起来...
电脑如果安装安卓系统,探索安卓... 你有没有想过,如果家里的电脑突然决定要换换口味,不再坚守Windows的阵营,而是拥抱安卓系统呢?想...
安卓手机升级苹果系统,体验全新... 你有没有想过,你的安卓手机突然间变成了苹果的忠实粉丝,想要体验一番iOS系统的魅力呢?这可不是天方夜...
安卓系统短信不通知,享受宁静 你是不是也遇到了这个问题?安卓系统短信不通知,是不是让你抓狂?别急,今天就来给你详细解析一下这个让人...
夏普电视非安卓系统,非安卓系统... 亲爱的读者们,你是否曾对夏普电视的非安卓系统感到好奇呢?今天,就让我带你一探究竟,揭开这个神秘面纱背...
安卓系统43适配软件,软件升级... 你有没有发现,你的安卓手机最近是不是有点儿“水土不服”?别急,别急,让我来给你揭秘为什么你的安卓系统...
安卓系统有车载系统吗吗,智能驾... 你有没有想过,当你坐在车里,享受着旅途的悠闲时光,手机上的安卓系统是不是也能派上用场呢?没错,我就要...
安卓8.1系统解锁方法,畅享自... 你有没有想过,你的安卓手机里隐藏着无数的小秘密?比如,解锁安卓8.1系统,就能让你的手机焕发出全新的...
安卓系统怎么打开邮件,安卓系统... 你有没有想过,每天那么多邮件,怎么才能快速打开它们呢?尤其是当你用的是安卓系统手机的时候。别急,今天...
封闭安卓系统安装软件,一步到位... 你有没有想过,为什么你的安卓手机里有些软件只能通过官方渠道安装呢?今天,就让我带你一探究竟,揭开封闭...
小米mipad升级安卓系统,解... 你有没有发现,最近小米Mipad的安卓系统升级可是个大热门呢!这不,我就迫不及待地来和你聊聊这个话题...
哪个安卓系统体验好,揭秘安卓系... 你有没有想过,手机里的安卓系统就像是个大厨,不同的版本就是不同的拿手好菜,有的让你回味无穷,有的却让...
安卓系统开发测试,全方位技术解... 你有没有想过,那个陪伴你每天刷手机、玩游戏、办公的安卓系统,是怎么从无到有,一步步成长起来的呢?今天...
安卓系统怎么查配置,轻松掌握设... 你有没有想过,你的安卓手机里藏着多少秘密?别小看这些配置信息,它们可是了解你手机性能的“小侦探”呢!...
pve下安装安卓系统,PVE环... 你有没有想过,在你的PVE服务器上安装一个安卓系统呢?听起来是不是有点酷炫?想象你的服务器不仅能够运...