Redis主从复制-Replication

官网介绍看这里 http://redis.io/topics/replication

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

Redis replication is a very simple to use and configure master-slave replication that allows slave Redis servers to be exact copies of master servers.

  • 用处:读写分离,性能扩展; 容灾快速回复

特点:

  • Redis uses asynchronous replication  异步复制
  • A master can have multiple slaves  一主可以多从 并联关系
  • Slaves are able to accept connections from other slaves   串联关系
  • Redis replication is non-blocking on the master side    复制是非阻塞模式
  • Replication is also non-blocking on the slave side
  • avoid the cost of having the master write the full dataset to disk  防止数据溢出写入硬盘

一、配从(服务器)不配主(服务器)

配置三个服务器6379,6380,6381

需要复制三份配置文件,并分别更改端口号,pid文件名字,dump.rdb名字,

Appendonly关掉;

 info replication查询主从复制的信息,初始时都是master

salveof <ip> <port> 设置主仆关系,

①           并联关系:80和81都是79的slave

②           串联关系: 79是80的master,80是81的master

先来并联关系:

①           并联关系:80和81都是79的slave

1 切入点问题?slave1、slave2是从头开始复制还是从切入点开始复制?比如从k4进来,那之前的123是否也可以复制 .

2 从机是否可以写?set可否?

127.0.0.1:6380> set k8 v8

(error) READONLY You can‘t write against a read only slave.

Read-only slave

Since Redis 2.6, slaves support a read-only mode that is enabled by default. This behavior is controlled by the slave-read-only option in the redis.conf file, and can be enabled and disabled at runtime using CONFIG SET.

Read-only slaves will reject all write commands, so that it is not possible to write to a slave because of a mistake. This does not mean that the feature is intended to expose a slave instance to the internet or more generally to a network where untrusted clients exist, because administrative commands like DEBUG or CONFIG are still enabled. However, security of read-only instances can be improved by disabling commands in redis.conf using the rename-commanddirective.

You may wonder why it is possible to revert the read-only setting and have slave instances that can be target of write operations. While those writes will be discarded if the slave and the master resynchronize or if the slave is restarted, there are a few legitimate use case for storing ephemeral data in writable slaves. However in the future it is possible that this feature will be dropped.

3 主机shutdown后情况如何?从机是上位还是原地待命

4 主机又回来了后,主机新增记录,从机还能否顺利复制?

5 其中一台从机down后情况如何?依照原有它能跟上大部队吗?

配置文件

串联关系: 79是80的master,80是81的master

  • 薪火相传
  • 上一个slave可以是下一个slave的Master,slave同样可以接收其他slaves的连接和同步请求,那么该slave作为了链条中下一个的master, 可以有效减轻master的写压力,去中心化降低风险。
  • 用 slaveof  <ip>  <port>
  • 中途变更转向:会清除之前的数据,重新建立拷贝最新的
  • 风险是一旦某个slave宕机,后面的slave都没法备份
  • 反客为主 
  • 当一个master宕机后,后面的slave可以立刻升为master,其后面的slave不用做任何修改。
  • 用 slaveof  no one  将从机变为主机。

主从复制的原理:

每次从机联通后,都会给主机发送sync指令,主机立刻进行存盘操作,发送RDB文件给从机 ,

从机收到RDB文件后,进行全盘加载,之后每次主机的写操作,都会立刻发送给从机,从机执行相同的命令

How Redis replication works

If you set up a slave, upon connection it sends a PSYNC command.

If this is a reconnection and the master has enough backlog, only the difference (what the slave missed) is sent. Otherwise what is called a full resynchronization is triggered.触发再同步

When a full resynchronization is triggered, the master starts a background saving process in order to produce an RDB file. At the same time it starts to buffer all new write commands received from the clients. When the background saving is complete, the master transfers the database file to the slave, which saves it on disk, and then loads it into memory. The master will then send all buffered commands to the slave. This is done as a stream of commands and is in the same format of the Redis protocol itself.

You can try it yourself via telnet. Connect to the Redis port while the server is doing some work and issue the SYNCcommand. You‘ll see a bulk transfer and then every command received by the master will be re-issued in the telnet session.

Slaves are able to automatically reconnect when the master-slave link goes down for some reason. If the master receives multiple concurrent slave synchronization requests, it performs a single background save in order to serve all of them.

二、哨兵模式sentinal

  • 反客为主的自动版,能够后台监控主机是否故障,如果故障了根据投票数自动将从库转换为主库.

(1)、新建哨兵配置文件

  • 自定义的/myredis目录下新建sentinel.conf文件,名字绝不能错
  • 在配置文件中填写内容:

sentinel  monitor  mymaster  127.0.0.1  6379  1

  • 其中mymaster为监控对象起的服务器名称, 1 为 至少有多少个哨兵同意迁移的数量。
  • 执行redis-sentinel  /myredis/sentinel.conf  启动哨兵模式
  • 可以看到Running in sentinel mode ,和显示79master 80,81slave的信息

