設定、啟動及停止二進位記錄 (binlog) 複寫 - Amazon Relational Database Service

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

設定、啟動及停止二進位記錄 (binlog) 複寫

下列預存程序控制如何將交易從外部資料庫複製到 [我RDS的]SQL,或從 RDS [我] 複製SQL到外部資料庫。

將來源資料庫執行個體日誌位置變更為來源資料庫執行個體上下一個二進位日誌的開頭。只有當您在僅供讀取複本上收到複寫輸入/輸出錯誤 1236 時,才使用此程序。

語法

CALL mysql.rds_next_master_log( curr_master_log );

參數

curr_master_log

目前主控端日誌檔案的索引。例如,若目前檔案的名稱是 mysql-bin-changelog.012345,則索引為 12345。若要查明目前主控端日誌檔案名稱,請執行 SHOW REPLICA STATUS 命令並檢視 Master_Log_File 欄位。

注意

以前版本的我SQL使用SHOW SLAVE STATUS而不是SHOW REPLICA STATUS. 如果您使用的是 8.0.23 之前的「我的SQL版本」,請使用. SHOW SLAVE STATUS

使用須知

主要使用者必須執行 mysql.rds_next_master_log 程序。

警告

只有當複寫來源的異地同步備份資料庫執行個體在容錯移轉之後複寫失敗時,且 mysql.rds_next_master_logLast_IO_Errno 欄位報告輸入/輸出錯誤 1236,才呼叫 SHOW REPLICA STATUS

在容錯移轉事件發生之前,如果來源執行個體中的交易未寫入磁碟上的二進位日誌,則呼叫 mysql.rds_next_master_log 會導致僅供讀取複本遺失資料。

您可以將來源執行個體參數 sync_binloginnodb_support_xa 設為 1,以降低此情況發生的機率,雖然這麼做會降低效能。如需詳細資訊,請參閱疑難排解 My 僅供SQL讀取複本問題

範例

假設我的 SQL Aurora 我的僅RDS供SQL複寫失敗。在僅供讀取複本上執行 SHOW REPLICA STATUS\G 將傳回下列結果:

*************************** 1. row *************************** Replica_IO_State: Source_Host: myhost.XXXXXXXXXXXXXXX.rr-rrrr-1.rds.amazonaws.com Source_User: MasterUser Source_Port: 3306 Connect_Retry: 10 Source_Log_File: mysql-bin-changelog.012345 Read_Source_Log_Pos: 1219393 Relay_Log_File: relaylog.012340 Relay_Log_Pos: 30223388 Relay_Source_Log_File: mysql-bin-changelog.012345 Replica_IO_Running: No Replica_SQL_Running: Yes Replicate_Do_DB: Replicate_Ignore_DB: Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: Last_Errno: 0 Last_Error: Skip_Counter: 0 Exec_Source_Log_Pos: 30223232 Relay_Log_Space: 5248928866 Until_Condition: None Until_Log_File: Until_Log_Pos: 0 Source_SSL_Allowed: No Source_SSL_CA_File: Source_SSL_CA_Path: Source_SSL_Cert: Source_SSL_Cipher: Source_SSL_Key: Seconds_Behind_Master: NULL Source_SSL_Verify_Server_Cert: No Last_IO_Errno: 1236 Last_IO_Error: Got fatal error 1236 from master when reading data from binary log: 'Client requested master to start replication from impossible position; the first event 'mysql-bin-changelog.013406' at 1219393, the last event read from '/rdsdbdata/log/binlog/mysql-bin-changelog.012345' at 4, the last byte read from '/rdsdbdata/log/binlog/mysql-bin-changelog.012345' at 4.' Last_SQL_Errno: 0 Last_SQL_Error: Replicate_Ignore_Server_Ids: Source_Server_Id: 67285976

Last_IO_Errno 欄位顯示執行個體收到輸入/輸出錯誤 1236。Master_Log_File 欄位顯示檔案名稱是 mysql-bin-changelog.012345,這表示日誌檔案索引為 12345。若要解決錯誤,您可以呼叫 mysql.rds_next_master_log 並指定下列參數:

CALL mysql.rds_next_master_log(12345);
注意

以前版本的我SQL使用SHOW SLAVE STATUS而不是SHOW REPLICA STATUS. 如果您使用的是 8.0.23 之前的「我的SQL版本」,請使用. SHOW SLAVE STATUS

My SQL 資料庫執RDS行個體重新設定為不再是 Amazon 外部執行之 My SQL 執行個體的僅供讀取複本。RDS

重要

若要執行此程序,必須啟用 autocommit。若要啟用它,請將 autocommit 參數設定為 1。如需修改參數的相關資訊,請參閱修改 Amazon RDS Amazon 數據庫參數組中的參數

