W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
邏輯復(fù)制從拷貝發(fā)布者數(shù)據(jù)庫上的數(shù)據(jù)庫快照開始??截愐坏┩瓿?,發(fā)布者上的更改會在它們發(fā)生時實時傳送給訂閱者。訂閱者按照數(shù)據(jù)在發(fā)布者上被提交的順序應(yīng)用數(shù)據(jù),這樣任意單一訂閱中的發(fā)布的事務(wù)一致性才能得到保證。
邏輯復(fù)制被構(gòu)建在一種類似于物理流復(fù)制(見第 26.2.5 節(jié))的架構(gòu)上。它由“walsender”和“apply”進(jìn)程實現(xiàn)。walsender進(jìn)程開始對WAL的邏輯解碼(在 第 48 章中描述)并且載入標(biāo)準(zhǔn)邏輯解碼插件(pgoutput)。該插件把從WAL中讀取的更改轉(zhuǎn)換成邏輯復(fù)制協(xié)議(見第 52.5 節(jié))并且根據(jù)發(fā)布說明過濾數(shù)據(jù)。然后數(shù)據(jù)會被連續(xù)地使用流復(fù)制協(xié)議傳輸?shù)綉?yīng)用工作者,應(yīng)用工作者會把數(shù)據(jù)映射到本地表并且以正確的事務(wù)順序應(yīng)用它們接收到的更改。
訂閱者數(shù)據(jù)庫上的應(yīng)用進(jìn)程總是將session_replication_role
設(shè)置為replica
運行,這會產(chǎn)生觸發(fā)器和約束上通常的效果。
邏輯復(fù)制應(yīng)用進(jìn)程當(dāng)前僅會引發(fā)行觸發(fā)器,而不會引發(fā)語句觸發(fā)器。不過,初始的表同步是以類似一個COPY
命令的方式實現(xiàn)的,因此會引發(fā)INSERT
的行觸發(fā)器和語句觸發(fā)器。
已有的被訂閱表中的初始數(shù)據(jù)會被快照并且以一種特殊類型的應(yīng)用進(jìn)程的并行實例進(jìn)行拷貝。這種進(jìn)程將創(chuàng)建自己的臨時復(fù)制槽并且拷貝現(xiàn)有的數(shù)據(jù)。一旦現(xiàn)有的數(shù)據(jù)被拷貝完,工作者會進(jìn)入到同步模式,主應(yīng)用進(jìn)程會流式傳遞在使用標(biāo)準(zhǔn)邏輯復(fù)制拷貝初始數(shù)據(jù)期間發(fā)生的任意改變,這會確保表被帶到一種已同步的狀態(tài)。一旦同步完成,該表的復(fù)制的控制權(quán)會被交回給主應(yīng)用進(jìn)程,其中復(fù)制會照常繼續(xù)。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: