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节点,那么上述问题就解决啦。

相关内容

热门资讯

安卓系统app和ios系统的区... 你有没有发现,手机里的APP就像是个大杂烩,各有各的特色,各有各的玩法。今天,咱们就来聊聊安卓系统和...
宿迁综合办公系统安卓,便捷高效... 你有没有听说最近宿迁市推出了一款超级方便的安卓应用——宿迁综合办公系统?这可是个大新闻,让我来给你详...
小米平板4系统安卓下载,畅享智... 亲爱的数码爱好者们,你是否在寻找一款性价比超高、性能稳定的平板电脑呢?小米平板4绝对是你的不二之选!...
安卓系统易用性盘点,人性化设计... 你有没有发现,手机里的安卓系统就像一个万能的小助手,无论你是喜欢玩游戏、看视频,还是处理工作,它都能...
鸿蒙系统中出现安卓代码 鸿蒙系统中的安卓代码奇缘在当今科技飞速发展的时代,智能手机已经成为了我们生活中不可或缺的一部分。而在...
安卓系统的双开免费的,免费畅享... 《探索安卓系统的双开免费新世界》在数字化时代,智能手机已经成为我们生活中不可或缺的一部分。而在这众多...
转国外的安卓系统,探索国外安卓... 你有没有想过,让你的安卓手机体验一下国外的风味呢?想象那些国外的应用、游戏,还有那独特的系统设置,是...
安卓系统韩国能用吗,兼容性与使... 你有没有想过,如果你去韩国旅游或者工作,你的安卓手机还能不能用呢?这个问题可真是让人好奇啊!毕竟,每...
安卓手机系统占多少储存 你有没有发现,你的安卓手机越来越慢了?是不是觉得存储空间不够用,连个新应用都装不下?别急,今天就来给...
freemeos是安卓系统吗,... 你有没有听说过freemeOS这个系统?是不是好奇它是不是安卓系统呢?今天,我就来给你揭秘这个神秘的...
安卓系统其他应用耗电大,那些默... 手机电量总是不够用?是不是觉得安卓系统的其他应用耗电特别大?别急,今天就来给你揭秘这个谜团,让你手机...
华为os系统怎么换安卓系统,轻... 你有没有想过,你的华为手机里那个自家的OS系统,突然间想换换口味,试试安卓的精彩世界呢?别急,今天就...
诺基亚回用安卓系统吗,新篇章的... 你有没有听说最近的大消息?诺基亚,那个曾经手机界的巨头,竟然有可能会重新启用安卓系统!这可不是开玩笑...
安卓软件开发考勤系统 你有没有想过,在忙碌的安卓软件开发工作中,如何轻松管理团队考勤呢?别急,今天就来给你揭秘一款特别实用...
炉石传说安卓系统要求,解锁全新... 亲爱的玩家们,你是否已经迫不及待地想要在安卓设备上畅玩《炉石传说》了呢?别急,在这之前,你得先确保你...
安卓手机刷掌阅系统 你有没有想过,你的安卓手机可以变成一个掌阅小能手呢?没错,就是那种随时随地都能畅读各种电子书的掌阅系...
飞车手游ios系统跟安卓系统,... 你有没有发现,最近手机上的一款飞车手游特别火呢?这款游戏不仅画面精美,操作流畅,而且玩法多样,吸引了...
安卓平板显示系统不兼容,安卓平... 你有没有遇到过这种情况?买了一款心仪的安卓平板,满怀期待地想要体验各种精彩应用,结果却发现有些应用显...
安卓系统安装破解app病毒,安... 你知道吗?在安卓系统上安装破解版的APP,听起来是不是有点刺激?但别高兴得太早,这背后可是隐藏着不少...
安卓版桌面操作系统,探索安卓桌... 你有没有想过,你的安卓手机桌面操作系统,其实就像是一个小小的魔法世界呢?在这个世界里,你可以随意布置...