企业——Redis的主从复制的搭建

一.Redis的基本简介

  redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)和zset(有序集合)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是:redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。Redis 是一个高性能的key-value数据库。 redis的出现,很大程度补偿了memcached这类keyvalue存储的不足,在部 分场合可以对关系数据库起到很好的补充作用。它提供了Python,Ruby,Erlang,PHP客户端,使用很方便。

  存储方式:

  redis使用了两种文件格式:全量数据和增量请求。全量数据格式是把内存中的数据写入磁盘,便于下次读取文件进行加载;增量请求文件则是把内存中的数据序列化为操作请求,用于读取文件进行replay得到数据,序列化的操作包括SET、RPUSH、SADD、ZADD。

  redis的存储分为内存存储、磁盘存储和log文件三部分,配置文件中有三个参数对其进行配置。

    1.save seconds updates,save配置,指出在多长时间内,有多少次更新操作,就将数据同步到数据文件。这个可以多个条件配合,比如默认配置文件中的设置,就设置了三个条件。

    2.appendonly yes/no ,appendonly配置,指出是否在每次更新操作后进行日志记录,如果不开启,可能会在断电时导致一段时间内的数据丢失。因为redis本身同步数据文件是按上面的save条件来同步的,所以有的数据会在一段时间内只存在于内存中。

    3.appendfsync no/always/everysec ,appendfsync配置,no表示等操作系统进行数据缓存同步到磁盘,always表示每次更新操作后手动调用fsync()将数据写到磁盘,everysec表示每秒同步一次。

二.Redis的主从拓扑

1.一主一从:用于主节点故障转移从节点,当主节点的“写”命令并发高且需要持久化,可以只在从节点开启AOF(主节点不需要),这样即保证了数据的安全性,也避免持久化对主节点的影响

      

2.一主多从:针对“读”较多的场景,“读”由多个从节点来分担,但节点越多,主节点同步到多节点的次数也越多,影响带宽,也加重主节点的稳定

      

3.树状主从:一主多从的缺点(主节点推送次数多压力大)可用些方案解决,主节点只推送一次数据到从节点B,再由从节点B推送到C,减轻主节点推送的压力。

      

三.同步的类型

1.全量复制

Redis全量复制一般发生在Slave初始化阶段,这时Slave需要将Master上的所有数据都复制一份。具体步骤如下:
  1)从服务器连接主服务器,发送SYNC命令;
  2)主服务器接收到SYNC命名后,开始执行BGSAVE命令生成RDB文件并使用缓冲区记录此后执行的所有写命令;
  3)主服务器BGSAVE执行完后,向所有从服务器发送快照文件,并在发送期间继续记录被执行的写命令;
  4)从服务器收到快照文件后丢弃所有旧数据,载入收到的快照;
  5)主服务器快照发送完毕后开始向从服务器发送缓冲区中的写命令;
  6)从服务器完成对快照的载入,开始接收命令请求,并执行来自主服务器缓冲区的写命令;

      

2 增量同步

  Redis增量复制是指Slave初始化后开始正常工作时主服务器发生的写操作同步到从服务器的过程。
  增量复制的过程主要是主服务器每执行一个写命令就会向从服务器发送相同的写命令,从服务器接收并执行收到的写命令。

3 Redis主从同步策略

  主从刚刚连接的时候,进行全量同步;全同步结束后,进行增量同步。

  当然,如果有需要,slave 在任何时候都可以发起全量同步。

  redis 策略是:无论如何,slave首先会尝试进行增量同步,如不成功,要求从机进行全量同步。

  注意:如果多个Slave断线了,需要重启的时候,因为只要Slave启动,就会发送sync请求和主机全量同步,当多个同时出现的时候,可能会导致Master IO剧增宕机。

四.Redis的主从复制的过程

1.实验环境

  172.25.254.1  Redis master   server1

  172.25.254.2  Redis slave   server2

  172.25.254.3  Redis slave   server3

  172.25.254.4  client(用来做测试)   server4

2.准备安装相应的安装包

  tar zxf redis-5.0.3.tar.gz
  cd redis-5.0.3
  yum insatall gcc -y   ##安装gcc

安装下载,编译生成可执行文件。由于makefile文件已经写好,我们只需要直接在源码目录执行make命令进行编译即可。

  make    ##make命令执行完成后,会在当前目录下生成几个可执行文件,分别是redis-server(Redis服务器的daemon启动程序)、redis-cli(Redis命令行操作工具)、redis-benchmark(Redis性能测试工具,测试Redis在你的系统及你的配置下的读写性能)、redis-stat(Redis状态检测工具,可以检测Redis当前状态参数及延迟状况)

  make install   
  cd utils/
  ./install_server.sh    ##执行redis的安装脚本

  下面的操作不是必须的,只是为了将Redis相关的资源统一管理而进行的操作。

  mkdir -p /usr/local/redis/bin    ##存放Redis的二进制的可执行文件

  mkdir -p /usr/local/redis/etc    ##存放Redis的配置文件

  mkdir -p /usr/local/redis/var

  cp redis-server redis-cli redis-benchmark redis-stat /usr/local/redis/bin/

  cp redis.conf  /usr/local/redis/etc/

3.修改相关的配置文件

(1)在master上:

  vim /etc/redis/6379.conf    ##Redis使用的端口号是:6379

    70 bind 0.0.0.0

  注意:在配置文件redis.conf中,默认的 bind 接口是127.0.0.1,也就是本地回环地址。这样的话,访问redis服务只能通过本机的客户端连接,而无法通过远程连接,这样可以避免将redis服务暴露于危险的网络环境中,防止一些不安全的人随随便便通过远程连接到redis服务。如果将bind选项注释的话,那会接受所有来自于可用网络接口的连接。

