文件首頁
MySQL 8.4 參考手冊
相關文件 下載本手冊
PDF (US Ltr) - 39.9Mb
PDF (A4) - 40.0Mb
Man Pages (TGZ) - 258.5Kb
Man Pages (Zip) - 365.5Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 參考手冊  /  ...  /  伺服器如何評估複製篩選規則

19.2.5 伺服器如何評估複製篩選規則

如果複製來源伺服器沒有將陳述式寫入其二進制日誌,則不會複製該陳述式。如果伺服器記錄了該陳述式,則該陳述式會傳送到所有副本,且每個副本會判斷是否執行或忽略它。

在來源上,您可以使用 --binlog-do-db--binlog-ignore-db 選項來控制要記錄哪些資料庫的變更,以控制二進制日誌記錄。如需伺服器在評估這些選項時使用的規則的說明,請參閱 第 19.2.5.1 節「評估資料庫層級複製和二進制日誌選項」。您不應使用這些選項來控制要複製哪些資料庫和表格。相反地,請使用副本上的篩選來控制在副本上執行的事件。

在副本端,關於是否執行或忽略從來源接收的陳述式的決策,是根據副本啟動時使用的 --replicate-* 選項所做出的。(請參閱 第 19.1.6 節「複製和二進制日誌選項與變數」。)這些選項所控制的篩選器也可以使用 CHANGE REPLICATION FILTER 陳述式動態設定。無論是在啟動時使用 --replicate-* 選項建立,還是在副本伺服器執行時使用 CHANGE REPLICATION FILTER 建立,管理這些篩選器的規則都相同。請注意,在為群組複製設定的 MySQL 伺服器實例上,無法在群組複製特定的通道上使用複製篩選器,因為在某些伺服器上篩選交易會使群組無法就一致的狀態達成共識。

在最簡單的情況下,當沒有 --replicate-* 選項時,副本會執行它從來源接收的所有陳述式。否則,結果取決於給定的特定選項。

資料庫層級選項(--replicate-do-db--replicate-ignore-db)會優先檢查;有關此流程的描述,請參閱第 19.2.5.1 節〈資料庫層級複寫和二進位日誌選項的評估〉。如果未使用任何資料庫層級選項,則會繼續檢查可能正在使用的任何資料表層級選項(有關這些選項的討論,請參閱第 19.2.5.2 節〈資料表層級複寫選項的評估〉)。如果使用了一個或多個資料庫層級選項,但沒有任何選項符合,則不會複寫該語句。

對於僅影響資料庫的語句(即 CREATE DATABASEDROP DATABASEALTER DATABASE),資料庫層級選項始終優先於任何 --replicate-wild-do-table 選項。換句話說,對於此類語句,只有在沒有適用的資料庫層級選項時,才會檢查 --replicate-wild-do-table 選項。

為了更容易確定給定選項集的效果,建議您避免混用 do-*ignore-* 選項,或包含萬用字元的選項與不包含萬用字元的選項。

如果指定了任何 --replicate-rewrite-db 選項,它們會在測試 --replicate-* 過濾規則之前應用。

注意

所有複寫過濾選項都遵循與 MySQL 伺服器中其他位置的資料庫和資料表名稱相同的區分大小寫規則,包括 lower_case_table_names 系統變數的影響。

過濾規則會在執行任何權限檢查之前應用;如果交易被過濾掉,則不會對該交易執行任何權限檢查,因此不會因此產生任何錯誤。有關更多資訊,請參閱第 19.5.1.29 節〈複寫期間的副本錯誤〉