[构建高性能数据库缓存之redis主从复制][http://database.51cto.com/art/201407/444555.htm]

一、什么是redis主从复制?

主从复制,当用户往Master端写入数据时,通过Redis Sync机制将数据文件发送至Slave,Slave也会执行相同的操作确保数据一致;且实现Redis的主从复制非常简单。

二、redis主从复制特点

1、同一个Master可以拥有多个Slaves。

2、Master下的Slave还可以接受同一架构中其它slave的链接与同步请求,实现数据的级联复制,即Master->Slave->Slave模式;

3、Master以非阻塞的方式同步数据至slave,这将意味着Master会继续处理一个或多个slave的读写请求;

4、Slave端同步数据也可以修改为非阻塞是的方式,当slave在执行新的同步时,它仍可以用旧的数据信息来提供查询;否则,当slave与master失去联系时,slave会返回一个错误给客户端;

5、主从复制具有可扩展性,即多个slave专门提供只读查询与数据的冗余,Master端专门提供写操作;

6、通过配置禁用Master数据持久化机制,将其数据持久化操作交给Slaves完成,避免在Master中要有独立的进程来完成此操作。

三、redis主从复制原理

当启动一个Slave进程后,它会向Master发送一个SYNC Command,请求同步连接。无论是第一次连接还是重新连接,Master都会启动一个后台进程,将数据快照保存到数据文件中,同时Master会记录所有修改数据的命令并缓存在数据文件中。后台进程完成缓存操作后,Master就发送数据文件给Slave,Slave端将数据文件保存到硬盘上,然后将其在加载到内存中,接着Master就会所有修改数据的操作,将其发送给Slave端。若Slave出现故障导致宕机,恢复正常后会自动重新连接,Master收到Slave的连接后,将其完整的数据文件发送给Slave,如果Mater同时收到多个Slave发来的同步请求,Master只会在后台启动一个进程保存数据文件,然后将其发送给所有的Slave,确保Slave正常。

四、服务器资源列表

五、配置过程

关于Redis的安装与配置这里便不操作,想了解的朋友请阅读:高性能数据库缓存之redis(一)http://cfwlxf.blog.51cto.com/3966339/1423106

3、1 Master端操作如下:

运行redis服务

  1. [root@redis_master sh]# redis-server/etc/redis/redis.conf

查询redis运行日志

##通过阅读日志文件输出的一些信息,可以看出Master与Slave建立连接时,需要执行的会话机制:加载数据文件至硬盘,用时0.012秒,可想而知速度是多么的快,当然得依据数据的大小去评测;服务连接至6379端口,收到Slave同步连接请求,开启“BGSAVE”同步等;

清除Master端数据库中所有Key

  1. [root@redis_master sh]# redis-cli
  2. 127.0.0.1:6379> FLUSHALL
  3. OK
  4. 127.0.0.1:6379> keys *
  5. (empty list or set)

3、2 Slave端操作如下:

[root@redis_slave ~]# vim/etc/redis/redis.conf

#添加Master端的IP与端口

  1. # slaveof <masterip><masterport>
  2. slaveof 192.168.8.8 6379

运行redis

  1. [root@redis_slave ~]# redis-server/etc/redis/redis.conf

查询Slave运行日志

##分析redis日志,可以看出Slave与Master建立连接,数据同步的过程;如:发送SYNC命令,与Master端192.168.8.8:6379建立连接,然后Slave sync started;随后Master发送PING命令检查Slave的存活状态,复制被继续….

查询数据库中的所有key

  1. [root@redis_slave ~]# redis-cli
  2. 127.0.0.1:6379> keys *
  3. (empty list or set)

3、3 slave2端操作如下:

[root@redis_slave2 ~]# vim/etc/redis/redis.conf

#添加Slave端的IP与端口,实现级联复制;

  1. # slaveof <masterip><masterport>
  2. slaveof 192.168.8.10 6379

#运行redis服务

  1. [root@redis_slave2 ~]# redis-server/etc/redis/redis.conf

查询redis运行日志

##结果与Slave1类似,只不过Slave2与Slave1(192.168.8.10:6379)建立连接,同步数据;MySQL的级联复制便是这样,Master->Slave1->Slave2;

#查询数据库的所有key

[root@redis_slave2 ~]# redis-cli

127.0.0.1:6379> keys *

(empty list or set)

3、4 master端操作如下:

  1. [root@redis_master sh]# redis-cli
  2. 127.0.0.1:6379> MSET ID 1005 NAMEMariaDB City BeiJing
  3. OK
  4. 127.0.0.1:6379> MGET ID NAME City
  5. 1) "1005"
  6. 2) "MariaDB"
  7. 3) "BeiJing"
  8. 127.0.0.1:6379> keys *
  9. 1) "NAME"
  10. 2) "ID"
  11. 3) "City"

3、5 客户端验证同步结果

slave1端验证

  1. [root@redis_slave ~]# redis-cli
  2. 127.0.0.1:6379> auth !@#aedf
  3. 127.0.0.1:6379> keys *
  4. 1) "City"
  5. 2) "NAME"
  6. 3) "ID"
  7. 127.0.0.1:6379> MGET ID NAME City
  8. 1) "1005"
  9. 2) "MariaDB"
  10. 3) "BeiJing"

slave2端验证

  1. [root@redis_slave2 ~]# redis-cli
  2. 127.0.0.1:6379> keys *
  3. 1) "ID"
  4. 2) "NAME"
  5. 3) "City"
  6. 127.0.0.1:6379> MGET ID NAME City
  7. 1) "1005"
  8. 2) "MariaDB"
  9. 3) "BeiJing"

