• Redis使用--主从复制


    主从复制

    像MySQL一样,redis是支持主从同步的,而且也支持一主多从以及多级从结构。

    主从好处

    主从结构,一是为了纯粹的冗余备份,二是为了提升读性能,比如很消耗性能的SORT就可以由从服务器来承担。

    redis的主从同步是异步进行的,这意味着主从同步不会影响主逻辑,也不会降低redis的处理性能。主从架构中,可以考虑关闭主服务器的数据持久化功能,只让从服务器进行持久化,这样可以提高主服务器的处理性能。

    在主从架构中,从服务器通常被设置为只读模式,这样可以避免从服务器的数据被误修改。但是从服务器仍然可以接受CONFIG等指令,所以还是不应该将从服务器直接暴露到不安全的网络环境中。如果必须如此,那可以考虑给重要指令进行重命名,来避免命令被外人误执行。

    主从– 同步原理

    从服务器会向主服务器发出SYNC指令,当主服务器接到此命令后,就会调用BGSAVE指令来创建一个子进程专门进行数据持久化工作,也就是将主服务器的数据写入RDB文件中。在数据持久化期间,主服务器将执行的写指令都缓存在内存中。在BGSAVE指令执行完成后,主服务器会将持久化好的RDB文件发送给从服务器,从服务器接到此文件后会将其存储到磁盘上,然后再将其读取到内存中。这个动作完成后,主服务器会将这段时间缓存的写指令再以redis协议的格式发送给从服务器。

    另外,要说的一点是,即使有多个从服务器同时发来SYNC指令,主服务器也只会执行一次BGSAVE,然后把持久化好的RDB文件发给多个下游。在redis2.8版本之前,如果从服务器与主服务器因某些原因断开连接的话,都会进行一次主从之间的全量的数据同步;而在2.8版本之后,redis支持了效率更高的增量同步策略,这大大降低了连接断开的恢复成本。

    主服务器会在内存中维护一个缓冲区,缓冲区中存储着将要发给从服务器的内容。从服务器在与主服务器出现网络瞬断之后,从服务器会尝试再次与主服务器连接,一旦连接成功,从服务器就会把“希望同步的主服务器ID”和“希望请求的数据的偏移位置(replication offset)”发送出去。主服务器接收到这样的同步请求后,首先会验证主服务器ID是否和自己的ID匹配,其次会检查“请求的偏移位置”是否存在于自己的缓冲区中,如果两者都满足的话,主服务器就会向从服务器发送增量内容。

    增量同步功能,需要服务器端支持全新的PSYNC指令。这个指令,只有在redis-2.8之后才具有。

    Windows下配置主从

    1. 解压多分Redis

    一个是主服务,两个从服务。

    2. 修改从服务的配置文件

    将这两个文件中的端口 port 更改为与主redis(6379)不相同既可,例: 6380、6381。然后再更改主从配置的参数:# slaveof <masterip> <masterport>  ,改为:slaveof 127.0.0.1 6379  表示是该主服务的从服务

    3. 安装启动服务

    主服务器:

    F:Redis-6379>  redis-server --service-install redis.windows.conf --loglevel verbose  --service-name  redis6379  (这里是windows服务里显示的名称)
    
    F:Redis-6379>  redis-server.exe redis.windows.conf

    从服务器1:

    F:Redis-6380> redis-server --service-install redis.windows.conf --loglevel verbose  --service-name  redis6380
    
    F:Redis-6380>  redis-server.exe redis.windows.conf

    从服务器2:

    F:Redis-6381>  redis-server --service-install redis.windows.conf --loglevel verbose  --service-name  redis6381
    
    F:Redis-6381>  redis-server.exe redis.windows.conf

    4. 验证从服务器

    然后在主服务里面创建key,在从服务里可以取到主服务里设置的key

    5. 从服务器只读

    默认情况下redis数据库充当slave角色时是只读的不能进行写操作 可以在配置文件中开启非只读:slave-read-only no

    CentOS 7下配置主从

    1. 在安装好单机版的前提下,复制三份配置文件

    进入redis所在目录
    [root@zhaoyl redis-6.0.6]# cd RedisSoft/redis-6.0.6
    
    创建6379、6380、6382目录,分别将安装目录下的redis.conf拷贝到这三个目录下。
    [root@zhaoyl redis-6.0.6]# 6379 && cp redis.conf 6379/6379.conf
    [root@zhaoyl redis-6.0.6]# 6381 && cp redis.conf 6380/6380.conf
    [root@zhaoyl redis-6.0.6]# 6382 && cp redis.conf 6382/6382.conf

    2. 分别修改配置文件

    [root@zhaoyl redis-6.0.6]# vim 6379/6379.conf
    修改内容:
    # Redis使用后台模式
    daemonize yes
    
    # 关闭保护模式
    protected-mode no
    
    # 注释以下内容开启远程访问
    # bind 127.0.0.1
    
    # 修改启动端口为6379
    port 6379
    
    # 修改pidfile指向路径
    pidfile 6379/redis_6379.pid

    以此类推,修改端口6380及6382配置。修改配置文件时,按空格+/+要找的词可以快速定位,找到后按i键进入insert状态进行修改,修改完成后按Esc键,然后接着按:w进行保存

    3. 主从结构设置

    在Redis中设置主从有2种方式:
    1. 在redis.conf中设置slaveof
        a)  slaveof <masterip> <masterport>
    
    2. 使用redis-cli客户端连接到redis服务,执行slaveof命令
        a)  slaveof <masterip> <masterport>

    第二种方式在重启后将失去主从复制关系。 我们这里使用第二种方式设置主从: 使用Redis客户端连接上6380端口,设置6380端口Redis为6379的从

    使用Redis客户端连接上6382端口,设置6382端口Redis为6379的从

    4. 查看Redis主从关系

    使用Redis客户端连接上6379端口,查看Redis主从关系 如下图所示

    role:角色信息 
    slaveX:从库信息 
    connected_slaves:从库数量

    5. 测试主从数据

        

    6. 主从从结构设置

    Redis的主从架构的缺点是所有的slave节点数据的复制和同步都由master节点来处理,会照成master节点压力太大,所以我们使用主从从结构来处理

    1. 前面步骤同主从架构一致,只是在设置主从结构时,设置6380为6379的从,6382为6380的从

    使用Redis客户端连接上6380端口,设置6380端口Redis为6379的从

    使用Redis客户端连接上6382端口,设置6382端口Redis为6380的从

    2. 查看主从从架构信息: 

    3. 测试

     

     

     

  • 相关阅读:
    编程语言本身不产生任何价值
    探索几种常见的广告平台
    Talk about my most-recent job application, Got acknowledgement of Native American programmers of two rounds of Video interviews for over 2 months' time, Chinese f2f interview is a deep question.
    UI 控件和工具库, 编程语言更高一层的Must have, before fully prepared.
    Python趣味入门6:能计数的循环语句for
    Python趣味入门5:循环语句while
    交个朋友
    2020年开始,中国程序员前景一片灰暗,是这样吗?
    2030年,程序员工资还能达到现在的水平吗?
    Java虚拟机调优(七)-典型配置举例1
  • 原文地址:https://www.cnblogs.com/zhaoyl9/p/13489788.html
Copyright © 2020-2023  润新知