文件首頁
MySQL 9.0 參考手冊
相關文件 下載本手冊
PDF (美式信紙) - 40.0Mb
PDF (A4) - 40.1Mb
手冊頁 (TGZ) - 258.2Kb
手冊頁 (Zip) - 365.3Kb
資訊 (Gzip) - 4.0Mb
資訊 (Zip) - 4.0Mb


MySQL 9.0 參考手冊  /  ...  /  評估資料庫層級的複製與二進制日誌選項

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. 使用哪種記錄格式?

    • STATEMENT。測試預設資料庫。

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

  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 中變更資料的更新。