ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

redis学习笔记(15)主从复制

2022-05-01 20:02:36  阅读:199  来源: 互联网

标签:主从复制 15 主机 redis master usr conf local


1、概述

主机数据更新后根据配置和策略, 自动同步到备机的 master/slaver 机制,Master 以写为主,Slave 以读为主,主从复制节点间数据是全量的。

作用:

    • 读写分离,性能扩展
    • 容灾快速恢复

2、复制原理

  1. Slave 启动成功连接到 master 后会发送一个 sync 命令;
  2. Master 接到命令启动后台的存盘进程,同时收集所有接收到的用于修改数据集命令,在后台进程执行完毕之后,master 将传送整个数据文件到 slave,以完成一次完全同步。
  3. 全量复制:slave 服务器在接收到数据库文件数据后,将其存盘并加载到内存中。
  4. 增量复制:Master 继续将新的所有收集到的修改命令依次传给 slave,完成同步。
  5. 但是只要是重新连接 master,一次完全同步(全量复制) 将被自动执行。

3、哨兵模式

反客为主:当一个 master 宕机后,后面的 slave 可以立刻升为 master,其后面的 slave 不用做任何修改。用 slaveof no one 指令将从机变为主机。而哨兵模式是反客为主的自动版,能够后台监控主机是否故障,如果故障了根据投票数自动将从库转换为主库。

当主机挂掉,从机选举产生新的主机

    • 哪个从机会被选举为主机呢?根据优先级别:slave-priority 。
    • 原主机重启后会变为从机。

4、复制延时

由于所有的写操作都是先在 Master 上操作,然后同步更新到 Slave 上,所以从 Master 同步到 Slave 机器有一定的延迟,当系统很繁忙的时候,延迟问题会更加严重,Slave 机器数量的增加也会使这个问题更加严重。

5、故障恢复

优先级:在 redis.conf 中默认 slave-priority 100,值越小优先级越高。

偏移量:指获得原主机数据最全的概率。

runid:每个 redis 实例启动后都会随机生成一个 40 位的 runid。

6、搭建一主多从

1)创建/myredis文件夹;

2)复制redis.conf配置文件到文件夹中去

cp /usr/local/redis/redis-6.2.0/redis.conf /usr/local/redis/myredis/

  3)创建一主两从的三个配置文件并配置(三个配置文件只是端口号不同,分别为6380,6381,6382)

include redis.conf
pidfile /var/run/redis_6382.pid
port 6382
dbfilename dump6382.rdb

  4)启动三个redis服务(命令为:redis-server程序位置   conf文件位置)

/usr/local/redis/redis-6.2.0/src/redis-server /usr/local/redis/myredis/redis6380.conf
/usr/local/redis/redis-6.2.0/src/redis-server /usr/local/redis/myredis/redis6381.conf
/usr/local/redis/redis-6.2.0/src/redis-server /usr/local/redis/myredis/redis6382.conf

  5)连接三个redis服务

/usr/local/redis/redis-6.2.0/src/redis-cli -p 6380
/usr/local/redis/redis-6.2.0/src/redis-cli -p 6381
/usr/local/redis/redis-6.2.0/src/redis-cli -p 6382

  6)查看主机运行情况,在redis-cli里运行命令  info replication,此时的运行结果如下,可以看到主机均为master:

role:master
connected_slaves:0
master_failover_state:no-failover
master_replid:65005be677cd7ebcecddbc540217b5a59e95dad0
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

  7)设置端口为6381和6382的服务为从节点,6380为主节点,在连接6381和6382的redis-cli里运行如下命令:

slaveof 127.0.0.1 6380

  

 

参考:Redis | ZC 的学习录 (zhangc233.github.io)

参考:(29条消息) redis主从复制---搭建一主多从_Java钉子户的博客-CSDN博客

 

 

标签:主从复制,15,主机,redis,master,usr,conf,local
来源: https://www.cnblogs.com/mango1997/p/16213816.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有