欢迎来到夜的世界

莫听穿林打叶声,何妨吟啸且徐行。竹杖芒鞋轻胜马,谁怕?一蓑烟雨任平生.料峭春风吹酒醒,微冷,山头斜照却相迎。回首向来萧瑟处,归去,也无风雨也无晴。
扩大
缩小

redis主从同步

      redis 主从同步     

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

-------------
1、在开启主从复制的时候,使用的是RDB方式的,同步主从数据的
2、同步开始之后,通过主库命令传播的方式,主动的复制方式实现
3、2.8以后实现PSYNC的机制,实现断线重连

       实验         

  准备三个redis配置文件,通过端口的区分,启动三个redis数据库实例,然后配置主从复制
1 . 新建三个文件 :

[root@localhost redis-4.0.10]#touch redis-6379.conf 
[root@localhost redis-4.0.10]#touch redis-6380.conf 
[root@localhost redis-4.0.10]#touch redis-6381.conf

2 . 配置各个文件 

[root@localhost redis-4.0.10]# redis-6379.conf 

    port 6379
    daemonize yes
    pidfile /data/6379/redis.pid
    loglevel notice
    logfile "/data/6379/redis.log"
    dbfilename dump.rdb
    dir /data/6379

3 . 创建存放 6380,6381的文件 

mkdir -p /data/{6380,6381}

4 . 快速创建 6380,6381的 redis.conf 的配置 

redis-6380.conf :
    #通过命令快速生成配置文件 (s=替换,g=全局,将6379全部替换成6380,然后写入到redis-6380.conf)

    [root@localhost redis-4.0.10]# sed "s/6379/6380/g" redis-6379.conf > redis-6380.conf 
    [root@localhost redis-4.0.10]# echo "slaveof  127.0.0.1  6379 " >> redis-6380.conf  #追加写入 指明主库的身份ip 和端口

redis-6381.conf :
    #通过命令快速生成配置文件

    [root@localhost redis-4.0.10]# sed "s/6379/6381/g" redis-6379.conf > redis-6381.conf 
    [root@localhost redis-4.0.10]# echo "slaveof  127.0.0.1  6379 " >> redis-6381.conf  #追加写入 指明主库的身份ip 和端口

5 . 启动三个数据库实例,坚持redis主从同步方案 

  启动三个redis 

redis-server redis-6379.conf 
redis-server redis-6380.conf 
redis-server redis-6381.conf 

   查看各个端口的详细信息 

[root@localhost redis-4.0.10]# redis-cli -p 6379 info
    # 查看Replication  授权信息
    #     role: master     角色:主人/主库
    #     connected_slaves:2  从库有2个

[root@localhost redis-4.0.10]# redis-cli -p 6380 info
    # 查看Replication  授权信息
    #     role: slave     角色:奴隶/从库
    #     master_host:127.0.0.1   
    #     master_host:6379   主人信息
    
[root@localhost redis-4.0.10]# redis-cli -p 6381 info
    # 查看Replication  授权信息
    #     role: slave     角色:奴隶/从库
    #     master_host:127.0.0.1   
    #     master_host:6379   主人信息            

 6 . 手动进行主从复制故障切换  

# 1.杀死6379的主库实例
    kill -9 主库

# 2.手动切换主从身份
    1.登录 redis-6380 ,通过命令,去掉自己的从库身份,等待连接
        127.0.0.1:6380 > slaoveof no one  
        127.0.0.1:6380 > info replication   #查看状态
    2.登录redis-6381 ,通过命令,生成新的主人
        slaveof 127.0.0.1 6380  

# 3.测试新的主从数据同步
    #在主库中添加数据 
        127.0.0.1:6380 > set name hhh
        127.0.0.1:6380 > set age 18
        127.0.0.1:6380 > keys *
        "name"
        "age"
        127.0.0.1:6380 >
    # 在登录从库
        127.0.0.1:6380 > keys *
        "name"
        "age"
        127.0.0.1:6380 >
    

 

posted on 2019-01-05 22:00  二十四桥_明月夜  阅读(292)  评论(0编辑  收藏  举报

导航