語法

CALL mysql.rds_reset_external_master;

使用須知

主要使用者必須執行 mysql.rds_reset_external_master 程序。此程序必須在 My SQL DB 執行個體上執行,才能將其移除為在 Amazon 外部執行的 My SQL 執行個體的僅供讀取複本RDS。

注意

我們建議您盡可能使用僅供讀取複本來管理兩個 Amazon RDS 資料庫執行個體之間的複寫。當您這麼做時,建議您僅使用此程序和其他與複寫相關的預存程序。這些實務可在 Amazon RDS 資料庫執行個體之間啟用更複雜的複寫拓撲。我們提供這些預存程序主要是為了讓在 Amazon 外部執行的 My SQL 執行個體進行複寫RDS。如需管理 Amazon 資RDS料庫執行個體之間複寫的資訊,請參閱使用資料庫執行個體僅供讀取複本

如需使用複寫將資料從 Amazon 外部執行的 My SQL 執行個體匯入資料的詳細資訊RDS,請參閱使用外部來源執行個體設定二進位日誌檔案位置複寫

My SQL 資SQL料庫執行個體設定為 Amazon 外部執行的 My SQL 執行個體的僅供讀取複本。RDS

重要

若要執行此程序,必須啟用 autocommit。若要啟用它,請將 autocommit 參數設定為 1。如需修改參數的相關資訊,請參閱修改 Amazon RDS Amazon 數據庫參數組中的參數

注意

您可以使用 mysql.rds_set_external_master_with_delay 預存程序來設定外部來源資料庫執行個體與延遲的複寫。

語法

CALL mysql.rds_set_external_master ( host_name , host_port , replication_user_name , replication_user_password , mysql_binary_log_file_name , mysql_binary_log_file_location , ssl_encryption );

參數

host_name

在 Amazon 外部執行之 My SQL 執行個體的主機名稱或 IP 位址,以成為RDS來源資料庫執行個體。

host_port

在 Amazon 外部執行的 My SQL 執行個體所使用的連接埠,RDS以設定為來源資料庫執行個體。如果您的網路組態包含可轉換連接埠號碼的 Secure Shell (SSH) 連接埠複寫,請指定所公開的連接埠號碼SSH。

replication_user_name

在 Amazon 外部執行的 My SQL 執行個體上具有REPLICATION CLIENTREPLICATION SLAVE許可的使用者識別碼RDS。我們建議您提供單獨用於外部執行個體複寫的帳戶。

replication_user_password

replication_user_name 中指定之使用者 ID 的密碼。

mysql_binary_log_file_name

來源資料庫執行個體上包含複寫資訊之二進位日誌的名稱。

mysql_binary_log_file_location

複寫在 mysql_binary_log_file_name 二進位日誌中開始讀取複寫資訊的位置。

您可以藉由在來源資料庫執行個體上執行 SHOW MASTER STATUS 來判斷 binlog 檔案名稱和位置。

ssl_encryption

指定複寫連線是否使用安全通訊端層 (SSL) 加密的值。1 指定使用SSL加密,0 表示不使用加密。預設值為 0。

注意

不支援 MASTER_SSL_VERIFY_SERVER_CERT 選項。此選項設定為 0,表示連線已加密,但憑證未經過驗證。

使用須知

主要使用者必須執行 mysql.rds_set_external_master 程序。必須在 My SQL DB 執行個體上執行此程序,才能設定為在 Amazon 外部執行之 My SQL 執行個體的僅供讀取複本RDS。

在執行之前mysql.rds_set_external_master,您必須將 Amazon 外部 My 執行的SQL執行個體設定RDS為來源資料庫執行個體。若要連線到 Amazon 外部SQL執行的 My 執行個體RDS,您必須指定replication_user_namereplication_user_password值,指出具有 My 外部執行個體REPLICATION CLIENTREPLICATION SLAVE許可的複寫使用者SQL。

將 My 的外部執行處理設定SQL為來源資料庫執行處理
  1. 使用您選擇的 [我的用戶SQL端] 連線至 [My] 的外部執行個體,SQL並建立用於複寫的使用者帳戶。以下是範例。

    我的 SQL 5

    CREATE USER 'repl_user'@'mydomain.com' IDENTIFIED BY 'password';

    我SQL的

    CREATE USER 'repl_user'@'mydomain.com' IDENTIFIED WITH mysql_native_password BY 'password';
    注意

    指定此處所顯示提示以外的密碼,作為安全最佳實務。

  2. 在 My 的外部執行個體上SQL,授REPLICATION CLIENT與和REPLICATION SLAVE權限給您的複寫使用者。下列範例將所有資料庫上的 REPLICATION CLIENTREPLICATION SLAVE 權限授予您網域中的 'repl_user' 使用者。

    我的 SQL 5

    GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl_user'@'mydomain.com' IDENTIFIED BY 'password';

    我SQL的

    GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl_user'@'mydomain.com';

