Redis入门到高可用-6.Redis复制的原理与优化

1.概要

  • 什么是主从复制
  • 主从复制的配置
  • 全量复制和部分复制
  • 故障处理
  • 开发运维的常见问题

2.什么是主从复制

Redis入门到高可用-6.Redis复制的原理与优化_第1张图片
Redis单机问题.png

Redis入门到高可用-6.Redis复制的原理与优化_第2张图片
Redis主从1.png

Redis入门到高可用-6.Redis复制的原理与优化_第3张图片
Redis主从2.png

Redis入门到高可用-6.Redis复制的原理与优化_第4张图片
Redis主从复制作用1.png

Redis入门到高可用-6.Redis复制的原理与优化_第5张图片
主从复制的作用.png

Redis入门到高可用-6.Redis复制的原理与优化_第6张图片
主从复制总结.png

3.主从复制的配置

  • slaveof

    Redis入门到高可用-6.Redis复制的原理与优化_第7张图片
    命令实现1.png

    Redis入门到高可用-6.Redis复制的原理与优化_第8张图片
    命令实现2.png
  • 配置

    Redis入门到高可用-6.Redis复制的原理与优化_第9张图片
    修改配置.png

    Redis入门到高可用-6.Redis复制的原理与优化_第10张图片
    主从复制配置比较.png

4.实操

  • 命令
  • 配置
  • 主从关系
  • 主从数据
  • 开启主从配置

    vim redis-6379.conf

    daemonize yes
    pidfile /var/run/redis-6379.pid
    logfile "6379.log"
    #save 900 1
    #save 300 10
    #save 60 10000
    dbfilename dump-6379.rdb
    dir /opt/soft/redis/redis/data
    

    vim redis-6380.conf

    port 6380
    daemonize yes
    pidfile /var/run/redis-6380.pid
    logfile "6380.log"
    #save 900 1
    #save 300 10
    #save 60 10000
    dbfilename dump-6380.rdb
    dir /opt/soft/redis/redis/data
    replicaof 127.0.0.1 6379
    
    [root@master redis]# redis-server redis-6379.conf 
    [root@master redis]# redis-cli
    127.0.0.1:6379> info replication
    # Replication
    role:master
    connected_slaves:0
    master_replid:77c12844b3370cd33e5ec421891f6c400d12ee28
    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
    127.0.0.1:6379> exit
    [root@master redis]# redis-server redis-6380.conf 
    [root@master redis]# redis-cli -p 6380 info-replication
    (error) ERR unknown command `info-replication`, with args beginning with: 
    [root@master redis]# redis-cli -p 6380 info replication
    # Replication
    role:slave
    master_host:127.0.0.1
    master_port:6379
    master_link_status:up
    master_last_io_seconds_ago:10
    master_sync_in_progress:0
    slave_repl_offset:56
    slave_priority:100
    slave_read_only:1
    connected_slaves:0
    master_replid:e21d4f3793ad9495f4cf9ae6d23d3e426df72cb2
    master_replid2:0000000000000000000000000000000000000000
    master_repl_offset:56
    second_repl_offset:-1
    repl_backlog_active:1
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:1
    repl_backlog_histlen:56
    [root@master redis]# redis-cli
    127.0.0.1:6379> set hello world
    OK
    127.0.0.1:6379> quit
    [root@master redis]# redis-cli -p 6380 get hello
    "world"
    

5.全量复制

[root@master redis]# redis-cli -p 6379 info server | grep run
run_id:26a8b09874078fda0a18b7a1f08c05ddb7ac8ab0
[root@master redis]# redis-cli -p 6380 info server | grep run
run_id:10858f81e4b3be96fefa9b07af1f9e87c31100ea
[root@master redis]# redis-cli -p 6380 info replication
# Replication
role:slave
master_host:127.0.0.1
master_port:6379
master_link_status:up
master_last_io_seconds_ago:4
master_sync_in_progress:0
slave_repl_offset:6218
slave_priority:100
slave_read_only:1
connected_slaves:0
master_replid:e21d4f3793ad9495f4cf9ae6d23d3e426df72cb2
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:6218
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:6218
[root@master redis]# redis-cli -p 6379 info replication
# Replication
role:master
connected_slaves:1
slave0:ip=127.0.0.1,port=6380,state=online,offset=6246,lag=0
master_replid:e21d4f3793ad9495f4cf9ae6d23d3e426df72cb2
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:6246
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:6246
Redis入门到高可用-6.Redis复制的原理与优化_第11张图片
全量复制.png

6.全量复制开销

  • bgsave时间
  • RDB文件网络传输时间
  • 从节点清空数据时间
  • 从节点加载RDB的时间
  • 可能的AOF重写时间
    Redis入门到高可用-6.Redis复制的原理与优化_第12张图片
    部分复制.png

7.故障处理

Redis入门到高可用-6.Redis复制的原理与优化_第13张图片
故障转移.png

Redis入门到高可用-6.Redis复制的原理与优化_第14张图片
slave宕掉1.png

Redis入门到高可用-6.Redis复制的原理与优化_第15张图片
slave宕掉2.png

Redis入门到高可用-6.Redis复制的原理与优化_第16张图片
slave宕掉3.png

Redis入门到高可用-6.Redis复制的原理与优化_第17张图片
master宕掉1.png

Redis入门到高可用-6.Redis复制的原理与优化_第18张图片
master宕掉2.png

Redis入门到高可用-6.Redis复制的原理与优化_第19张图片
master宕掉3.png

Redis入门到高可用-6.Redis复制的原理与优化_第20张图片
master宕掉4.png

Redis入门到高可用-6.Redis复制的原理与优化_第21张图片
故障转移问题.png

7.主从复制开发与运维中的问题

  • 读写分离

    Redis入门到高可用-6.Redis复制的原理与优化_第22张图片
    Redis读写分离.png
  • 主从配置不一致

    Redis入门到高可用-6.Redis复制的原理与优化_第23张图片
    Redis配置不一致.png
  • 规避全量复制

    Redis入门到高可用-6.Redis复制的原理与优化_第24张图片
    Redis规避全量复制.png
  • 规避复制风暴

    Redis入门到高可用-6.Redis复制的原理与优化_第25张图片
    Redis规避复制风暴.png

你可能感兴趣的:(Redis入门到高可用-6.Redis复制的原理与优化)