美文网首页
Redis 复制配置

Redis 复制配置

作者: awker | 来源:发表于2018-07-18 20:58 被阅读0次

    参与复制的Redis实例划分为主节点(master)和从节点(slave)。
    默认情况下,Redis都是主节点。每个从节点只能有一个主节点,而主节点可以同时具有多个从节点。
    复制的数据流是单向的,只能由主节点复制到从节点。
    配置复制的方式有以下三种:
    1)在配置文件中加入slaveof{masterHost}{masterPort}随Redis启动生效。
    2)在redis-server启动命令后加入--slaveof{masterHost}{masterPort}生效。
    3)直接使用命令:slaveof{masterHost}{masterPort}生效(配置认证:config set masterauth 123456)。
    1、主节点 redis_6379

    # egrep -v "^#|^$" /etc/redis.d/redis_6379.conf 
    bind 0.0.0.0
    protected-mode yes
    port 6379
    tcp-backlog 511
    timeout 0
    tcp-keepalive 300
    daemonize yes
    supervised no
    pidfile /var/run/redis_6379.pid
    loglevel notice
    logfile /var/log/redis/redis_6379.log
    databases 16
    save 900 1
    save 300 10
    save 60 10000
    stop-writes-on-bgsave-error yes
    rdbcompression yes
    rdbchecksum yes
    dbfilename dump.rdb
    dir /var/lib/redis_6379
    slave-serve-stale-data yes
    slave-read-only yes
    repl-diskless-sync no
    repl-diskless-sync-delay 5
    repl-disable-tcp-nodelay no
    slave-priority 100
    requirepass 123456
    appendonly no
    appendfilename "appendonly.aof"
    appendfsync everysec
    no-appendfsync-on-rewrite no
    auto-aof-rewrite-percentage 100
    auto-aof-rewrite-min-size 64mb
    aof-load-truncated yes
    lua-time-limit 5000
    slowlog-log-slower-than 10000
    slowlog-max-len 128
    latency-monitor-threshold 0
    notify-keyspace-events ""
    hash-max-ziplist-entries 512
    hash-max-ziplist-value 64
    list-max-ziplist-size -2
    list-compress-depth 0
    set-max-intset-entries 512
    zset-max-ziplist-entries 128
    zset-max-ziplist-value 64
    hll-sparse-max-bytes 3000
    activerehashing yes
    client-output-buffer-limit normal 0 0 0
    client-output-buffer-limit slave 256mb 64mb 60
    client-output-buffer-limit pubsub 32mb 8mb 60
    hz 10
    aof-rewrite-incremental-fsync yes
    

    2、从节点 redis_6380

    # egrep -v "^#|^$" /etc/redis.d/redis_6380.conf
    bind 0.0.0.0
    protected-mode yes
    port 6380
    tcp-backlog 511
    timeout 0
    tcp-keepalive 300
    daemonize yes
    supervised no
    pidfile /var/run/redis_6380.pid
    loglevel notice
    logfile /var/log/redis/redis_6380.log
    databases 16
    save 900 1
    save 300 10
    save 60 10000
    stop-writes-on-bgsave-error yes
    rdbcompression yes
    rdbchecksum yes
    dbfilename dump.rdb
    dir /var/lib/redis_6380
    slave-serve-stale-data yes
    slave-read-only yes
    repl-diskless-sync no
    repl-diskless-sync-delay 5
    repl-disable-tcp-nodelay no
    slave-priority 100
    requirepass 123456
    appendonly no
    appendfilename "appendonly.aof"
    appendfsync everysec
    no-appendfsync-on-rewrite no
    auto-aof-rewrite-percentage 100
    auto-aof-rewrite-min-size 64mb
    aof-load-truncated yes
    lua-time-limit 5000
    slowlog-log-slower-than 10000
    slowlog-max-len 128
    latency-monitor-threshold 0
    notify-keyspace-events ""
    hash-max-ziplist-entries 512
    hash-max-ziplist-value 64
    list-max-ziplist-size -2
    list-compress-depth 0
    set-max-intset-entries 512
    zset-max-ziplist-entries 128
    zset-max-ziplist-value 64
    hll-sparse-max-bytes 3000
    activerehashing yes
    client-output-buffer-limit normal 0 0 0
    client-output-buffer-limit slave 256mb 64mb 60
    client-output-buffer-limit pubsub 32mb 8mb 60
    hz 10
    aof-rewrite-incremental-fsync yes
    

    3、在从节点启动复制

    # redis-cli -p 6380 -a 123456
    127.0.0.1:6380> config set masterauth 123456
    OK
    127.0.0.1:6380> slaveof 127.0.0.1 6379
    127.0.0.1:6380> info replication
    # Replication
    role:slave
    master_host:192.168.1.188
    master_port:6379
    master_link_status:up
    master_last_io_seconds_ago:1
    master_sync_in_progress:0
    slave_repl_offset:15
    slave_priority:100
    slave_read_only:1
    connected_slaves:0
    master_repl_offset:0
    repl_backlog_active:0
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:0
    repl_backlog_histlen:0
    

    4、查看主节点状态

    # redis-cli -p 6379 -a 123456
    127.0.0.1:6379> info replication
    # Replication
    role:master
    connected_slaves:1
    slave0:ip=192.168.1.188,port=6380,state=online,offset=1387,lag=0
    master_repl_offset:1387
    repl_backlog_active:1
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:2
    repl_backlog_histlen:1386
    

    5、复制测试

    127.0.0.1:6379> set name imkh
    OK
    127.0.0.1:6379> get name
    "imkh"
     
    127.0.0.1:6380> get name
    "imkh"
    

    6、断开复制
    断开复制主要流程:
    1)断开与主节点复制关系。
    2)从节点晋升为主节点。
    从节点断开复制后并不会抛弃原有数据,只是无法再获取主节点上的数据变化。

    127.0.0.1:6380> slaveof no one
    OK
    127.0.0.1:6380> info replication
    # Replication
    role:master
    connected_slaves:0
    master_repl_offset:2381
    repl_backlog_active:0
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:0
    repl_backlog_histlen:0
     
    127.0.0.1:6379> info replication
    # Replication
    role:master
    connected_slaves:0
    master_repl_offset:2409
    repl_backlog_active:1
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:2
    repl_backlog_histlen:2408
    

    7、切主操作
    切主操作流程如下:
    1)断开与旧主节点复制关系。
    2)与新主节点建立复制关系。
    3)删除从节点当前所有数据。
    4)对新主节点进行复制操作。
    运维提示
    切主后从节点会清空之前所有的数据,线上人工操作时小心slaveof在错误的节点上执行或者指向错误的主节点。

    127.0.0.1:6380> get name
    "imkh"
    127.0.0.1:6380> slaveof 192.168.1.188 6381
    OK
    127.0.0.1:6380> info replication
    # Replication
    role:slave
    master_host:192.168.1.188
    master_port:6381
    master_link_status:up
    master_last_io_seconds_ago:3
    master_sync_in_progress:0
    slave_repl_offset:1
    slave_priority:100
    slave_read_only:1
    connected_slaves:0
    master_repl_offset:0
    repl_backlog_active:0
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:0
    repl_backlog_histlen:0
    127.0.0.1:6380> get name
    (nil)
    127.0.0.1:6380> get age
    "20"
    

    参考:《Redis开发与运维》

    相关文章

      网友评论

          本文标题:Redis 复制配置

          本文链接:https://www.haomeiwen.com/subject/zjmapftx.html