設定、啟動和停止二進位日誌 (binlog) 複寫 - Amazon Relational Database Service

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

設定、啟動和停止二進位日誌 (binlog) 複寫

下列預存程序會控制如何將交易從外部資料庫複寫至 RDS for MySQL,或從 RDS for MySQL 複寫至外部資料庫。

使用這些預存程序來管理使用 設定的複寫使用者的複寫時caching_sha2_password,您必須透過指定 TLS來設定 SOURCE_SSL=1caching_sha2_password是 RDS MySQL 8.4 的預設身分驗證外掛程式。如需詳細資訊,請參閱 使用 SSL/ 加密TLS

如需有關設定、使用和管理僅供讀取複本的資訊,請參閱 使用我的SQL僅供讀取複本

mysql.rds_next_master_log (RDS for MariaDB and RDS for MySQL major version 8.0 and lower)

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

語法

CALL mysql.rds_next_master_log( curr_master_log );

參數

curr_master_log

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

使用須知

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

警告

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

在容錯移轉事件發生之前,如果來源執行個體中的交易未寫入磁碟上的二進位日誌,則呼叫 mysql.rds_next_master_log 會導致僅供讀取複本遺失資料。您可以將來源執行個體參數 innodb_support_xa sync_binlog和 設定為 ,以降低發生這種情況的機率1,即使這可能會降低效能。如需詳細資訊,請參閱 疑難排解 My 僅供SQL讀取複本問題

範例

假設 RDS MyAuroraSQL 僅供讀取複本上的複寫失敗。在僅供讀取複本上執行 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);

mysql.rds_next_source_log (RDS適用於我的SQL主要版本 8.4 和更新版本)

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

語法

CALL mysql.rds_next_source_log( curr_source_log );

參數

curr_source_log

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

使用須知

管理使用者必須執行 mysql.rds_next_source_log 程序。

警告

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

在容錯移轉事件發生之前,如果來源執行個體中的交易未寫入磁碟上的二進位日誌,則呼叫 mysql.rds_next_source_log 會導致僅供讀取複本遺失資料。您可以將來源執行個體參數 innodb_support_xa sync_binlog和 設定為 ,以降低發生這種情況的機率1,即使這可能會降低效能。如需詳細資訊,請參閱 疑難排解 My 僅供SQL讀取複本問題

範例

假設 RDS MyAuroraSQL 僅供讀取複本上的複寫失敗。在僅供讀取複本上執行 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_Source: NULL Source_SSL_Verify_Server_Cert: No Last_IO_Errno: 1236 Last_IO_Error: Got fatal error 1236 from source when reading data from binary log: 'Client requested source 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。Source_Log_File 欄位顯示檔案名稱是 mysql-bin-changelog.012345,這表示日誌檔案索引為 12345。若要解決錯誤,您可以呼叫 mysql.rds_next_source_log 並指定下列參數:

CALL mysql.rds_next_source_log(12345);

mysql.rds_reset_external_master (RDS for MariaDB and RDS for MySQL major version 8.0 and lower)

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

重要

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

語法

CALL mysql.rds_reset_external_master;

使用須知

主要使用者必須執行 mysql.rds_reset_external_master 程序。此程序必須在 MySQL 資料庫執行個體上執行,才能移除為在 Amazon 外部執行之 MySQL 執行個體的僅供讀取複本RDS。

注意

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

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

mysql.rds_reset_external_source (RDS適用於我的SQL主要版本 8.4 和更新版本)

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

重要

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

語法

CALL mysql.rds_reset_external_source;

使用須知

管理使用者必須執行 mysql.rds_reset_external_source 程序。此程序必須在 MySQL 資料庫執行個體上執行,才能移除為在 Amazon 外部執行之 MySQL 執行個體的僅供讀取複本RDS。

注意

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

如需管理 Amazon RDS 資料庫執行個體之間複寫的資訊,請參閱 使用資料庫執行個體僅供讀取複本。如需使用複寫從在 Amazon 外部執行的 MySQL 執行個體匯入資料的詳細資訊RDS,請參閱 使用外部來源執行個體設定二進位日誌檔案位置複寫

mysql.rds_set_external_master (RDS for MariaDB and RDS for MySQL major version 8.0 and lower)

RDS for MyAuroraSQL 資料庫執行個體設定為在 Amazon 外部執行之 MySQL 執行個體的僅供讀取複本RDS。

重要

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

注意

您可以使用 mysql.rds_set_external_master_with_delay (RDS適用於 MariaDB RDS 和適用於我的SQL主要版本 8.0 及更低版本) 預存程序來設定外部來源資料庫執行個體與延遲的複寫。

