Redis复制概念

中文资料:http://www.redis.cn/topics/cluster-tutorial.html

在 Redis 复制的基础上,使用和配置主从复制非常简单,能使得从 Redis 服务器(下文称 slave)能精确得复制主 Redis 服务器(下文称 master)的内容。每次当 slave 和 master 之间的连接断开时, slave 会自动重连到 master 上,并且无论这期间 master 发生了什么, slave 都将尝试让自身成为 master 的精确副本。

这个系统的运行依靠三个主要的机制:

  • 当一个 master 实例和一个 slave 实例连接正常时, master 会发送一连串的命令流来保持对 slave 的更新,以便于将自身数据集的改变复制给 slave , :包括客户端的写入、key 的过期或被逐出等等。
  • 当 master 和 slave 之间的连接断开之后,因为网络问题、或者是主从意识到连接超时, slave 重新连接上 master 并会尝试进行部分重同步:这意味着它会尝试只获取在断开连接期间内丢失的命令流。
  • 当无法进行部分重同步时, slave 会请求进行全量重同步。这会涉及到一个更复杂的过程,例如 master 需要创建所有数据的快照,将之发送给 slave ,之后在数据集更改时持续发送命令流到 slave 。
当 master 关闭持久化时,复制的安全性

在使用 Redis 复制功能时的设置中,强烈建议在 master 和在 slave 中启用持久化。当不可能启用时,例如由于非常慢的磁盘性能而导致的延迟问题,应该配置实例来避免重置后自动重启。

为了更好地理解为什么关闭了持久化并配置了自动重启的 master 是危险的,检查以下故障模式,这些故障模式中数据会从 master 和所有 slave 中被删除:

  • 我们设置节点 A 为 master 并关闭它的持久化设置,节点 B 和 C 从 节点 A 复制数据。
  • 节点 A 崩溃,但是他有一些自动重启的系统可以重启进程。但是由于持久化被关闭了,节点重启后其数据集合为空。
  • 节点 B 和 节点 C 会从节点 A 复制数据,但是节点 A 的数据集是空的,因此复制的结果是它们会销毁自身之前的数据副本。

当 Redis Sentinel 被用于高可用并且 master 关闭持久化,这时如果允许自动重启进程也是很危险的。例如, master 可以重启的足够快以致于 Sentinel 没有探测到故障,因此上述的故障模式也会发生。

任何时候数据安全性都是很重要的,所以如果 master 使用复制功能的同时未配置持久化,那么自动重启进程这项应该被禁用。

配置主从复制

第一种方法,在slave节点配置文件添加

$ cat redis-7001.conf...slaveof 192.168.0.23 7000...

第一种方法需要重启redis生效

第二中方法,在slave节点客户端配置

$ redis-cli -p 7001slaveof 192.168.0.23 7000

第二中方法实时生效,重启后失效

7000端口代表master,7001端口代表slave

如果是生产环境建议两种方法都配置

查看主从复制状态

# master节点redis-cli -p 7000 info...# Replicationrole:masterconnected_slaves:1slave0:ip=192.168.0.23,port=7001,state=online,offset=1737,lag=1master_repl_offset:1737repl_backlog_active:1repl_backlog_size:1048576repl_backlog_first_byte_offset:2repl_backlog_histlen:1736...
# slave节点redis-cli -p 7001 info...# Replicationrole:slavemaster_host:192.168.0.23master_port:7000master_link_status:upmaster_last_io_seconds_ago:8master_sync_in_progress:0slave_repl_offset:1821slave_priority:100slave_read_only:1connected_slaves:0master_repl_offset:0repl_backlog_active:0repl_backlog_size:1048576repl_backlog_first_byte_offset:0repl_backlog_histlen:0...

最后特别注意的两点

  • 一定要开启持久化,防止故障数据丢失
  • slave实例建议开启只读性质