若要使用加密複寫,請設定來源資料庫執行處理使用SSL連線。

注意

我們建議您盡可能使用僅供讀取複本來管理兩個 Amazon RDS 資料庫執行個體之間的複寫。當您這麼做時,建議您僅使用此程序和其他與複寫相關的預存程序。這些實務可在 Amazon RDS 資料庫執行個體之間啟用更複雜的複寫拓撲。我們提供這些預存程序主要是為了讓在 Amazon 外部執行的 My SQL 執行個體進行複寫RDS。如需管理 Amazon 資RDS料庫執行個體之間複寫的資訊,請參閱使用資料庫執行個體僅供讀取複本

在呼叫mysql.rds_set_external_master將 Amazon RDS 資料庫執行個體設定為僅供讀取複本後,您可以呼叫mysql.rds_start_replication僅供讀取複本以開始複寫程序。您可以呼叫 來移除僅供讀取複本組態。

mysql.rds_set_external_master叫時,Amazon 會set master在和mysql.rds_replication_status表中RDS記錄的時間、使用者mysql.rds_history和動作。

範例

在 My SQL DB 執行個體上執行時,下列範例會將資料庫執行個體設定為 Amazon 外部 My SQL 執行個體的僅供讀取複本。RDS

call mysql.rds_set_external_master( 'Externaldb.some.com', 3306, 'repl_user', 'password', 'mysql-bin-changelog.0777', 120, 0);

mysql.rds_set_external_master_with_auto_position

將 My SQL DB 執行個體設定RDS為 Amazon 外部執行的 My SQL 執行個體的僅供讀取複本。RDS此程序也會根據全域交易識別碼 () GTIDs 來設定延遲複寫和複寫。

重要

若要執行此程序,必須啟用 autocommit。若要啟用它,請將 autocommit 參數設定為 1。如需修改參數的相關資訊,請參閱修改 Amazon RDS Amazon 數據庫參數組中的參數

語法

CALL mysql.rds_set_external_master_with_auto_position ( host_name , host_port , replication_user_name , replication_user_password , ssl_encryption , delay );

參數

host_name

在 Amazon 外部執行之 My SQL 執行個體的主機名稱或 IP 位址,以成為RDS來源資料庫執行個體。

host_port

在 Amazon 外部執行的 My SQL 執行個體所使用的連接埠,RDS以設定為來源資料庫執行個體。如果您的網路組態包含可轉換連接埠號碼的 Secure Shell (SSH) 連接埠複寫,請指定所公開的連接埠號碼SSH。

replication_user_name

在 Amazon 外部執行的 My SQL 執行個體上具有REPLICATION CLIENTREPLICATION SLAVE許可的使用者識別碼RDS。我們建議您提供單獨用於外部執行個體複寫的帳戶。

replication_user_password

replication_user_name 中指定之使用者 ID 的密碼。

ssl_encryption

指定複寫連線是否使用安全通訊端層 (SSL) 加密的值。1 指定使用SSL加密,0 表示不使用加密。預設值為 0。

注意

不支援 MASTER_SSL_VERIFY_SERVER_CERT 選項。此選項設定為 0,表示連線已加密,但憑證未經過驗證。

delay

從來源資料庫執行個體延遲複寫的最低秒數。

此參數的限制為一日 (86400 秒)。

使用須知

主要使用者必須執行 mysql.rds_set_external_master_with_auto_position 程序。必須在 My SQL DB 執行個體上執行此程序,才能設定為在 Amazon 外部執行之 My SQL 執行個體的僅供讀取複本RDS。

我的 SQL 5.7 版本以及我RDS的 SQL 8.0.26 及RDS更高版本 8.0 版本都支援此程序。

在執行之前mysql.rds_set_external_master_with_auto_position,您必須將 Amazon 外部 My 執行的SQL執行個體設定RDS為來源資料庫執行個體。若要連線到 Amazon 外部SQL執行的 My 執行個體RDS,您必須指定replication_user_name和的值replication_user_password。這些值必須指出具有 My 外部執行個體REPLICATION CLIENTREPLICATION SLAVE權限的複寫使用者SQL。