四、Master write,Slave read机制

Redis的主从复制,通过程序实现数据的读写分离,让Master负责处理写请求,Slave负责处理读请求;通过扩展Slave处理更多的并发请求,减轻Master端的负载,如下图:

此图画得比较简易,展示了实现Redis读写分离的过程,通过判断用户读写请求,将write请求发送给Redis Master处理,Read请求发送给Redis Slave处理,文章中的不足之处,欢迎大家指点。

博文地址:http://cfwlxf.blog.51cto.com/3966339/1433637

【编辑推荐】

  1. Redis高级实用特性:安全性与主从复制
  2. Redis数据库高级实用特性:事务控制
  3. 一步完成MySQL向Redis迁移
  4. 深入理解Redis主键失效原理及实现机制
  5. 从应用角度谈新浪微博Redis服务平台

转载于:https://www.cnblogs.com/lsx1993/p/4614912.html

配置Redis主从复制相关推荐

  1. 【Redis】配置redis主从复制

    阅读目录 简单介绍 章节1:下载安装 章节2:修改配置文件 章节3:开启主从redis服务 章节4:客户端连接-测试同步 章节5:应用场景 章节6:参考链接 简单介绍 redis的作用,可网上自行搜索 ...

  2. 手把手教你配置Redis主从复制(含详细图文)

    前言 这期来聊聊什么是主从复制?主从复制能干什么?Redis如何实现的主从复制?哨兵模式如何实现?最后再来说说复制的原理以及他的缺点,如果还没安装Redis的同学可以先去看一下 <手把手教你在L ...

  3. Redis主从复制配置

    环境描述 Redis Master:192.168.1.100 6379(Ubuntu系统) Redis Slave1:192.168.1.101 6380(Ubuntu系统) Redis Slave ...

  4. Redis主从复制哨兵模式自动切换

    Redis主从复制 1.概念 主从复制,是指将一台Redis服务器的数据复制到其他的redis服务器上.前者为主节点master,后者为从节点slave,数据的复制是单向的,由主节点复制到从节点(主节 ...

  5. redis+主从复制+集群配置

    redis+主从复制+集群配置 redis是一个key-value存储系统.和memcached类似,不过redis支持的value类型更多,主要有:string(字符串).list(链表).set( ...

  6. Redis主从复制配置(原理剖析)

    文章目录 前言 一.Redis主从复制的作用 二.Redis主从复制环境配置 1.查看默认配置信息 2.配置一主二从的集群模式 2.1.拷贝配置文件 2.2.配置redis79.conf文件 2.3. ...

  7. Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步

    Linux企业化运维 实验所用系统为Redhat-rhel7.6. 目录 Linux企业化运维 Linux企业化运维--(7)redis服务之redis配置及主从复制.主从自动切换.集群.redis+ ...

  8. Redis主从复制的配置并进行场景测试

    Redis主从复制的配置并进行场景测试 为什么要使用主从复制? Redis虽然读写的速度相对于传统的关系型数据库较快,但是也会出现读取压力比较大的情况,为了避免出现这种情况的发生,以免给用户造成不好的 ...

  9. 阿里面试官:说说Redis主从复制原理

    在Redis复制的基础上(不包括Redis Cluster.Redis Sentinel),使用和配置主从复制非常简单,能使得[从Redis服务器](后文称 slave)能精确得复制[主Redis服务 ...

最新文章

  1. 初入股市之 Hello Stock
  2. Dynamics 365-关于Solution的那些事(一)
  3. 怎么找回失踪的NTLDR文件
  4. python中的os模块
  5. 学习C ,常见的误解
  6. Win7 格式化U盘
  7. ThinkPHP---rbac权限管理
  8. Centos7使用yum安装Mysql5.7.19的详细步骤(可用)
  9. 不要轻率的问自己可以想明白可以确认的问题
  10. RemObjects Elements with water v10.0.0.2595 + CRACK
  11. 用python祝节日快乐_节日快乐祝福语有哪些?
  12. 《全网搜索》6.1版 - 更新内容及下载链接
  13. BTC EmbeddedPlatform安装手记
  14. 一个python+flask和SQLite的数字查找以及Dataload命令生成的小工具
  15. 【牛客网面经整理】20200831小米一面
  16. http://sebug.net/paper/databases/nosql/Nosql.html
  17. Java中常用的四种线程池
  18. html制作简易时钟
  19. 一个=电视+私人影院+KTV+游戏厅,爽!
  20. vue使用动态组件实现TAB切换效果

热门文章

  1. 2020idea插件怎么同步_没有用过这些插件,别说你在用vscode
  2. 计算机办公应用软件初级,电脑办公软件有哪些?桌面便签办公软件基础教程
  3. 华为鸿蒙系统使用视频,原生鸿蒙系统,华为WATCH 3上手视频曝光
  4. HTML+CSS+JS实现 ❤️年年有鱼祝福背景特效❤️
  5. android studio列模式,在Android studio 中使用单例模式
  6. @value 注入静态属性_TP6依赖注入是如何实现的
  7. 怎么分辨学校计算机sql版本,怎么筛选出每个年级每个学校有多少个班级
  8. linux 安装 交换分区大小,给已安装的Linux新增Swap交换分区
  9. php游戏怎么设置fms,[FMS]FMS使用需要注意的几种问题总结说明
  10. php+错误+处理,PHP 错误处理手记!!!!!