本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
為適用於 RDS My 的現有僅供讀取複本啟用 GTID型複寫SQL
對於具有未使用 GTID型複寫的現有 MySQL 資料庫執行個體,您可以在資料庫執行個體與僅供讀取複本之間設定 GTID型複寫。
為現有僅供讀取複本啟用 GTID型複寫
-
如果資料庫執行個體或任何僅供讀取複本使用 8.0 版RDS的 for MySQL 版本低於 8.0.26,請將資料庫執行個體或僅供讀取複本升級至 8.0.26 或更新版本的 MySQL 8.0 版本。All RDS for MySQL 8.4 版本和 5.7 版本都支援 GTID型複寫。
如需詳細資訊,請參閱RDS for MySQL 資料庫引擎的升級。
-
(選用) 重設GTID參數並測試資料庫執行個體和僅供讀取複本的行為:
-
確定與資料庫執行個體和每個僅供讀取複本相關聯的參數群組有設定為
enforce_gtid_consistency
的WARN
參數。如需使用參數群組設定組態參數的詳細資訊,請參閱Amazon RDS 的參數群組。
-
如果已變更資料庫執行個體的參數群組,請重新啟動資料庫執行個體。如果已變更僅供讀取複本的參數群組,請重新啟動僅供讀取複本。
如需更多詳細資訊,請參閱 重新啟動中的資料庫執行個體。
-
對於一般的工作負載執行資料庫執行個體和僅供讀取複本,並監視日誌檔案。
如果您看到 GTID不相容交易的警告,請調整您的應用程式,使其僅使用 GTID相容的功能。在繼續下一個步驟之前,請確定資料庫執行個體未產生有關 GTID不相容交易的任何警告。
-
-
重設 GTID型複寫的GTID參數,允許匿名交易,直到僅供讀取複本處理所有這些項目為止。
-
確定與資料庫執行個體有關的參數群組和每個僅供讀取複本有下列參數設定:
-
gtid_mode
–ON_PERMISSIVE
-
enforce_gtid_consistency
–ON
-
-
如果已變更資料庫執行個體的參數群組,請重新啟動資料庫執行個體。如果已變更僅供讀取複本的參數群組,請重新啟動僅供讀取複本。
-
-
等候全部的匿名交易完成複寫。若要檢查這些是否已複寫,請執行下列動作:
-
對於來源資料庫執行個體執行下列陳述式。
我的SQL 8.4
SHOW BINARY LOG STATUS;
我的SQL 5.7 和 8.0
SHOW MASTER STATUS;
請注意
File
和Position
欄中的值。 -
對於每個僅供讀取複本,在上一個步驟中使用來源執行個體的檔案和位置資訊來執行下列查詢。
SELECT MASTER_POS_WAIT('
file
',position
);例如,如果檔案名稱是
mysql-bin-changelog.000031
,而且位置是107
,則執行下列陳述式。SELECT MASTER_POS_WAIT('mysql-bin-changelog.000031', 107);
如果僅供讀取複本已超過指定的位置,會立即傳回查詢。否則,該函式會等候一段時間。所有僅供讀取複本的查詢傳回時,繼續進行下一個步驟。
-
-
僅重設 GTID型複寫的GTID參數。
-
確定與資料庫執行個體有關的參數群組和每個僅供讀取複本有下列參數設定:
-
gtid_mode
–ON
-
enforce_gtid_consistency
–ON
-
-
重新啟動資料庫執行個體和每個僅供讀取複本。
-
-
在每個僅供讀取複本上,執行下列程序。
我的SQL 8.4 和更新的主要版本
CALL mysql.rds_set_source_auto_position(1);
我的SQL 8.0 和更低的主要版本
CALL mysql.rds_set_master_auto_position(1);