將 My 的外部執行處理設定SQL為來源資料庫執行處理
  1. 使用您選擇的 [我的用戶SQL端] 連線至 [My] 的外部執行個體,SQL並建立用於複寫的使用者帳戶。以下是範例。

    CREATE USER 'repl_user'@'mydomain.com' IDENTIFIED BY 'SomePassW0rd'
  2. 在 My 的外部執行個體上SQL,授REPLICATION CLIENT與和REPLICATION SLAVE權限給您的複寫使用者。下列範例將所有資料庫上的 REPLICATION CLIENTREPLICATION SLAVE 權限授予您網域中的 'repl_user' 使用者。

    GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl_user'@'mydomain.com' IDENTIFIED BY 'SomePassW0rd'

如需詳細資訊,請參閱使用外部來源執行個體設定二進位日誌檔案位置複寫

注意

我們建議您盡可能使用僅供讀取複本來管理兩個 Amazon RDS 資料庫執行個體之間的複寫。當您這麼做時,建議您僅使用此程序和其他與複寫相關的預存程序。這些實務可在 Amazon RDS 資料庫執行個體之間啟用更複雜的複寫拓撲。我們提供這些預存程序主要是為了讓在 Amazon 外部執行的 My SQL 執行個體進行複寫RDS。如需管理 Amazon 資RDS料庫執行個體之間複寫的資訊,請參閱使用資料庫執行個體僅供讀取複本

在呼叫之前mysql.rds_set_external_master_with_auto_position,請務必呼叫已清除的 MySQL 集外部資料來源以使用外部來源的指定GTID範圍設定gtid_purged系統變數。

在呼叫mysql.rds_set_external_master_with_auto_position將 Amazon RDS 資料庫執行個體設定為僅供讀取複本後,您可以呼叫mysql.rds_start_replication僅供讀取複本以開始複寫程序。您可以呼叫 來移除僅供讀取複本組態。

當您撥打電話時mysql.rds_set_external_master_with_auto_position,Amazon 會set master在和mysql.rds_replication_status表中RDS記錄時間、使用者mysql.rds_history和動作。

進行災難復原時,您可以透過 預存程序來使用此程序。若要變更延遲的僅供讀取複本,並向前捲動到災難發生前的時間點,可以執行 mysql.rds_set_external_master_with_auto_position 程序。在 mysql.rds_start_replication_until_gtid 程序停止複寫後,您可使用 提升僅供讀取複本為獨立的資料庫執行個體 中的說明來提升該僅供讀取複本成為新的主要資料庫執行個體。

若要使用此mysql.rds_rds_start_replication_until_gtid程序,必須啟用GTID基礎複製。若要略過已知會造成災難的特定GTID基礎交易,您可以使用預存程序。如需使用GTID基礎複製的詳細資訊,請參閱使用GTID基礎複製

範例

在 My SQL DB 執行個體上執行時,下列範例會將資料庫執行個體設定為 Amazon 外部 My SQL 執行個體的僅供讀取複本。RDS它將 My SQL 資料庫執行個體上的最小複寫延遲設定為一小時 (3,600 秒)。我的資料庫執行個體在 Amazon 外部執行的 My SQL 來源資料庫執行個體的變更至少一小時內RDS不會套用至少在 My SQL DB 執行個體僅供讀取複本上。

call mysql.rds_set_external_master_with_auto_position( 'Externaldb.some.com', 3306, 'repl_user', 'SomePassW0rd', 0, 3600);

mysql.rds_set_external_master_with_delay

將 My SQL DB 執SQL行個體設定RDS為在 Amazon 外部執行的 My 執行個體的僅供讀取複本,RDS並設定延遲複寫。

重要

若要執行此程序,必須啟用 autocommit。若要啟用它,請將 autocommit 參數設定為 1。如需修改參數的相關資訊,請參閱修改 Amazon RDS Amazon 數據庫參數組中的參數

語法

CALL mysql.rds_set_external_master_with_delay( host_name , host_port , replication_user_name , replication_user_password , mysql_binary_log_file_name , mysql_binary_log_file_location , ssl_encryption , delay );

參數

host_name

Amazon 外部執行之 My SQL 執行個體的主機名稱或 IP 位址,RDS該執行個體將成為來源資料庫執行個體。

host_port

在 Amazon 外部執行的 My SQL 執行個體所使用的連接埠,RDS以設定為來源資料庫執行個體。如果您的網路組態包含可轉換SSH連接埠號碼的連接埠複製,請指定所公開的連接埠號碼SSH。

replication_user_name

在 Amazon 外部執行的 My SQL 執行個體上具有REPLICATION CLIENTREPLICATION SLAVE許可的使用者識別碼RDS。我們建議您提供單獨用於外部執行個體複寫的帳戶。

replication_user_password

