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


MySQL 9.0 參考手冊  /  ...  /  從失敗的複製權限檢查中復原

19.3.3.3 從失敗的複製權限檢查中復原

如果針對 PRIVILEGE_CHECKS_USER 帳戶的權限檢查失敗,則不會執行交易,且該通道的複製會停止。錯誤詳細資料和上次套用的交易會記錄在 Performance Schema 的 replication_applier_status_by_worker 資料表中。請依照下列程序從錯誤中復原

  1. 找出導致錯誤的複製事件,並驗證事件是否為預期的,以及是否來自受信任的來源。您可以使用 mysqlbinlog 來擷取並顯示發生錯誤前後記錄的事件。如需執行此操作的指示,請參閱 第 9.5 節,「時間點 (增量) 復原」

  2. 如果複製的事件並非預期,或並非來自已知且受信任的來源,請調查原因。如果您可以找出事件發生的原因,且沒有安全考量,請繼續修正錯誤,如下所述。

  3. 如果應該允許 PRIVILEGE_CHECKS_USER 帳戶執行交易,但組態錯誤,請將遺失的權限授與該帳戶,使用 FLUSH PRIVILEGES 陳述式或執行 mysqladmin flush-privilegesmysqladmin reload 命令來重新載入授與資料表,然後重新啟動該通道的複製。

  4. 如果需要執行交易,且您已驗證它是受信任的,但 PRIVILEGE_CHECKS_USER 帳戶正常情況下不應擁有此權限,您可以暫時將必要的權限授與 PRIVILEGE_CHECKS_USER 帳戶。套用複製的事件後,請從帳戶中移除權限,並採取任何必要步驟,以確保該事件不會再次發生 (如果可以避免)。

  5. 如果交易是僅應在來源端執行,而不應在複本上執行的管理動作,或是僅應在單一複寫群組成員上執行,請在停止複寫的伺服器上略過該交易,然後發出 START REPLICA 來重新啟動通道上的複寫。為避免未來發生這種情況,您可以在執行這些管理語句之前先發出 SET sql_log_bin = 0,執行之後再發出 SET sql_log_bin = 1,使其不會記錄在來源端。

  6. 如果交易是 DDL 或 DML 語句,不應在來源端或複本上執行,請在停止複寫的伺服器上略過該交易,在原始執行的伺服器上手動還原該交易,然後發出 START REPLICA 來重新啟動複寫。

若要略過交易,如果正在使用 GTID,請提交一個具有失敗交易的 GTID 的空交易,例如

SET GTID_NEXT='aaa-bbb-ccc-ddd:N';
BEGIN;
COMMIT;
SET GTID_NEXT='AUTOMATIC';

如果未使用 GTID,請發出 SET GLOBAL sql_replica_skip_counter 語句以略過該事件。如需使用此替代方法以及更多關於略過交易的詳細資訊,請參閱第 19.1.7.3 節,「略過交易」