Redis主从复制

Redis主从复制

1.是什么


1.单机有什么问题:


单机故障


容量瓶颈


qps瓶颈


主机数据更新后根据配置和策略,自动同步到备机的master/slaver机制,mester已写为主,slaver已读为主


2.能干嘛


1.读写分离


2.容灾备份


3.怎么玩


玩法原则:


1.配从不配主


2.使用命令 SLAVEOF 动态指定主从关系  ,如果设置了密码,关联后使用 config set masterauth 密码


3.配置文件和命令混合使用时,如果混合使用,动态指定了主从,请注意一定要修改对应的配置文件


1.新建redis8000,redis8001,redis8002文件夹


2.将redis.conf文件复制在redis8000下


3.分别修改个目录下的redis.conf文件


redis8000/redis.conf


1.bind 192.168.0.104   指定本机ip


2.port 8000


3.daemonize yes


4.pidfile /var/run/redis_8000.pid


5.dir /myredis/redis8000


6.requirepass 123456


4.把redis8000/redis.conf文件复制到redis8001,redis8002下


redis8001/redis.conf


1.   :%s/8000/8001/g    批量替换


2.   replicaof 192.168.0.104 8000


3.   masterauth 123456


redis8002/redis.conf


2. replicaof 192.168.0.104 8000 3. masterauth 123456

5.分别启动8000.8001,8002实例


[root@localhost myredis]# /usr/local/bin/redis-server /myredis/redis8000/redis.conf

[root@localhost myredis]# /usr/local/bin/redis-server /myredis/redis8001/redis.conf

[root@localhost myredis]# /usr/local/bin/redis-server /myredis/redis8002/redis.conf


6.客户端连接


/usr/local/bin/redis-cli -h 192.168.0.104 -p 8000 -a 123456


/usr/local/bin/redis-cli -h 192.168.0.104 -p 8001 -a 123456


/usr/local/bin/redis-cli -h 192.168.0.104 -p 8002 -a 123456


工作流程


总体分为大三步:


建立连接


1.设置master的地址和端口,发送slaveof ip port指令,master会返回响应客户端,根据响应信息保存master ip  port信息 (连接测试)


2.根据保存的信息创建连接master的socket


3.周期性发送ping,master会响应pong


4.发送指令 auth password(身份验证),master验证身份


5.发送slave端口信息,master保存slave的端口号


数据同步


1.slave发送指令 psyn2


2.master 执行bgsave


3.在第一个salve连接时,创建命令缓存区


4.生成RDB文件,通过socket发送给slave


5.slave接收RDB,清空数据,执行RDB文件恢复过程


6.发送命令告知RDB恢复已经完成(告知全量复制完成)


7.master发送复制缓冲区信息


8.slave接收信息,执行重写后恢复数据


注意: master会保存slave从我这里拿走了多少数据,保存salve的偏移量


命令传播


slave心跳:replconf    ack     {offset}    汇报slave自己的offset,获取最新数据指令


命令传播阶段出现断网:


  • 网络闪断闪连    忽略
  • 段时间断网     增量
  • 长时间断网     全量


全量复制核心三个要素


  1. 服务器运行id
    用于服务器之间通信验证身份,master首次连接slave时,会将自己的run_id发送给slave,slave保存此ID
  2. 主服务器积压的命令缓冲区
    先进先出队列
  3. 主从服务器的复制偏移量
    用于比对偏移量,然后判断出执行全量还是增量

4.全量复制消耗


1.bgsave时间

2.rdb文件网络传输

3.从节点请求请求数据时间

4.从节点加载rdb的时间

5.可能的aof重写时间


5.缺点


1.由于所有的写操作都是先在Master上操作,然后同步更新到Slave上,所以从Master同步到Slave机器有一定的延迟,当系统很繁忙的时候,延迟问题会更加严重,Slave机器数量的增加也会使这个问题更加严重。


2.当主机宕机之后,将不能进行写操作,需要手动将从机升级为主机,从机需要重新制定master


简单总结:


一个master可以有多个Slave


一个slave只能有一个master


数据流向是单向的,只能从主到从

你可能感兴趣的:(redis)