資料庫同步過程,最嚴格的指標,第一是效率,即每秒同步SQL條數;其次是一致性,即主庫產生的資料,備庫同步後是否一致;第三就是資料庫同步的完整性如何保證,即當同步各個環節出現問題時,如何考慮出錯處理,下面我們將分別進行討論並進行合理性分析
第一、效率
資料庫同步過程主要分為三個階段,即抽取、分析、裝載。
抽取過程主要是即時讀取資料庫日誌,這部分可以作到毫秒層級間隔,所以不存在效率問題,基本上可以作到即時抽取;
分析過程主要是分析SQL語句並把源日誌轉化為備庫的可裝載日誌,這部分的主要時間是寫檔案時間,由於普通硬碟寫入時間是50M/秒左右,故對於大交易量情況,如果每秒主庫陣列產生日誌量上300M/秒左右,那相比之下分析組件還是會有秒級延遲的,因為我們同步軟體一般都不安裝在主庫,無法使用高速陣列的寫入速度,所以秒層級延遲還是會產生的,但是只要不是持續高峰日誌量的產生速度,再經過一段時間後資料會自行同步,如果要追求即時抽取的同時又要即時分析,那建議只能給同步伺服器配置一個陣列了;
裝載過程主要是根據分析組件的結果進行備庫SQL語句的裝載,所以並發裝載是提高效率的唯一方法,不過對於備程式庫伺服器配置不是很高的情況,建議資料庫長串連的數目需要能夠合理配置,因為備庫有時會作為查詢統計的負載分擔,所以如果備庫的資源有限,對於查詢統計分擔的效果會大打折扣
第二、一致性
如何能夠保證備庫的資料和主庫一致,這個問題如果在業務層面提出來,大家肯定沒什麼好的辦法,一個共同的回答就是“查看備庫”,用應用去連,之後檢查剛剛同步的資料是正確的就可以了,不過這樣的抽查很有可能檢查不出來特殊錯誤的資料,我想從幾個機制方面來分析這個問題。
1、分析日誌(Analysis Log)
就是即將裝載到備庫的SQL語句,這部分是裝載正確的根本,這部分資料如果正確了,則保證了資料來源的正確。
2、裝載日誌(Upload Log)
就是裝載資料時是否出現問題,有時備庫和主庫表定義有不一致,那麼在這個日誌就會記錄出錯,根據此日誌就能夠檢查出問題出現在什麼地方
通過以上兩個日誌基本能保證同步過程中的錯誤捕捉,同時再加上同步資料檢查程式(此資料需要主、備庫檢查過程中不能更改資料)和應用程式
串連備庫抽查是兩個輔助檢查方式,同時備庫作為查詢統計分析進行即時提供服務也會把抽查變成常態,從而保證資料的一致性。