文件首頁
MySQL 8.4 參考手冊
相關文件 下載本手冊
PDF (美式信紙) - 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.2 表格層級複製選項的評估

僅當以下兩種情況之一為真時,副本才會檢查並評估表格選項

首先,作為初步條件,副本會檢查是否啟用基於陳述式的複製。如果是,且陳述式發生在預存函數內,則副本會執行該陳述式並退出。如果啟用基於列的複製,則副本不知道陳述式是否發生在來源上的預存函數內,因此此條件不適用。

注意

對於基於陳述式的複製,複製事件表示陳述式(構成特定事件的所有變更都與單一 SQL 陳述式相關聯);對於基於列的複製,每個事件表示單一資料表列中的變更(因此,單一陳述式(例如 UPDATE mytable SET mycol = 1)可能會產生許多基於列的事件)。從事件的角度來看,檢查表格選項的過程對於基於列和基於陳述式的複製都是相同的。

到達此處後,如果沒有表格選項,則副本會直接執行所有事件。如果有任何 --replicate-do-table--replicate-wild-do-table 選項,則事件必須符合其中一個選項才能執行;否則,將會忽略該事件。如果有任何 --replicate-ignore-table--replicate-wild-ignore-table 選項,則會執行所有事件,但符合任何這些選項的事件除外。

重要

表格層級的複製篩選器僅適用於查詢中明確提及和操作的資料表。它們不適用於查詢隱式更新的資料表。例如,GRANT 陳述式會更新 mysql.user 系統資料表,但未提及該資料表,因此不受指定 mysql.% 作為萬用字元模式的篩選器影響。

下列步驟更詳細地描述了此評估。起點是資料庫層級選項評估的結束,如第 19.2.5.1 節 「資料庫層級複製和二進制日誌選項的評估」所述。

  1. 是否有任何資料表複製選項?

    • 是。 繼續執行步驟 2。

    • 否。 執行更新並結束。

  2. 使用哪種日誌格式?

    • STATEMENT。 針對執行更新的每個語句執行剩餘步驟。

    • ROW。 針對資料表列的每次更新執行剩餘步驟。

  3. 是否有任何 --replicate-do-table 選項?

    • 是。 資料表是否符合任何一個?

      • 是。 執行更新並結束。

      • 否。 繼續執行步驟 4。

    • 否。 繼續執行步驟 4。

  4. 是否有任何 --replicate-ignore-table 選項?

    • 是。 資料表是否符合任何一個?

      • 是。 忽略更新並結束。

      • 否。 繼續執行步驟 5。

    • 否。 繼續執行步驟 5。

  5. 是否有任何 --replicate-wild-do-table 選項?

    • 是。 資料表是否符合任何一個?

      • 是。 執行更新並結束。

      • 否。 繼續執行步驟 6。

    • 否。 繼續執行步驟 6。

  6. 是否有任何 --replicate-wild-ignore-table 選項?

    • 是。 資料表是否符合任何一個?

      • 是。 忽略更新並結束。

      • 否。 繼續執行步驟 7。

    • 否。 繼續執行步驟 7。

  7. 是否有另一個資料表需要測試?

    • 是。 回到步驟 3。

    • 否。 繼續執行步驟 8。

  8. 是否有任何 --replicate-do-table--replicate-wild-do-table 選項?

    • 是。 忽略更新並結束。

    • 否。 執行更新並結束。

注意

如果單個 SQL 語句同時操作由 --replicate-do-table--replicate-wild-do-table 選項包含的資料表,以及由 --replicate-ignore-table--replicate-wild-ignore-table 選項忽略的另一個資料表時,基於語句的複製會停止。從機必須執行或忽略整個語句(構成一個複製事件),但它在邏輯上無法這樣做。這也適用於 DDL 語句的基於列的複製,因為 DDL 語句始終以語句的形式記錄,而與生效的日誌格式無關。唯一可以更新包含的資料表和忽略的資料表,並仍能成功複製的語句類型,是用 binlog_format=ROW 記錄的 DML 語句。