Redis主從複製的全量和增量同步介紹
全量同步:
1.slave伺服器連線到master伺服器,傳送SYNC命令
slave伺服器透過 syncWithMaster() 函式來連線 Master 伺服器(如果Master伺服器需要密碼登入的話,先登入),並且傳送SYNC命令請求同步,接著開啟 rdb 檔案(用於儲存由Master傳送過來的資料),建立讀rdb 的 IO 事件(readSyncBulkPayload)
2.master伺服器備份資料庫到 .rdb 檔案
當slave伺服器傳送SYNC命令到master伺服器時,master 伺服器變回撥用 syncCommand() 函式來進行同步,同步的第一步便是把資料庫的資料儲存為 rdb 檔案,儲存完畢後呼叫updateSalvesWaitingBgsave()函式來傳送 rdb 檔案給所有的slave 伺服器,updateSlavesWaitingBgsave() 要做的事情是, 開啟 rdb 檔案, 建立傳送 rdb 檔案 IO 事件(sendBulkToSlave). 而sendBulkToSlave()主要的工作就是把rdb檔案傳送給 Slave 伺服器。而當 Slave 伺服器接收 rdb 檔案完畢之後(readSyncBulkPayload()函式處理), 會清空原來資料庫的資料,然後把 rdb 檔案的資料匯入到資料庫中
3.全量同步完成
完成上面的步驟,全量同步基本完成。
增量同步:
增量同步就是當 master 伺服器有資料更新的時候,會立刻同步到所有的 slave 伺服器
1.當我們在 master 伺服器增減資料的時候,就會觸發 replicationFeedSalves()函式,接下來在 Master 伺服器上呼叫的每一個命令都會使用replicationFeedSlaves() 函式來同步到Slave伺服器。當然,在執行此函式之前master 伺服器會判斷使用者執行的命令是否有資料更新,如果有資料更新並且slave 伺服器不為空,才會執行此函式,而此函式主要的工作就是把使用者執行的命令傳送到所有的 slave伺服器,讓 slave 伺服器執行,這樣就可以實施同步功能了。
1.slave伺服器連線到master伺服器,傳送SYNC命令
slave伺服器透過 syncWithMaster() 函式來連線 Master 伺服器(如果Master伺服器需要密碼登入的話,先登入),並且傳送SYNC命令請求同步,接著開啟 rdb 檔案(用於儲存由Master傳送過來的資料),建立讀rdb 的 IO 事件(readSyncBulkPayload)
2.master伺服器備份資料庫到 .rdb 檔案
當slave伺服器傳送SYNC命令到master伺服器時,master 伺服器變回撥用 syncCommand() 函式來進行同步,同步的第一步便是把資料庫的資料儲存為 rdb 檔案,儲存完畢後呼叫updateSalvesWaitingBgsave()函式來傳送 rdb 檔案給所有的slave 伺服器,updateSlavesWaitingBgsave() 要做的事情是, 開啟 rdb 檔案, 建立傳送 rdb 檔案 IO 事件(sendBulkToSlave). 而sendBulkToSlave()主要的工作就是把rdb檔案傳送給 Slave 伺服器。而當 Slave 伺服器接收 rdb 檔案完畢之後(readSyncBulkPayload()函式處理), 會清空原來資料庫的資料,然後把 rdb 檔案的資料匯入到資料庫中
3.全量同步完成
完成上面的步驟,全量同步基本完成。
增量同步:
增量同步就是當 master 伺服器有資料更新的時候,會立刻同步到所有的 slave 伺服器
1.當我們在 master 伺服器增減資料的時候,就會觸發 replicationFeedSalves()函式,接下來在 Master 伺服器上呼叫的每一個命令都會使用replicationFeedSlaves() 函式來同步到Slave伺服器。當然,在執行此函式之前master 伺服器會判斷使用者執行的命令是否有資料更新,如果有資料更新並且slave 伺服器不為空,才會執行此函式,而此函式主要的工作就是把使用者執行的命令傳送到所有的 slave伺服器,讓 slave 伺服器執行,這樣就可以實施同步功能了。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/15498/viewspace-2151660/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Redis主從複製工作原理和步驟介紹Redis
- 用 docker 學習 redis 主從複製2 主從同步的offsetDockerRedis主從同步
- redis持久化和主從複製Redis持久化
- Redis:主從複製Redis
- Redis - 主從複製Redis
- Redis主從複製Redis
- MySQL主從複製配置心跳功能介紹MySql
- MySql主從同步介紹MySql主從同步
- Redis系列(四):Redis的複製機制(主從複製)Redis
- redis系列:主從複製Redis
- Redis 主從複製原理Redis
- redis(14)主從複製Redis
- Redis 主從複製(Replication)Redis
- Redis基礎篇(六)資料同步:主從複製Redis
- MySQL主從複製之半同步複製MySql
- MySQL主從複製之非同步複製MySql非同步
- redis的主從複製的原理Redis
- redis系列--主從複製以及redis複製演進Redis
- Redis的主從複製,哨兵和Cluster叢集Redis
- Redis學習 主從複製(master-replica)架構介紹及實現RedisAST架構
- 主從複製--非同步篇非同步
- Redis主從複製流程概述Redis
- Redis主從複製原理剖析Redis
- Redis 主從複製與哨兵Redis
- redis 主從複製實現Redis
- redis-23.主從複製Redis
- Redis-14-主從複製Redis
- redis學習十四、Redis主從複製Redis
- MySQL 5.7的安裝及主從複製(主從同步)MySql主從同步
- redis建立主從複製的過程Redis
- MySQL5.7主從複製-半同步複製搭建MySql
- MySQL-主從複製之同步主從資料MySql
- Windows 環境下,MySQL 的主從複製和主主複製WindowsMySql
- windows環境下,Mysql的主從複製和主主複製WindowsMySql
- 詳談Redis主從複製原理Redis
- Redis 主從複製技術原理Redis
- Redis主從複製那點事Redis
- redis-23.主從複製-概念Redis