redis 主从模式_Redis主从模式部署文档相关推荐

  1. Redis集群部署文档(Ubuntu15.10系统)

    Redis集群部署文档(Ubuntu15.10系统) (要让集群正常工作至少需要3个主节点,在这里我们要创建6个redis节点,其中三个为主节点,三个为从节点,对应的redis节点的ip和端口对应关系 ...

  2. 华为云鲲鹏服务器部署文档--java微服务

    华为云鲲鹏服务器部署文档 河南中电高科计算机技术有限公司 2020.5.9 适用于java微服务技术栈. CentOS 7.6 64bit ISO 适用于鲲鹏服务器arm架构的CentOS 7.6.1 ...

  3. 华为云鲲鹏服务器部署文档-修正版-CentOS+java微服务开发

    华为云鲲鹏服务器部署文档 河南中电高科计算机技术有限公司 http://www.ceht.com.cn 2020.5.12 适用于java微服务开发运行基础软件环境部署,实测通过. CentOS 7. ...

  4. centos7 后端部署文档

    centos7 部署文档 环境说明 pyenv的安装与使用 pipenv的安装与使用 supervisor的安装与使用 mysql的安装与使用 redis的安装与使用 环境说明 本次部暑基于 Linu ...

  5. IM开源项目OpenIM部署文档-从准备工作到nginx配置

    IM开源项目OpenIM部署文档-从准备工作到nginx配置 2022-11-14 22:27·OpenIM 一.准备工作 运行环境 linux系统即可, Ubuntu 7.5.0-3ubuntu1~ ...

  6. loganalyzer部署文档-(第一部分)

    loganalyzer部署文档 环境准备: 简介 LogAnalyzer 是一款syslog日志和其他网络事件数据的Web前端.它提供了对日志的简单浏览.搜索.基本分析和一些图表报告的功能.数据可以从 ...

  7. Docker部署文档

    Docker部署文档 目录 Docker部署文档 1 一.什么是Docker 3 1.1Docker简介 3 1.2对比传统虚拟机总结 4 1.3Docker通常用于如下场景: 5 1.4基本概念 5 ...

  8. Django+Linux+Uwsgi+Nginx项目部署文档

    Django+Linux+Uwsgi+Nginx项目部署文档 WSGI 在生产环境中使用WSGI作为python web的服务器 WSGI:全拼为Python Web服务器网关接口,Python We ...

  9. 服务器安全部署文档(转载)

    转载链接http://www.cnblogs.com/EmptyFS/p/3547796.html 年前一直在赶项目,到最后几日才拿到新服务器新添加的硬盘,重做阵列配置生产环境,还要编写部署文档做好安 ...

  10. pptpd安装部署文档

    简述: PPTP:点对点隧道协议 (PPTP: Point to Point Tunneling Protocol) 点对点隧道协议(PPTP)是一种支持多协议虚拟专用网络的网络技术,它工作在第二层. ...

最新文章

  1. 深夜文献:2021腾讯科技WE大会硬核复习资料,看看如何烧脑?
  2. 电大计算机统考模拟题在哪里学,[2017年电大]电大-计算机统考模拟题.doc
  3. Android启动界面优化技巧-Splash Screens的正确方式
  4. c语言 if 多个判断条件执行顺序_C语言之流程控制选择语句
  5. 干货:B端产品经理,快速成长的密码
  6. POJ1426-Find The Multiple(DFS)
  7. app营销实训报告_第七届全国金融与证券投资模拟实训大赛圆满落幕!
  8. [置顶] VS自带工具:dumpbin的使用
  9. python基础篇——列表与列表算法(下)
  10. 【bzoj1614】[Usaco2007 Jan]Telephone Lines架设电话线 二分+SPFA
  11. iso硬盘安装 凤凰os_X86平台国产OS 对比评测 | 凤凰os安装教程_什么值得买
  12. Redis下载与安装教程
  13. 联想服务器光驱安装win7系统,联想光盘安装win7系统教程
  14. 杂谈——如何一分钟破解IDEA
  15. uni-app【判断手机是否安装微信QQ】
  16. 中国石油大学华东2013-2014-1c语言a卷_答案,中国石油大学(华东)2012—2013学年第二学期期中A卷试卷答案...
  17. 【算法面试】leetcode最常见的150道前端面试题 --- 中等题
  18. 高数下|级数4|手写笔记(绝对收敛与条件收敛)
  19. kafka的epoch
  20. 什么是pptp,什么是vps?两者有何区别?

热门文章

  1. [案例分享]科大云炬工作室开发的安卓APP项目
  2. 专栏 | 基于 Jupyter 的特征工程手册:数据预处理(二)
  3. 今日机器学习概念:感知机模型
  4. 怎么检测mysql卸载完全_怎么检查mysql有没有删干净
  5. 嵌入式FreeRTOS系统,在中断中调用FreeRTOS系统的API函数
  6. 【CyberSecurityLearning 69】反序列化漏洞
  7. 实验九 根据材料编程(改变字体颜色)
  8. BUUCTF-Reverse:reverse2
  9. Android Stdio 里的 SQLite数据库怎么查看
  10. 将输出流转换成输入流