語法

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 外部執行的 MySQL 執行個體的主機名稱或 IP 地址RDS,以成為來源資料庫執行個體。

host_port

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

replication_user_name

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

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

指定是否在複寫連線上使用 Secure Socket Layer (SSL) 加密的值。1 指定使用SSL加密,0 指定不使用加密。預設值為 0。

注意

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

使用須知

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

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

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

    我的SQL 5.7

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

    我的SQL 8.0

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

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

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

    我的SQL 5.7

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

    我的SQL 8.0

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

若要使用加密複寫,請將來源資料庫執行個體設定為使用SSL連線。

注意

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

呼叫 mysql.rds_set_external_master 將 Amazon 資料庫執行個體設定為僅供讀取複本後,您可以在僅供讀取複本mysql.rds_start_replication上呼叫 RDS 以啟動複寫程序。您可以呼叫 mysql.rds_reset_external_master (RDS for MariaDB and RDS for MySQL major version 8.0 and lower) 來移除僅供讀取複本組態。

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

範例

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

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

mysql.rds_set_external_source (RDS適用於我的SQL主要版本 8.4 和更新版本)

RDS for MyAuroraSQL 資料庫執行個體設定為在 Amazon 外部執行之 MySQL 執行個體的僅供讀取複本RDS。

重要

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

語法