故障恢复

主机79shutdown

可以看到new epoch-选举leader—elect leader -----switch master 成81,

时间: 2024-10-18 08:24:50

Redis主从复制-Replication的相关文章

Redis主从复制

一.Redis的Replication 优点:读写分离 下面的列表清楚的解释了Redis Replication的特点和优势.    1). 同一个Master可以同步多个Slaves.    2). Slave同样可以接受其它Slaves的连接和同步请求,这样可以有效的分载Master的同步压力.因此我们可以将Redis的Replication架构视为图结构.    3). Master Server是以非阻塞的方式为Slaves提供服务.所以在Master-Slave同步期间,客户端仍然可以

深入剖析 redis 主从复制

主从概述 redis 支持 master-slave(主从)模式,redis server 可以设置为另一个 redis server 的主机(从机),从机定期从主机拿数据.特殊的,一个 从机同样可以设置为一个 redis server 的主机,这样一来 master-slave 的分布看起来就是一个有向无环图 DAG,如此形成 redis server 集群,无论是主机还是从机都是 redis server,都可以提供服务). 在配置后,主机可负责读写服务,从机只负责读.redis 提高这种配

Redis主从复制和集群配置

redis主从复制 概述 1.redis的复制功能是支持多个数据库之间的数据同步.一类是主数据库(master)一类是从数据库(slave),主数据库可以进行读写操作,当发生写操作的时候自动将数据同步到从数据库,而从数据库一般是只读的,并接收主数据库同步过来的数据,一个主数据库可以有多个从数据库,而一个从数据库只能有一个主数据库. 2.通过redis的复制功能可以很好的实现数据库的读写分离,提高服务器的负载能力.主数据库主要进行写操作,而从数据库负责读操作. 主从复制过程 主从复制过程:见下图

深入剖析Redis主从复制

[http://sofar.blog.51cto.com/353572/1413024/] [Redis 主从复制的内部协议和机制] 一.主从概述 Redis 支持 Master-Slave(主从)模式,Redis Server 可以设置为另一个 Redis Server 的主机(从机),从机定期从主机拿数据.特殊的,一个从机同样可以设置为一个 Redis Server 的主机,这样一来 Master-Slave 的分布看起来就是一个有向无环图 DAG,如此形成 Redis Server 集群,

Redis系列八:redis主从复制和哨兵

一.Redis主从复制 主从复制:主节点负责写数据,从节点负责读数据,主节点定期把数据同步到从节点保证数据的一致性 1. 主从复制的相关操作 a,配置主从复制方式一.新增redis6380.conf, 加入 slaveof 192.168.1.111 6379, 在6379启动完后再启6380,完成配置:b,配置主从复制方式二.redis-server --slaveof 192.168.1.111 6379 临时生效 c,查看状态:info replicationd,断开主从复制:在slave

Redis主从复制与sentinel模式

第1章 Redis主从复制: 基于RDB持久化的功能来实现主从复制的功能 1.1 redis复制特性: 1.      使用异步复制 2.      一个主服务器可以有多个从服务器 3.      从服务器也可以有自己的从服务器 4.      复制功能不会阻塞主服务器 5.      可以通过复制功能来让主服务器免于执行持久化操作,由从服务器执行持久化操作即可 1.1 主从复制原理: 1.      从服务器向主服务器发送sync命令 2.      街道sync命令的主服务器会调用bgsav

redis主从复制及keepalived方式实现高可用测试

前言: redis高可用有Sentinel.Cluster等多种方式,本文主要介绍keepalived方式. 架构: 配置: hostname ip os redis版本 keepalived版本 备注 redis-master 172.27.9.30 Centos7.3.1611 4.0.10 1.3.5 关闭防火墙和selinux redis-slave 172.27.9.31 Centos7.3.1611 4.0.10 1.3.5 关闭防火墙和selinux 一.redis安装 redis

Redis主从复制与高可用方案

redis简单介绍 Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库.Redis与其他key – value缓存产品有以下三个特点: 支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用. 不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储. 支持数据的备份,即master-slave模式的数据备份. Redis的持久化 RDB:snapshotting 二进制格式:按事先定

读完这篇文章,就基本搞定了Redis主从复制

在前面的两篇文章中,我们分别介绍了Redis的内存模型和Redis持久化技术及方案选择. 在之前的文章中曾提到过,Redis高可用的方案包括持久化.主从复制(及读写分离).哨兵和集群.其中持久化侧重解决的是Redis数据的单机备份问题(从内存到硬盘的备份):而主从复制则侧重解决数据的多机热备.此外,主从复制还可以实现负载均衡和故障恢复. 在本文中,我们将详细介绍Redis主从复制的方方面面,包括:如何使用主从复制.主从复制的原理(重点是全量复制和部分复制.以及心跳机制).实际应用中需要注意的问题