replication_user_name 中指定之使用者 ID 的密碼。

mysql_binary_log_file_name

來源資料庫執行個體上包含複寫資訊之二進位日誌的名稱。

mysql_binary_log_file_location

mysql_binary_log_file_name 二進位日誌中的複寫將開始讀取複寫資訊的位置。

您可以藉由在來源資料庫執行個體上執行 SHOW MASTER STATUS 來判斷 binlog 檔案名稱和位置。

ssl_encryption

指定複寫連線是否使用安全通訊端層 (SSL) 加密的值。1 指定使用SSL加密,0 表示不使用加密。預設值為 0。

注意

不支援 MASTER_SSL_VERIFY_SERVER_CERT 選項。此選項設定為 0,表示連線已加密,但憑證未經過驗證。

delay

從來源資料庫執行個體延遲複寫的最低秒數。

此參數的限制為一日 (86400 秒)。

使用須知

主要使用者必須執行 mysql.rds_set_external_master_with_delay 程序。必須在 My SQL DB 執行個體上執行此程序,才能設定為在 Amazon 外部執行之 My SQL 執行個體的僅供讀取複本RDS。

在執行之前mysql.rds_set_external_master_with_delay,您必須將 Amazon 外部 My 執行的SQL執行個體設定RDS為來源資料庫執行個體。若要連線到 Amazon 外部SQL執行的 My 執行個體RDS,您必須指定replication_user_name和的值replication_user_password。這些值必須指出具有 My 外部執行個體REPLICATION CLIENTREPLICATION SLAVE權限的複寫使用者SQL。

將 My 的外部執行處理設定SQL為來源資料庫執行處理
  1. 使用您選擇的 [我的用戶SQL端] 連線至 [My] 的外部執行個體,SQL並建立用於複寫的使用者帳戶。以下是範例。

    CREATE USER 'repl_user'@'mydomain.com' IDENTIFIED BY 'SomePassW0rd'
  2. 在 My 的外部執行個體上SQL,授REPLICATION CLIENT與和REPLICATION SLAVE權限給您的複寫使用者。下列範例將所有資料庫上的 REPLICATION CLIENTREPLICATION SLAVE 權限授予您網域中的 'repl_user' 使用者。

    GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl_user'@'mydomain.com' IDENTIFIED BY 'SomePassW0rd'

如需詳細資訊,請參閱使用外部來源執行個體設定二進位日誌檔案位置複寫

注意

我們建議您盡可能使用僅供讀取複本來管理兩個 Amazon RDS 資料庫執行個體之間的複寫。當您這麼做時,建議您僅使用此程序和其他與複寫相關的預存程序。這些實務可在 Amazon RDS 資料庫執行個體之間啟用更複雜的複寫拓撲。我們提供這些預存程序主要是為了讓在 Amazon 外部執行的 My SQL 執行個體進行複寫RDS。如需管理 Amazon 資RDS料庫執行個體之間複寫的資訊,請參閱使用資料庫執行個體僅供讀取複本

在呼叫mysql.rds_set_external_master_with_delay將 Amazon RDS 資料庫執行個體設定為僅供讀取複本後,您可以呼叫mysql.rds_start_replication僅供讀取複本以開始複寫程序。您可以呼叫 來移除僅供讀取複本組態。

當您撥打電話時mysql.rds_set_external_master_with_delay,Amazon 會set master在和mysql.rds_replication_status表中RDS記錄時間、使用者mysql.rds_history和動作。

進行災難復原時,您可以透過 預存程序來使用此程序。若要變更延遲的僅供讀取複本,並向前捲動到災難發生前的時間點,可以執行 mysql.rds_set_external_master_with_delay 程序。在 mysql.rds_start_replication_until 程序停止複寫後,您可使用 提升僅供讀取複本為獨立的資料庫執行個體 中的說明來提升該僅供讀取複本成為新的主要資料庫執行個體。

若要使用此mysql.rds_rds_start_replication_until_gtid程序,必須啟用GTID基礎複製。若要略過已知會造成災難的特定GTID基礎交易,您可以使用預存程序。如需使用GTID基礎複製的詳細資訊,請參閱使用GTID基礎複製

mysql.rds_set_external_master_with_delay程序適用於「我的」RDS 的以下版本SQL:

  • 我的 SQL 8.0.26 及更高版本 8.0 版本

  • 所有 5.7 版

範例

在 My SQL DB 執行個體上執行時,下列範例會將資料庫執行個體設定為 Amazon 外部 My SQL 執行個體的僅供讀取複本。RDS它將 My SQL 資料庫執行個體上的最小複寫延遲設定為一小時 (3,600 秒)。我的資料庫執行個體在 Amazon 外部執行的 My SQL 來源資料庫執行個體的變更至少一小時內RDS不會套用至少在 My SQL DB 執行個體僅供讀取複本上。

