redis主从复制

  • redis支持多实例的功能,一台机器上,可以运行多个单个的redis数据库

  • 环境准备,运行3个redis数据库,达到1主2从的配置

    #主库 6379
    port 6379
    daemonize yes
    pidfile /data/6379/redis.pid
    loglevel notice
    logfile "/data/6379/redis.log"
    dbfilename dump.rdb
    dir /data/6379
    
    #从库 6380
    port 6380
    daemonize yes
    pidfile /data/6380/redis.pid
    loglevel notice
    logfile "/data/6380/redis.log"
    dbfilename dump.rdb
    dir /data/6380
    slaveof  127.0.0.1  6379
    
    #从库 6381  
    port 6381
    daemonize yes
    pidfile /data/6381/redis.pid
    loglevel notice
    logfile "/data/6381/redis.log"
    dbfilename dump.rdb
    dir /data/6381
    slaveof  127.0.0.1  6379 
    
  • 在对应的data目录下建配置中对应的文件夹 存放持久化文件

    mkdir /data/{6379,6380,6381}
    
  • 开启主从复制

    redis-server 6379.conf
    redis-server 6380.conf
    redis-server 6381.conf   #开启三个redis库 之后可以直接通过端口调用
    
    redis-cli info   #查看数据库信息
    redis-cli info replication  
    
    #在从库上配置主从信息,如果不想每次写 在配置文件中就直接写入也可以,上面已经写好了
    redis-cli -p 6380 slaveof 127.0.0.1 6379
    redis-cli -p 6381 slaveof 127.0.0.1 6379
    
    #这时通过检查发现 主从关系已经建立
    redis-cli -p 6379 info replication 
    redis-cli -p 6380 info replication  
    redis-cli -p 6381 info replication  
    
  • 主从复制 本质是读写分离,即主库可以读写,从库只读

  • 模拟主从复制故障,手动切换master-slave身份

    #1.杀死6379进程 ,干掉主库 
    kill -9 6379的进程id
    #2.手动切换 6381为新的主库,需要先关闭它的从库身份
    redis-cli -p 6381  slaveof no one 
    
    #3.修改6380的新主库是 6381
    redis-cli -p 6380 slaveof  127.0.0.1 6381
    
原文地址:https://www.cnblogs.com/kevin6/p/11799514.html