Redis系列(五)--主从复制
单机环境存在的问题:
1、机器故障,直接凉凉
2、容量瓶颈
3、QPS瓶颈
主从复制
对于可拓展平台来说,复制(replication)是必不可少的。replication可以让其他服务器slave拥有一个不断更新的数据副本,slave可以用
来处理客户端的读请求。
1.1、特点
1、一个master可以有多个slave,slave下层也可以有slave
2、一个slave只能有一个master
3、数据流是单向的,只能从master到slave
1.2、主从复制实现方式
命令方式(异步):
slaveof host port就会将当前Redis数据复制过去,slaveof no one就会断开复制,不会将已复制的数据清除,一个节点被设置成slave,数
据就会被清除
配置方式:
slaveof 127.0.0.1 6379
slave-read-only yes //从节点只能做读操作,如果slave进行写操作,而master是不知道的,无法进行数据同步
对比:
命令配置不需要重启Redis,但是不方便统一管理,一般在第一次使用Redis的时候,就统一配置,重启Redis的可能不多
run_id:
Redis启动就会产生一个run_id作为唯一标识符
[root@iZ2zecuwoxm5hmeaqo33dfZ redis-4.0.2_2]# redis-cli -p 6379 info server | grep run
run_id:58f6366dec43291630996fae04bd6face91e894d
[root@iZ2zecuwoxm5hmeaqo33dfZ redis-4.0.2_2]# redis-cli -p 6379 info server
# Server
redis_version:4.0.2
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:f2cb6376684139ef
redis_mode:standalone
os:Linux 3.10.0-693.2.2.el7.x86_64 x86_64
arch_bits:64
multiplexing_api:epoll
atomicvar_api:atomic-builtin
gcc_version:4.8.5
process_id:23689
run_id:58f6366dec43291630996fae04bd6face91e894d
tcp_port:6379
uptime_in_seconds:10300775
uptime_in_days:119
hz:10
lru_clock:14904472
executable:/usr/local/redis/redis-4.0.2_1/redis-server
config_file:/usr/local/redis/redis-4.0.2_1/./redis_6379.conf
run_id发生变动,或者master节点启动,就会发生全量复制
偏移量:
在写数据的时候,偏移量就会发生变化
[root@iZ2zecuwoxm5hmeaqo33dfZ redis-4.0.2_2]# redis-cli -p 6379 info replication
# Replication
role:master
connected_slaves:0
master_replid:ce82c6b4c71e606ccded8486c5f72e2b04be5dea
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
master_repl_offset就是偏移量,只不过我这里没开启master-slave
全量复制
将master之前的数据,和同步过程产生的数据,都会同步到slave
过程:
首先将RDB文件同步给slave,在同步的过程中发生的写命令记录下来,然后对比master和slave的偏移量,将这期间写入的数据也同步到slave,
最终完成全量复制
全量复制开销:
1、bgsave时间
2、RDB文件传输时间
3、从节点数据清空时间
4、从节点加载RDB文件的时间
5、可能存在的AOF重写:load RDB之后,如果AOF开启,就会进行AOF重写保证是最新状态
全量复制存在的问题:
如果master和slave之间发生网络波动,就会丢失数据,在Redis V2.8版本之前,只能再进行一次全量复制,这样开销很大,V2.8版本,出现
部分复制
部分复制V2.8
主从复制常见问题:
1、读写分离:将读流量分摊在slave上
读写分离的问题:
1).复制数据延迟,如果节点发生阻塞,可能出现数据不一致,但是一般不考虑这个
2).读到过期数据,和处理过期数据策略有关
3).slave故障
2、主从配置不一致
master和slave的maxmemory配置不一致,全量复制过大,slave maxmemory不够,就会触发删除规则(优先删除过期数据),就会发生
数据丢失,master发生故障,slave升为master,就会有问题
3、规避全量复制
1).第一次全量复制无法避免,可以使用小分片将maxmemory设置小一点,或者在低峰(夜间)进行处理
2).节点run_id不匹配,master重启,run_id发生改变,可以使用故障转移
3).repl_back_buffer不足,实际上是个队列,通过rel_backlog_size将缓冲区设置大一点,默认1M,可设置10M,以实际需求为准
Redis系列(五)--主从复制的更多相关文章
- Redis系列(五):Redis的过期键删除策略
本篇博客是Redis系列的第5篇,主要讲解下Redis的过期键删除策略. 本系列的前4篇可以点击以下链接查看: Redis系列(一):Redis简介及环境安装 Redis系列(二):Redis的5种数 ...
- 四、redis系列之主从复制与哨兵机制
1. 绪言 在现实应用环境中,出于数据容量.容灾.性能等因素的考虑,往往不会只使用一台服务器,而是使用集群的方式.Redis 中也有类似的维持一主多从的方式提高 Redis 集群的高可用性的方案,而其 ...
- Redis系列七 主从复制(Master/Slave)
主从复制(Master/Slave) 1.是什么 也就是我们所说的主从复制,主机数据更新后根据配置和策略,自动同步到备机的master/slaver机制,Master以写为主,Slave以读为主. 2 ...
- redis系列:主从复制
1 简介 这篇文章主要讲述Redis的主从复制功能.会依次从环境搭建.功能测试和原理分析几个方面进行介绍. 2 准备工作 服务器架构图如下 启动主服务器101,使用info replication命令 ...
- redis系列之------主从复制
什么是主从复制 Redis的主从复制机制是指可以让从服务器(slave)能精确复制主服务器(master)的数据,如下图所示: 或者 主从复制的方式和工作原理 工作方式: Redis主从复制主要 ...
- Redis系列五 - 哨兵、持久化、主从
问:骚年,都说Redis很快,那你知道这是为什么吗? 答:英俊潇洒的面试官,您好.我们可以先看一下 关系型数据库 和 Redis 本质上的区别. Redis采用的是基于内存的,采用的是单进程单线程模型 ...
- Redis系列(五)-Opserver的监控
阅读目录: 基本介绍 使用配置 部署实例 面板属性 基本介绍 Opserver是Stack Exchange的一个开源监控系统,基于Net.MVC开发,所以Net程序员可以轻松基于它二次开发.它主要监 ...
- Redis系列五:redis键管理和redis数据库管理
一.redis键管理 1 键重命名 rename oldKey newkey //格式rename oldKey newKey //若oldKey之前存在则被覆盖set name james :set ...
- Redis系列五 Redis持久化
Redis持久化 一.RDB(Redis DataBase) 1.介绍 在指定的时间间隔内将内存中的数据集快照写入磁盘,也就是行话讲的Snapshot快照,它恢复时是将快照文件直接读到内存里. Red ...
随机推荐
- android插件化-apkplug从宿主启动插件Activity-06
插件是一个apk文件它存在自己的Activity界面和UI显示,本节将解说如何配置插件的启动Activity以及如何从宿主启动它. 一 配置插件apk的对外启动Activity (内部activity ...
- Codeforces Round #313 B. Gerald is into Art(简单题)
B. Gerald is into Art time limit per test 2 seconds memory limit per test 256 megabytes input standa ...
- CCBPM工作流引擎的消息机制与设计
keyword:ccflowjflow 消息机制流程引擎 自己主动发送短信 发送邮件 发送消息 流程引擎微信连接 消息接口 关于ccbpm: 我们把ccflow jflow两个版本号的工作流引擎统称为 ...
- VELT-0.1.6开发:载入根文件系统
快乐虾 http://blog.csdn.net/lights_joy/(QQ群:Visual EmbedLinux Tools 375515651) 欢迎转载,但请保留作者信息 VELT的全称是Vi ...
- 【bzoj1787】&【bzoj1832】[Ahoi2008]Meet 紧急集合 & 聚会
bzoj1787就是bzoj1832 bzoj1832 空间和时间少了一些... 求三个结点到一个结点距离之和最小的结点以及距离和 求出两两lca,其中有两个相同,答案则为另一个 感觉就是一大暴力.. ...
- 关于Domain Sepcific Lang
今天在看一些关于CO的东东 里面提到,用从语言派生出来的领域语言再去编写代码会大大加速开发进程 PHP应该是个典型的领域语言(Perl之于文本处理也是这样),虽然不是从什么其他领域派生出来的,但是使用 ...
- android简易双屏支持【转】
本文转载自:http://blog.csdn.net/sfrysh/article/details/7463339 抱歉,之前说xorg的exa更新的时候恐怕一直不会更新了,没有做xorg开发了.转向 ...
- [SDOI2011]消防(单调队列,树的直径,双指针)
消防 2011年 时间限制: 2 s 空间限制: 256000 KB 题目等级 : 大师 Master 题目描述 Description 某个国家有n个城市,这n个城市中任意两个都连通且有 ...
- mysql 根据总分排名
mysql 根据总分排名 SELECT t.*, @rank := @rank + AS rank FROM ( SELECT @rank := ) r, ( SELECT tas.id, tas.t ...
- 【杂文】C++头文件加速
[杂文]C++头文件加速 骚年,冲钱送开挂哦,可以助你超神于OI战场 如果你发现你的暴力超时了的话,可以尝试用一下头文件加速,说不定就过了呢! #pragma once//只编译一次 #pragma ...