call mysql.rds_set_external_master_with_delay( 'Externaldb.some.com', 3306, 'repl_user', 'SomePassW0rd', 'mysql-bin-changelog.000777', 120, 0, 3600);

已清除的 MySQL 集外部資料來源

使用來自外部來源的指定GTID範圍設定 gtid_pur ted 的系統變數。若要配置以 auto 定位為GTID基礎的複製,需要此gtid_purged值才能繼續複製。

重要

若要執行此程序,必須啟用 autocommit。若要啟用它,請將 autocommit 參數設定為 1。如需修改參數的相關資訊,請參閱修改 Amazon RDS Amazon 數據庫參數組中的參數

語法

CALL mysql.rds_set_external_source_gtid_purged( server_uuid , start_pos , end_pos );

參數

server_uuid

從中匯入GTID範圍之外部伺服器的通用唯一識別碼 (UUID)。

start_pos

要設置的GTID範圍的起始位置。

end_pos

要設置的GTID範圍的結束位置。

使用須知

mysql.rds_set_external_source_gtid_purged過程僅適用於我的 SQL 8.0.37 和更高版本 8.0 版本。

mysql.rds_set_external_source_gtid_purged在打電話mysql.rds_set_external_master_with_auto_position或之前致電使用自動位置 _ 通道的 mysql.rds_set_外部源_來源

在您呼叫之前mysql.rds_set_external_source_gtid_purged,請務必停止資料庫的所有使用中複寫通道。若要檢查頻道的狀態,請使用 SHOW REPLICA STATUS My SQL 陳述式。若要停止通道上的複寫,請呼叫我們的域名 _ 停止複製 _ 通道

您指定的GTID範圍必須是現有GTID_PURGED值的超集合。此預存程序會在設定值之前檢查下列GTID_PURGED值:

  • server_uuid有效的。

  • 的值大start_pos0和小於的值end_pos

  • 的值大end_pos於或等於的值start_pos

如果外部伺服器上的GTID集合包含多個值範圍,請考慮使用不同的GTID集合值多次呼叫程序。

當您撥打電話時mysql.rds_set_external_source_gtid_purged,Amazon 會set gtid_purged在表格中RDS記錄時間、使用者和動mysql.rds_history作。

如果您未正確設定用於複寫之備份的gtid_purged值,這可能會導致在複寫程序期間遺失或重複作業事件。執行下列步驟來設定正確的gtid_purged值。

若要在複本上設定 gtid_已清除的值
  1. 決定要用作複製起點的時間點或特定備份檔案。這可能是邏輯備份(mysqldump 文件)或物理備份(Amazon RDS 快照)。

  2. 確定gtid_executed值。這個值代表伺服器上所有GTIDs認可的集合。若要擷取此值,請在來源執行環境上執行下列其中一項作業:

    • 執行備份SELECT @@GLOBAL.GTID_EXECUTED;時的SQL陳述式。

    • 如果相應的備份公用程式中包含任何相關選項,請從備份檔案中擷取值。如需詳細資訊,請參閱我的SQL文件中的set-gtid-purged選項。

  3. gtid_purged定要用於呼叫的值mysql.rds_set_external_source_gtid_purged。GTIDs此gtid_purged值應包含在來源執行個體上執行的所有值,而且不再需要進行複製。因此,該gtid_purged值應該是您在上一個步驟中擷取的gtid_executed值的子集。

    若要判斷gtid_purged值,請識別備份中未包含且不再需要進行複寫的值。GTIDs您可以通過分析二進制日誌或使用 mysqlbinlog 之類的工具來查找從二進制日誌中清除的GTIDs日誌來完成此操作。

    或者,如果您擁有一致的備份,其中包含直到備份點之前的所有二進位記錄檔,則可以將該gtid_purged值設定為與備份點的gtid_executed值相同。

  4. 確定與備份一致的適當gtid_purged值之後,請呼叫 My SQL DB 執行個體上RDS的mysql.rds_set_external_source_gtid_purged預存程序來設定值。

範例

在 My SQL DB 執行個體上執行時,下列GTID範例會使用的開始位置和結束位置 UUID12345678-abcd-1234-efgh-123456789abc,設定外部 My SQL 伺服器的範圍1001產生的GTID值設定為+12345678-abcd-1234-efgh-123456789abc:1-100

CALL mysql.rds_set_external_source_gtid_purged('12345678-abcd-1234-efgh-123456789abc', 1, 100);

