设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 创业者 数据 手机
当前位置: 首页 > 站长学院 > MySql教程 > 正文

一文带你揭开Redis复制原理的神秘面纱(4)

发布时间:2019-09-17 08:52 所属栏目:115 来源:陈龙
导读:从库: [redis@albertsrc]$./redis-cli-p6380 127.0.0.1:6380 127.0.0.1:6380 127.0.0.1:6380INFOreplication #Replication role:slave master_host:127.0.0.1 master_port:6379 master_link_status:up master_last

从库:

  1. [redis@albert src]$ ./redis-cli -p 6380 
  2. 127.0.0.1:6380> 
  3. 127.0.0.1:6380> 
  4. 127.0.0.1:6380> INFO replication 
  5. # Replication 
  6. role:slave 
  7. master_host:127.0.0.1 
  8. master_port:6379 
  9. master_link_status:up 
  10. master_last_io_seconds_ago:6 
  11. master_sync_in_progress:0 
  12. slave_repl_offset:252 
  13. slave_priority:100 
  14. slave_read_only:1 
  15. connected_slaves:0 
  16. master_replid:fc71b19242e8145254ba7751d346a8f4bb4c53c6 
  17. master_replid2:0000000000000000000000000000000000000000 
  18. master_repl_offset:252 
  19. second_repl_offset:-1 
  20. repl_backlog_active:1 
  21. repl_backlog_size:1048576 
  22. repl_backlog_first_byte_offset:1 
  23. repl_backlog_histlen:252 

主库:

  1. [redis@albert src]$ ./redis-cli -p 6379 
  2. 127.0.0.1:6379> INFO replication 
  3. # Replication 
  4. role:master 
  5. connected_slaves:1 
  6. slave0:ip=127.0.0.1,port=6380,state=online,offset=364,lag=0 
  7. master_replid:fc71b19242e8145254ba7751d346a8f4bb4c53c6 
  8. master_replid2:0000000000000000000000000000000000000000 
  9. master_repl_offset:364 
  10. second_repl_offset:-1 
  11. repl_backlog_active:1 
  12. repl_backlog_size:1048576 
  13. repl_backlog_first_byte_offset:1 
  14. repl_backlog_histlen:364 

做一个同步验证

主库发送:

  1. 127.0.0.1:6379> set kebo 24 
  2. OK 

从库接收:

  1. 127.0.0.1:6380> get kebo 
  2. "24" 

Redis的复制功能中,不仅有主从复制,还存在从从复制。从从同步是为了减轻主节点同步的压力,也类似Oracle ADG中的级联设置。

下面详细介绍Redis实现复制的原理过程

场景一,数据初始化

当从数据库启动后,会向主数据库发送SYNC命令,同时主数据库接收到SYNC命令后开始在后台进行快照(持久化),将保存的快照数据发送到从数据库,同时在执行快照期间缓存命令,同时发送到从数据库,这个过程就是数据初始化。初始化完成后,主数据库接收到命令缓存都会同步从数据库,这样形成基本的数据一致性。

从库请求sync同步:

  1. 33570:S 26 Aug 2019 11:54:48.918 * Ready to accept connections 
  2. 33570:S 26 Aug 2019 11:54:48.918 * Connecting to MASTER 127.0.0.1:6379 
  3. 33570:S 26 Aug 2019 11:54:48.918 * MASTER <-> REPLICA sync started 
  4. 33570:S 26 Aug 2019 11:54:48.918 * Non blocking connect for SYNC fired the event. 
  5. 33570:S 26 Aug 2019 11:54:48.918 * Master replied to PING, replication can continue... 
  6. 33570:S 26 Aug 2019 11:54:48.918 * Trying a partial resynchronization (request fc71b19242e8145254ba7751d346a8f4bb4c53c6:2533). 
  7. 33570:S 26 Aug 2019 11:54:48.920 * Full resync from master: b9e0f41a523e078a6a88ae274f204777775ab4dc:0 
  8. 33570:S 26 Aug 2019 11:54:48.920 * Discarding previously cached master state. 
  9. 33570:S 26 Aug 2019 11:54:49.003 * MASTER <-> REPLICA sync: receiving 188 bytes from master 
  10. 33570:S 26 Aug 2019 11:54:49.003 * MASTER <-> REPLICA sync: Flushing old data 
  11. 33570:S 26 Aug 2019 11:54:49.003 * MASTER <-> REPLICA sync: Loading DB in memory 
  12. 33570:S 26 Aug 2019 11:54:49.004 * MASTER <-> REPLICA sync: Finished with success 

(编辑:ASP站长网)

网友评论
推荐文章
    热点阅读