(2)在两个slave上:

  vim /etc/redis/6379.conf

    70 bind 0.0.0.0
    282 slaveof 172.25.254.1 6379   ##添加salve指向master为server1

(3)重启服务器:

  systemctl restart redis_6379.service

(4)测试:

  <1>查看各个节点的服务状态:  redis-cli

  master的:

      

      

  slave的:

      

      

  <2>在server1(master)添加key-value值:

      

  <3>在server2,server3上可以看到数据同步过来了:

      

原文地址:https://www.cnblogs.com/wf-aiyouwei/p/10714986.html

时间: 2024-11-07 22:26:06

企业——Redis的主从复制的搭建的相关文章

2.Redis集群环境搭建

转载请出自出处:http://www.cnblogs.com/hd3013779515/ 一.基本概念 1.redis集群是一个可以在多个节点之间进行数据共享的设施.redis集群提供了以下两个好处1.1 将数据自动切分(split)到多个节点1.2 当集群中的某一个节点故障时,redis还可以继续处理客户端的请求. 2.一个 Redis 集群包含 16384 个哈希槽(hash slot),数据库中的每个数据都属于这16384个哈希槽中的一个.集群使用公式 CRC16(key) % 16384

redis高可用之redis sentinel(哨兵)的搭建以及应用

redis的sentinel可以监控redis一个和多个redis的主从复制架构. 主要实现的功能有: 监控(Monitoring): Sentinel 会不断地检查你的主服务器和从服务器是否运作正常. 提醒(Notification): 当被监控的某个 Redis 服务器出现问题时, Sentinel 可以通过 API 向管理员或者其他应用程序发送通知. 自动故障迁移(Automatic failover): 当一个主服务器不能正常工作时, Sentinel 会开始一次自动故障迁移操作, 它会

redis实现主从复制-单机测试

一.redis实现主从复制-单机测试1.安装redis tar -zxvf redis-2.8.4.tar.gzcd redis-2.8.4make && make install2.配置主从关系需要在slave服务器的redis.conf中配置slaveof 192.168.1.1 6379 #指定master的ip和端口具体配置见下:cp redis.conf redis-master-6379.confvi2 redis-master-6379.conflogfile "/

Redis 之 主从复制 + Keepalived 实现高可用

一.Redis 主从复制 + Keepalived 实现高可用 作用:保证Redis高可用,首先搭建Redis 主从复制,然后在主从两台机器上分别安装keepalived服务,把VIP定位在主Redis上,以供对外提供服务,然后在主服务机器上,添加守护进程,判断redis进程是否正常,如不正常,把keepalived服务停止,使VIP漂移到从服务器上,并且在从服务器上添加相应的守护进程,实时判断VIP是否在本机上,如在,立刻执行从库提升为主库. 二.网络拓扑图 三.分别在两台机器安装Redis

Redis 实战篇之搭建集群

Redis 集群简介 Redis Cluster 即 Redis 集群,是 Redis 官方在 3.0 版本推出的一套分布式存储方案.完全去中心化,由多个节点组成,所有节点彼此互联.Redis 客户端可以直接连接任何一节点获取集群中的键值对,不需要中间代理,如果该节点不存在用户所指定的键值,其内部会自动把客户端重定向到键值所在的节点. Redis 集群是一个网状结构,每个节点都通过 TCP 连接跟其他每个节点连接. 在一个有 N 个节点的集群中,每个节点都有 N-1 个流出的 TCP 连接,和

Redis的主从复制设置与安装

1 验证redis的主从复制,将过程抓图 实验步骤 A.  安装Redis B.  启动Master Redis C.  创建redis-slave.conf配置文件 修改Redis端口和打开slaveof 设置 port 6389 ....... slaveof 127.0.0.1 6379 D.  启动Redis Slave E.  查看进程,确认启动正常 F. 操作master redis G. 读取slave Redis Redis的主从复制设置与安装,布布扣,bubuko.com

Redis Cluster集群搭建测试

# Redis Clutser # ## 一.Redis Cluster集群 ## 参考资料: http://www.cnblogs.com/lykxqhh/p/5690923.html Redis集群搭建的方式有多种,例如使用zookper等,但从redis3.0之后版本支持redis cluster集群,Redis Cluster采用无中心结构,每个节点保存数据和整个集群状态,每个节点都和其他所有节点连接.其redis cluster架构图如下: 其结构特点: 1.所有的redis节点彼此互

Redis基础学习(五)&mdash;Redis的主从复制

一.概述     Redis的主从复制策略是通过其持久化的rdb文件来实现的,其过程是先dump出rdb文件,将rdb文件全量传输给slave,然后再将dump后的操作实时同步到slave中.让从服务器(slave server)成为主服务器(master server)的精确复制品. 以下是关于 Redis 复制功能的几个重要方面: (1)Redis 使用异步复制.从Redis 2.8 开始,从服务器会以每秒一次的频率向主服务器报告复制流(replication stream)的处理进度. (

redis的主从复制部署和使用

reids一种key-value的缓存数据库目前非常流行的被使用在很多场景,比如在数据库读写遇到瓶颈时缓存且读写分离会大大提升这块的性能,下面我就说说redis的主从复制 首先需要启动多个redis实例,master.slave.slave,持久化.端口更改等其他配置在此不在多说,所有的配置都在.conf文件中 作为master节点的conf不需做配置,其中slave-read-only yes表示所有和master相关的字节都为只读的, 要作为slave字节的conf需要配置,放开slaveo