將複製模式設定為以二進位記錄檔位置或全域交易識別碼 (GTIDs) 為基礎。

語法

CALL mysql.rds_set_master_auto_position ( auto_position_mode );

參數

auto_position_mode

指出要使用記錄檔位置複製還是以記錄檔GTID為基礎的複製的值:

  • 0 – 使用依據二進制日誌檔案位置的複寫模式。預設值為 0

  • 1— 使用GTID基於複製的方法。

使用須知

主要使用者必須執行 mysql.rds_set_master_auto_position 程序。

我的 SQL 5.7 版本以及我RDS的 SQL 8.0.26 及RDS更高版本 8.0 版本都支援此程序。

mysql.rds_set_source_delay

設定最低秒數,以延遲來源資料庫執行個體到目前僅供讀取複本的複寫。當您連線到僅供讀取複本時,請使用此程序來延遲從來源資料庫執行個體的複寫。

語法

CALL mysql.rds_set_source_delay( delay );

參數

delay

從來源資料庫執行個體延遲複寫的最低秒數。

此參數的限制為一日 (86400 秒)。

使用須知

主要使用者必須執行 mysql.rds_set_source_delay 程序。

進行災難復原時,您可以透過 預存程序或 預存程序來使用此程序。若要變更延遲的僅供讀取複本,並向前捲動到災難發生前的時間點,可以執行 mysql.rds_set_source_delay 程序。在 mysql.rds_start_replication_untilmysql.rds_start_replication_until_gtid 程序停止複寫後,您可使用提升僅供讀取複本為獨立的資料庫執行個體中的說明來提升該僅供讀取複本成為新的主要資料庫執行個體。

若要使用此mysql.rds_rds_start_replication_until_gtid程序,必須啟用GTID基礎複製。若要略過已知會造成災難的特定GTID基礎交易,您可以使用預存程序。如需有關GTID基於複製的詳細資訊,請參閱使用GTID基礎複製

mysql.rds_set_source_delay程序適用於「我的」RDS 的以下版本SQL:

  • 我的 SQL 8.0.26 及更高版本 8.0 版本

  • 所有 5.7 版

範例

若要延遲來源資料庫執行個體到目前僅供讀取複本的複寫至少一小時 (3,600 秒),您可透過下列參數呼叫 mysql.rds_set_source_delay

CALL mysql.rds_set_source_delay(3600);

mysql.rds_skip_repl_error

略過並刪除 My SQL DB 僅供讀取複本上的複寫錯誤。

語法

CALL mysql.rds_skip_repl_error;

使用須知

主要使用者必須在僅供讀取複本上執行 mysql.rds_skip_repl_error 程序。如需有關此程序的詳細資訊,請參閱呼叫 mysql.rds_skip_repl_error 程序

若要判斷是否有錯誤,請執行 My SQL SHOW REPLICA STATUS\G 命令。如果複寫錯誤不嚴重,您可以執行 mysql.rds_skip_repl_error 來略過錯誤。如果有多個錯誤,mysql.rds_skip_repl_error 會刪除第一個錯誤,然後警告還有其他錯誤。然後,您可以使用 SHOW REPLICA STATUS\G,以針對下一個錯誤判斷正確的行動步驟。如需有關傳回值的詳細資訊,請參閱 My SQL 文件中的SHOWREPLICASTATUS陳述式

注意

以前版本的我SQL使用SHOW SLAVE STATUS而不是SHOW REPLICA STATUS. 如果您使用的是 8.0.23 之前的「我的SQL版本」,請使用. SHOW SLAVE STATUS

如需使用 Amazon 解決複寫錯誤的詳細資訊RDS,請參閱疑難排解 My 僅供SQL讀取複本問題

複寫已停止錯誤

當您呼叫 mysql.rds_skip_repl_error 程序時,可能會收到錯誤訊息,指出複本已關閉或停用。

如果您在主要執行個體而非僅供讀取複本上執行程序,此錯誤訊息就會出現。您必須在僅供讀取複本上執行此程序,程序才能運作。

如果您在僅供讀取複本上執行程序,但複寫無法成功重新啟動,此錯誤訊息也可能出現。

如果您需要略過大量錯誤,複寫延遲可能增加至超出二進位日誌(binlog) 檔案的預設保留期間。在此情況下,由於在清除 binlog 檔案之前已在僅供讀取複本上重播該檔案,您可能會遇到嚴重錯誤。此清除動作會導致複寫停止,而您將無法再呼叫 mysql.rds_skip_repl_error 命令來略過複寫錯誤。

