Redis主从复制看这篇就够了
注意:此时如果生成 RDB 文件过程中存在写数据操作会导致 RDB 文件和当前主 redis 数据不一致,所以此时 master 主进程会开始收集写命令并缓存起来。
注意:后续 master 收到的写命令都会通过开始建立的连接发送给 slave。 当 master 和 slave 的连接断开时 slave 可以自动重新建立连接。如果 master 同时收到多个 slave 发来的同步连接命令,只会启动一个进程来写数据库镜像,然后发送给所有 slave。
在 redis2.8 之前从 redis 每次同步都会从主 redis 中复制全部的数据,如果从 redis 是新创建的从主 redis 中复制全部的数据这是没有问题的,但是,如果当从 redis 停止运行,再启动时可能只有少部分数据和主 redis 不同步,此时启动 redis 仍然会从主 redis 复制全部数据,这样的性能肯定没有只复制那一小部分不同步的数据高。
从机连接主机后,会主动发起 PSYNC 命令,从机会提供 master 的 runid(机器标识,随机生成的一个串) 和 offset(数据偏移量,如果offset主从不一致则说明数据不同步),主机验证 runid 和 offset 是否有效,runid 相当于主机身份验证码,用来验证从机上一次连接的主机,如果 runid 验证未通过则,则进行全同步,如果验证通过则说明曾经同步过,根据 offset 同步部分数据。
使用道具 舉報
本版積分規則 發表回復 回帖並轉播 回帖後跳轉到最後一頁
|關于我們|聯繫我們|合作共赢|免責聲明|隐私条款|Archiver|手機版|拘留所|申請友鏈|付款方式|鲁虺繁体中文社区 |贊助我們 -
GMT+8, 2026-8-29 14:56 , Processed in 0.227013 second(s), 12 queries , WinCache On.
Powered by HCMS 1.0
© 2004-01-11 鲁虺文化网 版权所有