zoukankan      html  css  js  c++  java
  • Redis主从同步

    主从同步原理

    1. 从服务器向主服务器发送 SYNC 命令。
    2. 接到 SYNC 命令的主服务器会调用BGSAVE 命令,创建一个 RDB 文件,并使用缓冲区记录接下来执行的所有写命令。
    3. 当主服务器执行完 BGSAVE 命令时,它会向从服务器发送 RDB 文件,而从服务器则会接收并载入这个文件。
    4. 主服务器将缓冲区储存的所有写命令发送给从服务器执行。

    修改配置文件

    vim redis-6379.conf
    
    port 6379
    daemonize yes
    pidfile /data/6379/redis.pid
    loglevel notice
    logfile "/data/6379/redis.log"
    protected-mode yes
    # RDB配置
    dir /data/6379
    dbfilename dbmp.rdb
    save 900 1
    save 300 10
    save 60 10000
    
    # AOF配置
    #appendonly yes
    #appendfsync everysec
    vim redis-6380.conf
    
    port 6380
    daemonize yes
    pidfile /data/6380/redis.pid
    loglevel notice
    logfile "/data/6380/redis.log"
    protected-mode yes
    # RDB配置
    dir /data/6380
    dbfilename dbmp.rdb
    save 900 1
    save 300 10
    save 60 10000
    
    # 主从同步
    slaveof 127.0.0.1 6379
    
    # AOF配置
    #appendonly yes
    #appendfsync everysec
    vim redis-6381.conf
    
    port 6381
    daemonize yes
    pidfile /data/6381/redis.pid
    loglevel notice
    logfile "/data/6381/redis.log"
    protected-mode yes
    # RDB配置
    dir /data/6381
    dbfilename dbmp.rdb
    save 900 1
    save 300 10
    save 60 10000
    
    # 主从同步
    slaveof 127.0.0.1 6379
    
    # AOF配置
    #appendonly yes
    #appendfsync everysec

    启动三个实例

    [root@localhost redis-4.0.12]# redis-server redis-6379.conf 
    [root@localhost redis-4.0.12]# redis-server redis-6380.conf 
    [root@localhost redis-4.0.12]# redis-server redis-6381.conf 

    查看主从状态

    # 6379
    [root@localhost ~]# redis-cli -p 6379 info replication
    # Replication
    role:master
    connected_slaves:2
    slave0:ip=127.0.0.1,port=6380,state=online,offset=196,lag=1
    slave1:ip=127.0.0.1,port=6381,state=online,offset=196,lag=0
    master_replid:0f3b54ebd09f5cc585c33c9872f005f1437d25e1
    master_replid2:0000000000000000000000000000000000000000
    master_repl_offset:196
    second_repl_offset:-1
    repl_backlog_active:1
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:1
    repl_backlog_histlen:196
    # 6380
    [root@localhost ~]# 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:1
    master_sync_in_progress:0
    slave_repl_offset:210
    slave_priority:100
    slave_read_only:1
    connected_slaves:0
    master_replid:0f3b54ebd09f5cc585c33c9872f005f1437d25e1
    master_replid2:0000000000000000000000000000000000000000
    master_repl_offset:210
    second_repl_offset:-1
    repl_backlog_active:1
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:1
    repl_backlog_histlen:210
    # 6381
    [root@localhost ~]# redis-cli -p 6381 info replication
    # Replication
    role:slave
    master_host:127.0.0.1
    master_port:6379
    master_link_status:up
    master_last_io_seconds_ago:0
    master_sync_in_progress:0
    slave_repl_offset:224
    slave_priority:100
    slave_read_only:1
    connected_slaves:0
    master_replid:0f3b54ebd09f5cc585c33c9872f005f1437d25e1
    master_replid2:0000000000000000000000000000000000000000
    master_repl_offset:224
    second_repl_offset:-1
    repl_backlog_active:1
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:1
    repl_backlog_histlen:224

    方式二(不修改配置文件,重启服务后失效):

    操作

    127.0.0.1:6381> slaveof 127.0.0.1 6379
    127.0.0.1:6380> slaveof 127.0.0.1 6379

    查看状态

    [root@localhost ~]# redis-cli -p 6379
    127.0.0.1:6379> info replication
    # Replication
    role:master
    connected_slaves:0
    master_replid:d0fff3d6587307c4d3072cc92a6e16bdd91e291d
    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
    [root@localhost redis-4.0.12]# redis-cli -p 6380
    127.0.0.1:6380> info replication
    # Replication
    role:master
    connected_slaves:0
    master_replid:a9960a82a571793eae37e322143a3ef1caee75e5
    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:6381> info replication
    # Replication
    role:master
    connected_slaves:0
    master_replid:fd7b3f7a0c98a0dcd2fb3d4a7a8b7fde6e09238b
    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
  • 相关阅读:
    awk统计命令(求和、求平均、求最大值、求最小值)(转)
    高性能跨平台网络IO(Reactor、epoll、iocp)总结
    进程通信和同步(转)
    C++11原子操作与无锁编程(转)
    在线代码编译运行工具
    linux ps 命令的查看
    转: linux sed 命令的使用
    转:利用Eclipse CDT 阅读C/C++代码
    转:Raft一致性选举算法的ppt与视频
    转:ffmpeg time_base详解
  • 原文地址:https://www.cnblogs.com/st-st/p/10273217.html
Copyright © 2011-2022 走看看