透過增加 binlog 檔案在來源資料庫執行個體上保留的小時數,即可以減輕此問題。在延長二進位記錄檔保留時間之後,您可以重新啟動複寫,並視需要呼叫 mysql.rds_skip_repl_error 命令。

若要設定 binlog 保留時間,請使用 mysql.rds_set_configuration 程序,並指定 'binlog retention hours'組態參數加上資料庫叢集上保留 binlog 檔案的時數。下列範例會將 binlog 檔案的保留期間設定為 48 小時。

CALL mysql.rds_set_configuration('binlog retention hours', 48);

mysql.rds_start_replication

從我的資料庫執行個RDS體 Aurora 我的SQL資料SQL庫啟動複寫。

注意

您可以使用預存程序從 My SQL DB 執RDS行個體啟動複寫,並在指定的二進位記錄檔位置停止複寫。

語法

CALL mysql.rds_start_replication;

使用須知

主要使用者必須執行 mysql.rds_start_replication 程序。

若要將資料從 My SQL 外部的執行個體匯入 AmazonRDS,請mysql.rds_start_replication在呼叫mysql.rds_set_external_master建立複寫組態後呼叫僅供讀取複本以啟動複寫程序。如需詳細資訊,請參閱將備份還原至 Amazon RDS for MySQL 資料庫執行個體

若要將資料匯出至 Amazon SQL 外部 My 執行個體RDS,請在僅供讀取複本mysql.rds_stop_replication上呼叫mysql.rds_start_replication和以控制某些複寫動作,例如清除二進位記錄。如需詳細資訊,請參閱使用複寫從 My SQL DB 執行個體匯出資料

您也可以對僅供讀取複本呼叫 mysql.rds_start_replication,以重新啟動您先前呼叫 mysql.rds_stop_replication 所停止的任何複寫程序。如需詳細資訊,請參閱使用資料庫執行個體僅供讀取複本

My SQL DB 執行個RDS體 Aurora My SQL DB 啟動複寫,並在指定的二進位記錄檔位置停止複寫。

語法

CALL mysql.rds_start_replication_until ( replication_log_file , replication_stop_point );

參數

replication_log_file

來源資料庫執行個體上包含複寫資訊之二進位日誌的名稱。

replication_stop_point

replication_log_file 二進位日誌中的複寫將停止的位置。

使用須知

主要使用者必須執行 mysql.rds_start_replication_until 程序。

mysql.rds_start_replication_until程序適用於「我的」RDS 的以下版本SQL:

  • 我的 SQL 8.0.26 及更高版本 8.0 版本

  • 所有 5.7 版

您可以透過延遲複寫來使用此程序進行災難復原。若您已延遲複寫設定,您可使用此程序變更延遲的僅供讀取複本,並向前捲動到災難發生前的時間點。在此程序停止複寫後,您可使用 提升僅供讀取複本為獨立的資料庫執行個體 中的說明來提升該僅供讀取複本成為新的主要資料庫執行個體。

您可使用以下預存程序來設定延遲複寫:

replication_log_file 參數的指定檔名必須與來源資料庫執行個體 binlog 檔案的名稱相同。

replication_stop_point 參數指定了過去的一個停止位置,複寫即會立即停止。

範例

以下範例會啟動複寫並複寫變更,直到達到 120 二進位日誌檔案中的位置 mysql-bin-changelog.000777 為止。

call mysql.rds_start_replication_until( 'mysql-bin-changelog.000777', 120);

mysql.rds_stop_replication

停止從 My SQL DB 執行個體複寫。

語法

CALL mysql.rds_stop_replication;

使用須知

主要使用者必須執行 mysql.rds_stop_replication 程序。

如果您將複寫設定為從 Amazon 外部執行的 My SQL 執行個體匯入資料RDS,請mysql.rds_stop_replication在匯入完成後呼叫僅供讀取複本以停止複寫程序。如需詳細資訊,請參閱將備份還原至 Amazon RDS for MySQL 資料庫執行個體

如果您將複寫設定為將資料匯出到 Amazon SQL 外部 My 的執行個體RDS,請在僅供讀取複本mysql.rds_stop_replication上呼叫mysql.rds_start_replication和控制某些複寫動作,例如清除二進位記錄。如需詳細資訊,請參閱使用複寫從 My SQL DB 執行個體匯出資料

您也可以使用mysql.rds_stop_replication停止兩個 Amazon RDS 資料庫執行個體之間的複寫。您停止複寫通常是為了在僅供讀取複本上執行長時間的操作,例如在僅供讀取複本上建立大型索引。您可以在僅供讀取複本上呼叫 mysql.rds_start_replication,以重新啟動您已停止的任何複寫程序。如需詳細資訊,請參閱使用資料庫執行個體僅供讀取複本