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
- MySQL主從複製、半同步複製和主主複製MySql
- MySQL主從複製、半同步複製和主主複製概述MySql
- redis學習筆記——主從同步(複製)Redis筆記主從同步
- 用 docker 學習 redis 主從複製2 主從同步的offsetDockerRedis主從同步
- Redis - 主從複製Redis
- Redis:主從複製Redis
- Redis主從複製Redis
- redis持久化和主從複製Redis持久化
- MySQL的主從複製、半同步複製、主主複製詳解MySql
- MySQL主從複製配置心跳功能介紹MySql
- Redis系列(四):Redis的複製機制(主從複製)Redis
- Redis 主從複製原理Redis
- Redis 主從複製(Replication)Redis
- redis系列:主從複製Redis
- redis(14)主從複製Redis
- redis主從複製例子Redis
- 配置mysql5.5主從複製、半同步複製、主主複製MySql
- redis的主從複製的原理Redis
- Redis基礎篇(六)資料同步:主從複製Redis
- MySql主從同步介紹MySql主從同步
- MySQL主從複製的詳細過程介紹MySql
- redis系列--主從複製以及redis複製演進Redis
- 【Redis】Redis 主從複製之一Redis
- MySQL主從複製之半同步複製MySql
- MySQL主從複製之非同步複製MySql非同步
- 主從複製、雙主複製及半同步複製、以及基於SSL的複製
- 主從複製--非同步篇非同步
- MySQL主主複製(雙主複製)配置過程介紹MySql
- Redis學習 主從複製(master-replica)架構介紹及實現RedisAST架構
- Redis 主從複製與哨兵Redis
- redis 主從複製實現Redis
- redis-23.主從複製Redis
- Redis主從複製流程概述Redis
- Redis主從複製原理剖析Redis
- Redis-14-主從複製Redis
- Redis 4.0主從複製配置Redis
- Docker Redis映象 主從複製DockerRedis