企业级Redis开发运维从入门到实践 (20)— runid和偏移量

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zx711166/article/details/82986186

数据同步

Redis在2.8及以上版本使用psync命令完成主从数据同步,同步过程分为:全量复制和部分复制

  • 全量复制:一般用于初次复制场景,Redis早期支持的复制功能只有全量复制,它会把主节点全部数据一次性发送给从节点,当数据量较大时,会对主从节点和网络造成很大的开销。
  • 部分复制:用于处理在主从复制中因网络闪断等原因造成的数据丢失场景,当从节点再次连上主节点后,如果条件允许,主节点会补发丢失数据给从节点。因为补发的数据远远小于全量数据,可以有效避免全量复制的过高开销。

部分复制是对老版复制的重大优化,有效避免了不必要的全量复制操 作。因此当使用复制功能时,尽量采用2.8以上版本的Redis。
psync命令运行需要以下组件支持:

  • 主Redis的复制偏移量(replication offset)和从Redis的复制偏移量。
  • 主Redis的复制积压缓冲区(replication backlog)。
  • Redis的运行ID(run ID)。

runid

Redis 服务器的随机标识符(用于 Sentinel 和集群),重启后就会改变;当复制时发现和之前的 run_id 不同时,将会对数据全量同步。

[root@localhost data]# redis-cli -p 6379 info server | grep run
run_id:345dda992e5064bc80e01f96ea90f729b722b2ea
[root@localhost data]# redis-cli -p 6380 info server | grep run
run_id:cd46b4591e3d8984bc984223ed4321f8c6f9981b

复制偏移量

通过对比主从节点的复制偏移量,可以判断主从节点数据是否一致。

  1. 参与复制的主从节点都会维护自身复制偏移量。主节点(master)在处理完写入命令后,会把命令的字节长度做累加记录,统计信息在info relication中的master_repl_offset指标中:
127.0.0.1:6379> info replication 
# Replication 
role:master 
... 
master_repl_offset:1055130
  1. 从节点(slave)每秒钟上报自身的复制偏移量给主节点,因此主节点也会保存从节点的复制偏移量,统计指标如下:
127.0.0.1:6379> info replication 
connected_slaves:1 slave0:ip=127.0.0.1,port=6380,state=online,offset=1055214,lag=1 
...
  1. 从节点在接收到主节点发送的命令后,也会累加记录自身的偏移量。统计信息在info relication中的slave_repl_offset指标中:
127.0.0.1:6380> info replication 
# Replication 
role:slave 
... 
slave_repl_offset:1055214

猜你喜欢

转载自blog.csdn.net/zx711166/article/details/82986186