CALL mysql.rds_set_external_source ( 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 外部執行的 MySQL 執行個體的主機名稱或 IP 地址RDS,以成為來源資料庫執行個體。

host_port

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

replication_user_name

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

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

指定是否在複寫連線上使用 Secure Socket Layer (SSL) 加密的值。1 指定使用SSL加密,0 指定不使用加密。預設值為 0。

注意

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

使用須知

管理使用者必須執行 mysql.rds_set_external_source 程序。此程序必須在 RDS for MySQL 資料庫執行個體上執行,才能設定為在 Amazon 外部執行之 MySQL 執行個體的僅供讀取複本RDS。

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

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

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

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

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

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

若要使用加密複寫,請將來源資料庫執行個體設定為使用SSL連線。此外,使用 mysql.rds_import_binlog_ssl_material 程序,將憑證授權單位憑證、用戶端憑證和用戶端金鑰匯入資料庫執行個體或資料庫叢集。

注意

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

呼叫 mysql.rds_set_external_sourceRDS for MySQL 資料庫執行個體設定為僅供讀取複本後,您可以在僅供讀取複本mysql.rds_start_replication上呼叫 以啟動複寫程序。您可以呼叫 mysql.rds_reset_external_source (RDS適用於我的SQL主要版本 8.4 和更新版本) 來移除僅供讀取複本組態。

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

範例

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

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

mysql.rds_set_external_master_with_auto_position (RDS適用於我的SQL主要版本 8.0 及更低版本)

將 RDS for MySQL 資料庫執行個體設定為在 Amazon 外部執行之 MySQL 執行個體的僅供讀取複本RDS。此程序也會根據全域交易識別碼 () 設定延遲複寫和複寫GTIDs。

重要

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

語法

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 外部執行的 MySQL 執行個體的主機名稱或 IP 地址RDS,以成為來源資料庫執行個體。

host_port

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

replication_user_name

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

replication_user_password

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

ssl_encryption

指定是否在複寫連線上使用 Secure Socket Layer (SSL) 加密的值。1 指定使用SSL加密,0 指定不使用加密。預設值為 0。

注意

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

delay

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

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

使用須知

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

My 5.7 版本和 RDS SQL MySQL 8.0.26 RDS 及更新版本皆支援此程序。

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

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

    CREATE USER 'repl_user'@'mydomain.com' IDENTIFIED BY 'SomePassW0rd'
  2. 在 My 的外部執行個體上SQL,將 REPLICATION CLIENTREPLICATION 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 外部執行的 MySQL 執行個體RDS。如需管理 Amazon RDS 資料庫執行個體之間複寫的資訊,請參閱 使用資料庫執行個體僅供讀取複本

呼叫 之前mysql.rds_set_external_master_with_auto_position,請務必呼叫 mysql.rds_set_external_source_gtid_purged,以設定具有外部來源指定GTID範圍gtid_purged的系統變數。

呼叫 mysql.rds_set_external_master_with_auto_position 將 Amazon 資料庫執行個體設定為僅供讀取複本後,您可以在僅供讀取複本mysql.rds_start_replication上呼叫 RDS 以啟動複寫程序。您可以呼叫 mysql.rds_reset_external_master (RDS for MariaDB and RDS for MySQL major version 8.0 and lower) 來移除僅供讀取複本組態。

當您呼叫 時mysql.rds_set_external_master_with_auto_position,Amazon 會在 和 mysql.rds_replication_status資料表set master中RDS記錄時間、使用者mysql.rds_history和 的動作。

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

若要使用 mysql.rds_rds_start_replication_until_gtid 程序,必須啟用 GTID型複寫。若要略過已知會導致災難的特定 GTID型交易,您可以使用mysql.rds_skip_transaction_with_gtid 預存程序。如需使用 GTID型複寫的詳細資訊,請參閱 使用 GTID型複寫

範例

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

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

mysql.rds_set_external_source_with_auto_position (RDS適用於我的SQL主要版本 8.4 和更新版本)

將 RDS for MySQL 資料庫執行個體設定為在 Amazon 外部執行之 MySQL 執行個體的僅供讀取複本RDS。此程序也會根據全域交易識別碼 () 設定延遲複寫和複寫GTIDs。

重要

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

語法

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

參數

host_name

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

host_port

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

replication_user_name

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

replication_user_password

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

ssl_encryption

指定是否在複寫連線上使用 Secure Socket Layer (SSL) 加密的值。1 指定使用SSL加密,0 指定不使用加密。預設值為 0。

注意

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

delay

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

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

使用須知

管理使用者必須執行 mysql.rds_set_external_source_with_auto_position 程序。此程序必須在 MySQL 資料庫執行個體上執行,才能設定為在 Amazon 外部執行之 MySQL 執行個體的僅供讀取複本RDS。

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

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

    CREATE USER 'repl_user'@'mydomain.com' IDENTIFIED BY 'SomePassW0rd'
  2. 在 My 的外部執行個體上SQL,將 REPLICATION CLIENTREPLICATION 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 外部執行的我的SQL執行個體RDS。如需管理 Amazon RDS 資料庫執行個體之間複寫的資訊,請參閱 使用資料庫執行個體僅供讀取複本

呼叫 之前mysql.rds_set_external_source_with_auto_position,請務必呼叫 mysql.rds_set_external_source_gtid_purged,以設定具有外部來源指定GTID範圍gtid_purged的系統變數。

呼叫 mysql.rds_set_external_source_with_auto_position 將 Amazon 資料庫執行個體設定為僅供讀取複本後,您可以在僅供讀取複本mysql.rds_start_replication上呼叫 RDS 以啟動複寫程序。您可以呼叫 mysql.rds_reset_external_source (RDS適用於我的SQL主要版本 8.4 和更新版本) 來移除僅供讀取複本組態。

當您呼叫 時mysql.rds_set_external_source_with_auto_position,Amazon 會在 和 mysql.rds_replication_status資料表set master中RDS記錄時間、使用者mysql.rds_history和 的動作。

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

若要使用 mysql.rds_rds_start_replication_until_gtid 程序,必須啟用 GTID型複寫。若要略過已知會導致災難的特定 GTID型交易,您可以使用mysql.rds_skip_transaction_with_gtid 預存程序。如需使用 GTID型複寫的詳細資訊,請參閱 使用 GTID型複寫

範例

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

call mysql.rds_set_external_source_with_auto_position( 'Externaldb.some.com', 3306, 'repl_user', 'SomePassW0rd', 1, 3600);

mysql.rds_set_external_master_with_delay (RDS適用於 MariaDB RDS 和適用於我的SQL主要版本 8.0 及更低版本)

將 RDS for MySQL 資料庫執行個體設定為在 Amazon 外部執行之 MySQL 執行個體的僅供讀取複本,RDS並設定延遲複寫。

重要

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

語法

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 外部執行的 MySQL 執行個體的主機名稱或 IP 地址RDS,將成為來源資料庫執行個體。

host_port

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

replication_user_name

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

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

指定是否在複寫連線上使用 Secure Socket Layer (SSL) 加密的值。1 指定使用SSL加密,0 指定不使用加密。預設值為 0。

注意

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

delay

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

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

使用須知

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

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

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

    CREATE USER 'repl_user'@'mydomain.com' IDENTIFIED BY 'SomePassW0rd'
  2. 在 My 的外部執行個體上SQL,將 REPLICATION CLIENTREPLICATION 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 外部執行的我的SQL執行個體RDS。如需管理 Amazon RDS 資料庫執行個體之間複寫的資訊,請參閱 使用資料庫執行個體僅供讀取複本

呼叫 mysql.rds_set_external_master_with_delay 將 Amazon 資料庫執行個體設定為僅供讀取複本後,您可以在僅供讀取複本mysql.rds_start_replication上呼叫 RDS 以啟動複寫程序。您可以呼叫 mysql.rds_reset_external_master (RDS for MariaDB and RDS for MySQL major version 8.0 and lower) 來移除僅供讀取複本組態。

當您呼叫 時mysql.rds_set_external_master_with_delay,Amazon 會在 和 mysql.rds_replication_status資料表set master中RDS記錄時間、使用者mysql.rds_history和 的動作。

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

若要使用 mysql.rds_rds_start_replication_until_gtid 程序,必須啟用 GTID型複寫。若要略過已知會導致災難的特定 GTID型交易,您可以使用mysql.rds_skip_transaction_with_gtid 預存程序。如需使用 GTID型複寫的詳細資訊,請參閱 使用 GTID型複寫

mysql.rds_set_external_master_with_delay 此程序可在RDS適用於 My 的 版本中使用SQL:

  • 我的SQL 8.0.26 和更新版本 8.0

  • 所有 5.7 版

範例

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

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

mysql.rds_set_external_source_with_delay (RDS適用於我的SQL主要 8.4 版和更新版本)

將 RDS for MySQL 資料庫執行個體設定為在 Amazon 外部執行之 MySQL 執行個體的僅供讀取複本,RDS並設定延遲複寫。

重要

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

語法

CALL mysql.rds_set_external_source_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 外部執行的 MySQL 執行個體的主機名稱或 IP 地址RDS,將成為來源資料庫執行個體。

host_port

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

replication_user_name

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

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

指定是否在複寫連線上使用 Secure Socket Layer (SSL) 加密的值。1 指定使用SSL加密,0 指定不使用加密。預設值為 0。

注意

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

delay

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

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

使用須知

管理使用者必須執行 mysql.rds_set_external_source_with_delay 程序。此程序必須在 MySQL 資料庫執行個體上執行,才能設定為在 Amazon 外部執行之 MySQL 執行個體的僅供讀取複本RDS。

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

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

    CREATE USER 'repl_user'@'mydomain.com' IDENTIFIED BY 'SomePassW0rd'
  2. 在 My 的外部執行個體上SQL,將 REPLICATION CLIENTREPLICATION 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 外部執行的我的SQL執行個體RDS。如需管理 Amazon RDS 資料庫執行個體之間複寫的資訊,請參閱 使用資料庫執行個體僅供讀取複本

呼叫 mysql.rds_set_external_source_with_delay 將 Amazon 資料庫執行個體設定為僅供讀取複本後,您可以在僅供讀取複本mysql.rds_start_replication上呼叫 RDS 以啟動複寫程序。您可以呼叫 mysql.rds_reset_external_source (RDS適用於我的SQL主要版本 8.4 和更新版本) 來移除僅供讀取複本組態。

當您呼叫 時mysql.rds_set_external_source_with_delay,Amazon 會在 和 mysql.rds_replication_status資料表set master中RDS記錄時間、使用者mysql.rds_history和 的動作。

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

若要使用 mysql.rds_rds_start_replication_until_gtid 程序,必須啟用 GTID型複寫。若要略過已知會導致災難的特定 GTID型交易,您可以使用mysql.rds_skip_transaction_with_gtid 預存程序。如需使用 GTID型複寫的詳細資訊,請參閱 使用 GTID型複寫

範例

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

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

mysql.rds_set_external_source_gtid_purged

設定具有來自外部來源之指定GTID範圍的 gtid_purged 系統變數。設定以 GTID為基礎的複寫,以使用自動定位恢復複寫時需要此gtid_purged值。

重要

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

語法

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 此程序僅適用於 MySQL 8.0.37 和更新的 8.0 版本。

在呼叫 mysql.rds_set_external_master_with_auto_position (RDS適用於我的SQL主要版本 8.0 及更低版本)mysql.rds_set_external_source_with_auto_position (RDS適用於我的SQL主要版本 8.4 和更新版本)mysql.rds_set_external_source_gtid_purged之前呼叫 mysql.rds_set_external_source_with_auto_position_for_channel

呼叫 之前mysql.rds_set_external_source_gtid_purged,請務必停止資料庫的所有作用中複寫通道。若要檢查頻道的狀態,請使用 SHOW REPLICA STATUS MySQL 陳述式。若要停止頻道上的複寫,請呼叫 mysql.rds_stop_replication_for_channel

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

  • server_uuid 有效。

  • 的值start_pos大於0和小於 的值end_pos

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

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

當您呼叫 時mysql.rds_set_external_source_gtid_purged,Amazon 會在 mysql.rds_history 資料表set gtid_purged中RDS記錄時間、使用者和 的動作。

如果您未為用於複寫的備份適當設定gtid_purged值,這可能會導致複寫程序期間交易遺失或重複。執行下列步驟以設定正確的gtid_purged值。

在複本上設定 gtid_purged 值
  1. 決定要用作複寫起點的時間點或特定備份檔案。這可以是邏輯備份 (mysqldump 檔案) 或實體備份 (Amazon RDS快照)。

  2. 決定 gtid_executed值。此值代表在伺服器上GTIDs遞交的所有集合。若要擷取此值,請在來源執行個體上執行下列其中一項操作:

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

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

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

    若要判斷gtid_purged值,請識別未包含在備份中的 GTIDs ,且不再需要複寫。您可以透過分析二進位日誌或使用 mysqlbinlog 等工具來尋找從二進位日誌GTIDs中清除的 來達成此目的。

    或者,如果您有一個一致的備份,其中包含備份點之前的所有二進位日誌,您可以將gtid_purged值設定為與備份點gtid_executed的值相同。

  4. 在您確定與您的備份一致的適當gtid_purged值後,請呼叫RDS適用於 MySQL 資料庫執行個體的 上的mysql.rds_set_external_source_gtid_purged預存程序來設定該值。

範例

在 MySQL 資料庫執行個體上執行時,下列範例會設定來自外部 MySQL 伺服器GTID的範圍,其中 為 UUID 12345678-abcd-1234-efgh-123456789abc、 的開始位置1,以及 的結束位置100。產生的GTID值會設為 +12345678-abcd-1234-efgh-123456789abc:1-100

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

mysql.rds_set_master_auto_position (RDS適用於我的SQL主要版本 8.0 及更低版本)

將複寫模式設定為根據二進位日誌檔案位置或全域交易識別符 (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 程序。

My 5.7 版本和 RDS SQL MySQL 8.0.26 RDS 及更新版本皆支援此程序。

mysql.rds_set_source_auto_position (RDS適用於我的SQL主要版本 8.4 和更新版本)

將複寫模式設定為根據二進位日誌檔案位置或全域交易識別符 (GTIDs)。

語法

CALL mysql.rds_set_source_auto_position (auto_position_mode);

參數

auto_position_mode

指出要使用日誌檔位置複寫或 GTID型複寫的值:

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

  • 1 – 使用 GTID型複寫方法。

使用須知

管理使用者必須執行 mysql.rds_set_source_auto_position 程序。

mysql.rds_set_source_delay

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

語法

CALL mysql.rds_set_source_delay( delay );

參數

delay

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

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

使用須知

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

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

若要使用 mysql.rds_rds_start_replication_until_gtid 程序,必須啟用 GTID型複寫。若要略過已知會導致災難的特定 GTID型交易,您可以使用mysql.rds_skip_transaction_with_gtid 預存程序。如需 GTID型複寫的詳細資訊,請參閱 使用 GTID型複寫

mysql.rds_set_source_delay 此程序可在RDS適用於 My 的 版本中使用SQL:

  • All RDS for MySQL 8.4 版本

  • 我的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

略過和刪除 MySQL 資料庫僅供讀取複本上的複寫錯誤。

語法

CALL mysql.rds_skip_repl_error;

使用須知

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

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

如需使用 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 for MySQL 資料庫執行個體 啟動複寫。

注意

您可以使用 mysql.rds_start_replication_until mysql.rds_start_replication_until_gtid 預存程序,從 RDS for MyAuroraSQL 資料庫執行個體啟動複寫,並在指定的二進位日誌檔案位置停止複寫。

語法

CALL mysql.rds_start_replication;

使用須知

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

若要從 Amazon 外部的 MySQL 執行個體匯入資料RDS,請在呼叫 mysql.rds_set_external_master (RDS for MariaDB and RDS for MySQL major version 8.0 and lower) 或 建置複寫組態後,在僅供讀取複本mysql.rds_start_replication上呼叫 mysql.rds_set_external_source (RDS適用於我的SQL主要版本 8.4 和更新版本) 以啟動複寫程序。如需詳細資訊,請參閱將備份還原至 Amazon RDS for MySQL 資料庫執行個體

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

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

mysql.rds_start_replication_until

RDS for MySQL 資料庫執行個體 啟動複寫,並在指定的二進位日誌檔案位置停止複寫。

語法

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 此程序可在適用於 My RDS的 版本中使用SQL:

  • All RDS for MySQL 8.4 版本

  • 我的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

從我的SQL資料庫執行個體停止複寫。

語法

CALL mysql.rds_stop_replication;

使用須知

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

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

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

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