redis主从同步

redis主从同步

前言

  • redis主从同步

    img

  • 原理

    1. 从服务端向主服务器发送SYNC命令
    2. 接到 SYNC 命令的主服务器会调用BGSAVE 命令,创建一个 RDB 文件,并使用缓冲区记录接下来执行的所有写命令。
    3. 当主服务器执行完BGSAVE命令时,它会向从服务器发送 RDB 文件,而从服务器则会接收并载入这个文件。
    4. 主服务器将缓冲区储存的所有写命令发送给从服务器执行。
  • 1 在开启主从复制的时候,使用的是RDB方式的,同步主从数据的
    2、同步开始之后,通过主库命令传播的方式,主动的复制方式实现
    3、2.8以后实现PSYNC的机制,实现断线重连

环境准备

  • 前言:
    • 这里演示的是一主俩从
    • redis数据库支持多实例
  1. 主redis配置信息

    vim redis-6379.conf

    port 6379   		
    daemonize yes 		  
    pidfile /data/6379/redis.pid
    loglevel notice		
    logfile "/data/6379/redis.log"
    dir /data/6379			
    protected-mode yes 
    dbfilename  dbmp.rdb
    
    save 900 1
    save 300 10 
    save 60 10000
    
  2. 俩从配置信息, redis-6380.conf 和redis-6381.conf 信息一样,除了port不一样

    vim redis-6380.conf

    port 6380   		
    daemonize yes 		  
    pidfile /data/6380/redis.pid
    loglevel notice		
    logfile "/data/6380/redis.log"
    dir /data/6380			
    protected-mode yes 
    dbfilename  dbmp.rdb
    save 900 1
    save 300 10 
    save 60 10000
    slaveof  127.0.0.1 6379
    
  3. 启动三个数据库,

    redis-server /data/6380/redis.conf
    redis-server /data/6381/redis.conf
    redis-server /data/6382/redis.conf
    
  4. 启动三个数据库的实例,查看主从同步关系

    redis-cli -p 6379  info replication 
    redis-cli -p 6380  info replication 
    redis-cli -p 6381  info replication 
    
  5. 测试写入数据,主库写入数据,检查从库数据

    主
    127.0.0.1:6379> set name chaoge
    
    
    从
    127.0.0.1:6381>get name 
    
  6. 模拟主库宕机,然后手动进行主从复制故障切换

    # 查看主库进程
    ps -ef |grep redis
    杀死主库进程
    kill -p 主库进程号
    
  7. 检查从库信息

    redis-cli -p 6380  info replication 
    redis-cli -p 6381  info replication 
    
  8. 关闭6380从库身份

    127.0.0.1:6380>slaveof no one
    
  9. 给6381新的主人身份

    127.0.0.1:6381> SLAVEOF no one
    127.0.0.1:6381> SLAVEOF 127.0.0.1 6381
    
  10. 检查6380和6381的主从信息

  11. 还得修改配置文件,永久生效还得修改配置文件,永久生效还得修改配置文件,永久生效

posted @ 2019-01-19 22:49  云丛  阅读(201)  评论(0编辑  收藏  举报