文件首頁
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.1 資料庫層級的複製與二進位日誌選項評估

在評估複製選項時,副本首先檢查是否有任何 --replicate-do-db--replicate-ignore-db 選項適用。當使用 --binlog-do-db--binlog-ignore-db 時,流程類似,但選項會在來源上檢查。

檢查是否符合的資料庫取決於正在處理的陳述式的二進位日誌格式。如果陳述式是使用列格式記錄的,則檢查要變更資料的資料庫。如果陳述式是使用陳述式格式記錄的,則檢查預設資料庫(以 USE 陳述式指定)。

注意

只有 DML 陳述式可以使用列格式記錄。DDL 陳述式一律記錄為陳述式,即使 binlog_format=ROW 也一樣。因此,所有 DDL 陳述式一律根據基於陳述式的複製規則進行篩選。這表示您必須使用 USE 陳述式明確選取預設資料庫,DDL 陳述式才能套用。

對於複製,涉及的步驟在此列出

  1. 使用哪種記錄格式?

    • 陳述式。  測試預設資料庫。

    • 列。  測試變更影響的資料庫。

  2. 是否有任何 --replicate-do-db 選項?

    • 是。  資料庫是否符合其中任何一個?

      • 是。  繼續步驟 4。

      • 否。  忽略更新並結束。

    • 否。  繼續步驟 3。

  3. 是否有任何 --replicate-ignore-db 選項?

    • 是。  資料庫是否符合其中任何一個?

      • 是。  忽略更新並結束。

      • 否。  繼續步驟 4。

    • 否。  繼續步驟 4。

  4. 繼續檢查資料表層級的複製選項(如果有的話)。如需這些選項檢查方式的說明,請參閱第 19.2.5.2 節,「資料表層級的複製選項評估」

    重要

    在此階段仍然允許的陳述式尚未實際執行。在檢查完所有資料表層級選項(如果有的話),並且該流程的結果允許執行陳述式之前,不會執行該陳述式。

對於二進位日誌,涉及的步驟在此列出

  1. 是否有任何 --binlog-do-db--binlog-ignore-db 選項?

    • 是。 繼續執行步驟 2。

    • 否。 記錄該語句並結束。

  2. 是否有預設資料庫(是否已透過 USE 選取任何資料庫)?

    • 是。 繼續執行步驟 3。

    • 否。 忽略該語句並結束。

  3. 存在預設資料庫。是否有任何 --binlog-do-db 選項?

    • 是。 其中是否有任何選項與該資料庫相符?

      • 是。 記錄該語句並結束。

      • 否。 忽略該語句並結束。

    • 否。  繼續步驟 4。

  4. 是否有任何 --binlog-ignore-db 選項與該資料庫相符?

    • 是。 忽略該語句並結束。

    • 否。 記錄該語句並結束。

重要

對於基於語句的記錄,上述規則中對於 CREATE DATABASEALTER DATABASEDROP DATABASE 語句做了例外處理。在這些情況下,當判斷是否要記錄或忽略更新時,正在建立、變更或刪除的資料庫會取代預設資料庫。

--binlog-do-db 有時可能表示「忽略其他資料庫」。例如,當使用基於語句的記錄時,僅使用 --binlog-do-db=sales 執行的伺服器,不會將預設資料庫與 sales 不同的語句寫入二進位日誌。當使用具有相同選項的基於列的記錄時,伺服器只會記錄那些更改 sales 中資料的更新。