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

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

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

在連線至 Aurora My SQL 叢集中的主執行個體時,您可以呼叫下列預存程序。這些程序控制交易從外部資料庫複寫到 Aurora My SQL 或從 Aurora My 複寫SQL到外部資料庫的方式。

神秘的 rds_ 禁用會話記錄(Aurora 我的版本 2)SQL

透過將 sql_log_bin 變數設定為 OFF 以關閉目前工作階段的二進位記錄。

語法

CALL mysql.rds_disable_session_binlog;

參數

使用須知

對於 Aurora My SQL DB 叢集,您可以在連線至主執行個體時呼叫此預存程序。

對於 Aurora,Aurora 我的SQL版本 2.12 及更高版本 My SQL 5.7 相容版本支援此程序。

注意

在 Aurora My SQL 版本 3 中,如果您具有SESSION_VARIABLES_ADMIN權限,則可以使用下列命令停用目前工作階段的二進位記錄:

SET SESSION sql_log_bin = OFF;

神秘的 rds_ 啟用會話記錄(Aurora 我的版本 2)SQL

透過將 sql_log_bin 變數設定為 ON 以開啟目前工作階段的二進位記錄。

語法

CALL mysql.rds_enable_session_binlog;

參數

使用須知

對於 Aurora My SQL DB 叢集,您可以在連線至主執行個體時呼叫此預存程序。

對於 Aurora,Aurora 我的SQL版本 2.12 及更高版本 My SQL 5.7 相容版本支援此程序。

注意

在 Aurora My SQL 版本 3 中,如果您具有SESSION_VARIABLES_ADMIN權限,則可以使用下列命令為目前工作階段啟用二進位記錄:

SET SESSION sql_log_bin = ON;

mysql.rds_import_binlog_ssl_material

將憑證授權機構憑證、用戶端憑證和用戶端金鑰匯入 Aurora My SQL DB 叢集。通訊和加密複寫所需的資SSL訊。

注意

目前,「Aurora 我的SQL版本 2:2.0 版本」、「2.10.0」和「2.11.0」支援此程序;以及版本 3:3.01.1 及更高版本。

語法

CALL mysql.rds_import_binlog_ssl_material ( ssl_material );

參數

ssl_material

JSON包含「我SQL的用戶端」之下列 .pem 格式檔案內容的裝載:

  • 「加州」:」Certificate authority certificate"

  • 「證書」:」Client certificate"

  • 「密鑰」:」Client key"

使用須知

執行此程序之前為加密複寫做好準備:

  • 如果您未在外部 My SQL source 資料庫執行個體上SSL啟用,而且沒有準備好用戶端金鑰和用戶端憑證,請在我的SQL資料庫伺服器SSL上啟用,然後產生必要的用戶端金鑰和用戶端憑證。

  • 如果SSL已在外部來源資料庫執行個體上啟用,請為 Aurora My SQL DB 叢集提供用戶端金鑰和憑證。如果您沒有這些,請為 Aurora My SQL DB 叢集產生新的金鑰和憑證。若要簽署用戶端憑證,您必須擁有用來在外部 My SQL 來源資料庫執行個體SSL上設定的憑證授權單位金鑰。

如需詳細資訊,請參閱我的SQL文件中的使用 openssl 建立SSL憑證和金鑰

重要

準備加密複寫之後,請使用SSL連線來執行此程序。不可透過不安全的連線來傳送用戶端金鑰。

此程序會將SSL資訊從外部「我的」資SQL料庫匯入 Aurora 我的資料SQL庫叢集。此資SSL訊採用 .pem 格式檔案,其中包含 Aurora 我的SSL資SQL料庫叢集的資訊。在加密複寫期間,Aurora My SQL DB 叢集會將用戶端運作到我的SQL資料庫伺服器。Aurora 我的SQL用戶端的憑證和金鑰位於 .pem 格式的檔案中。

您可以將這些檔案中的資訊複製到正確JSON承載中的ssl_material參數中。若要支援加密複寫,請將此SSL資訊匯入 Aurora 我的資SQL料庫叢集。

JSON承載必須採用下列格式。

'{"ssl_ca":"-----BEGIN CERTIFICATE----- ssl_ca_pem_body_code -----END CERTIFICATE-----\n","ssl_cert":"-----BEGIN CERTIFICATE----- ssl_cert_pem_body_code -----END CERTIFICATE-----\n","ssl_key":"-----BEGIN RSA PRIVATE KEY----- ssl_key_pem_body_code -----END RSA PRIVATE KEY-----\n"}'

範例

下列範例會將SSL資訊匯入 Aurora My 的SQL。在 .pem 格式檔案中,內文程式碼通常比範例所示的內文程式碼更長。

call mysql.rds_import_binlog_ssl_material( '{"ssl_ca":"-----BEGIN CERTIFICATE----- AAAAB3NzaC1yc2EAAAADAQABAAABAQClKsfkNkuSevGj3eYhCe53pcjqP3maAhDFcvBS7O6V hz2ItxCih+PnDSUaw+WNQn/mZphTk/a/gU8jEzoOWbkM4yxyb/wB96xbiFveSFJuOp/d6RJhJOI0iBXr lsLnBItntckiJ7FbtxJMXLvvwJryDUilBMTjYtwB+QhYXUMOzce5Pjz5/i8SeJtjnV3iAoG/cQk+0FzZ qaeJAAHco+CY/5WrUBkrHmFJr6HcXkvJdWPkYQS3xqC0+FmUZofz221CBt5IMucxXPkX4rWi+z7wB3Rb BQoQzd8v7yeb7OzlPnWOyN0qFU0XA246RA8QFYiCNYwI3f05p6KLxEXAMPLE -----END CERTIFICATE-----\n","ssl_cert":"-----BEGIN CERTIFICATE----- AAAAB3NzaC1yc2EAAAADAQABAAABAQClKsfkNkuSevGj3eYhCe53pcjqP3maAhDFcvBS7O6V hz2ItxCih+PnDSUaw+WNQn/mZphTk/a/gU8jEzoOWbkM4yxyb/wB96xbiFveSFJuOp/d6RJhJOI0iBXr lsLnBItntckiJ7FbtxJMXLvvwJryDUilBMTjYtwB+QhYXUMOzce5Pjz5/i8SeJtjnV3iAoG/cQk+0FzZ qaeJAAHco+CY/5WrUBkrHmFJr6HcXkvJdWPkYQS3xqC0+FmUZofz221CBt5IMucxXPkX4rWi+z7wB3Rb BQoQzd8v7yeb7OzlPnWOyN0qFU0XA246RA8QFYiCNYwI3f05p6KLxEXAMPLE -----END CERTIFICATE-----\n","ssl_key":"-----BEGIN RSA PRIVATE KEY----- AAAAB3NzaC1yc2EAAAADAQABAAABAQClKsfkNkuSevGj3eYhCe53pcjqP3maAhDFcvBS7O6V hz2ItxCih+PnDSUaw+WNQn/mZphTk/a/gU8jEzoOWbkM4yxyb/wB96xbiFveSFJuOp/d6RJhJOI0iBXr lsLnBItntckiJ7FbtxJMXLvvwJryDUilBMTjYtwB+QhYXUMOzce5Pjz5/i8SeJtjnV3iAoG/cQk+0FzZ qaeJAAHco+CY/5WrUBkrHmFJr6HcXkvJdWPkYQS3xqC0+FmUZofz221CBt5IMucxXPkX4rWi+z7wB3Rb BQoQzd8v7yeb7OzlPnWOyN0qFU0XA246RA8QFYiCNYwI3f05p6KLxEXAMPLE -----END RSA PRIVATE KEY-----\n"}');

下一個主日誌(Aurora 我的版本 2)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 會導致僅供讀取複本遺失資料。

範例

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

下一個來源日誌(Aurora 我的版本 3)SQL

將來源資料庫執行個體日誌位置變更為來源資料庫執行個體上下一個二進位日誌的開頭。只有當您在僅供讀取複本上收到複寫輸入/輸出錯誤 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 會導致僅供讀取複本遺失資料。

範例

假設 Aurora 我的僅供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_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_remove_binlog_ssl_material

移除憑證授權單位憑證、用戶端憑證和用戶端金鑰,以進行SSL通訊和加密複寫。此資訊是利用 mysql.rds_import_binlog_ssl_material 來匯入。

語法

CALL mysql.rds_remove_binlog_ssl_material;

外部主機(Aurora 我的版本 2)SQL

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

重要

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

語法

CALL mysql.rds_reset_external_master;

使用須知

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

注意

我們提供這些預存程序主要是為了讓在 Amazon 外部執行的 My SQL 執行個體進行複寫RDS。建議您盡可能使用 Aurora 複本來管理 Aurora My SQL 資料庫叢集內的複寫。如需在 Aurora My 資SQL料庫叢集中管理複寫的相關資訊,請參閱使用 Aurora 複本

如需有關使用複寫將資料從我的執SQL行個體匯入 Aurora My 外部的執行個體的詳細資訊SQL,請參閱在 Aurora 和我之間SQL或 Aurora 與另一個 Aurora 資料庫叢集之間的複寫 (二進位記錄複寫

外部源代碼(Aurora 我的版本 3)SQL

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

重要

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

語法

CALL mysql.rds_reset_external_source;

使用須知

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

注意

我們提供這些預存程序主要是為了讓在 Amazon 外部執行的 My SQL 執行個體進行複寫RDS。建議您盡可能使用 Aurora 複本來管理 Aurora My SQL 資料庫叢集內的複寫。如需在 Aurora My 資SQL料庫叢集中管理複寫的相關資訊,請參閱使用 Aurora 複本

我的 Aurora(極光我的版本 3)SQL

啟用 binlog 複寫的SOURCE_SSL加密。如需詳細資訊,請參CHANGEREPLICATIONSOURCE閱 My SQL 文件中的 To 陳述式

語法

CALL mysql.rds_set_binlog_source_ssl(mode);

參數

mode

指出是否已啟用SOURCE_SSL加密的值:

  • 0SOURCE_SSL 加密已停用。預設值為 0

  • 1— 已啟用SOURCE_SSL加密。您可以使用SSL或來設定加密TLS。

使用須知

Aurora 我的SQL版本 3.06 及更高版本支援此程序。

外部主機(Aurora 我的版本 2)SQL

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

mysql.rds_set_external_master 程序已棄用,且會在未來版本中將其移除。請改用 mysql.rds_set_external_source

重要

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

語法

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連線。 此外,使用 mysql.rds_import_binlog_ssl_material 程序,將憑證認證機構憑證、用戶端憑證和用戶端金鑰匯入資料庫執行個體或資料庫叢集。

注意

我們提供這些預存程序主要是為了讓在 Amazon 外部執行的 My SQL 執行個體進行複寫RDS。建議您盡可能使用 Aurora 複本來管理 Aurora My SQL 資料庫叢集內的複寫。如需在 Aurora My 資SQL料庫叢集中管理複寫的相關資訊,請參閱使用 Aurora 複本

在呼叫mysql.rds_set_external_master將 Amazon RDS 資料庫執行個體設定為僅供讀取複本後,您可以呼叫mysql.rds_start_replication僅供讀取複本以開始複寫程序。您可以呼叫 外部主機(Aurora 我的版本 2)SQL 來移除僅供讀取複本組態。

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);

與自動定位(Aurora 我的版本 2)SQL

將 Aurora My SQL 主執行個體設定為接受來自外部 My SQL 執行個體的傳入複寫。此程序也會根據全域交易識別碼 () GTIDs 來設定複寫。

此程序不會設定延遲複寫,因為 Aurora My SQL 不支援延遲複寫。

語法

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

參數

host_name

在 Aurora 外部執行之 My SQL 執行個體的主機名稱或 IP 位址,以成為複寫來源。

host_port

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

replication_user_name

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

replication_user_password

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

ssl_encryption

此選項目前尚未實作。預設值為 0。

使用須知

對於 Aurora My SQL DB 叢集,您可以在連線至主執行個體時呼叫此預存程序。

主要使用者必須執行 mysql.rds_set_external_master_with_auto_position 程序。主要使用者在充當複寫目標的 Aurora My SQL DB 叢集的主要執行個體上執行此程序。這可以是外部 My SQL DB 執行個體或 Aurora My 資料SQL庫叢集的複寫目標。

Aurora 我的SQL版本 2 支援此程序。對於 Aurora 我的SQL版本 3,請與自動定位(Aurora 我的版本 3)SQL改為使用該過程。

執行之前mysql.rds_set_external_master_with_auto_position,請將外部 My SQL DB 執行個體設定為複寫來源。若要連接至外部 My SQL 例證,請指定replication_user_name和的值replication_user_password。這些值必須指出具有外部 My SQL 執行個體REPLICATION CLIENTREPLICATION SLAVE權限的複寫使用者。

將外部 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'

當您打電話時mysql.rds_set_external_master_with_auto_position,Amazon 會RDS記錄某些信息。此資訊為時間、使用者,以及 "set master"mysql.rds_history 資料表中的 mysql.rds_replication_status 動作。

若要略過已知會造成問題的特定GTID基礎交易,您可以使用與 gtid(Aurora 我的版本 2 和 3)SQL預存程序。如需使用GTID基礎複製的詳細資訊,請參閱使用GTID基礎複製

範例

在 Aurora 主執行個體上執行時,下列範例會將 Aurora 叢集設定為在 Aurora 外部執行的 My SQL 執行個體的僅供讀取複本。

call mysql.rds_set_external_master_with_auto_position( 'Externaldb.some.com', 3306, 'repl_user'@'mydomain.com', 'SomePassW0rd');

外部源代碼(Aurora 我的版本 3)SQL

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

重要

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

語法

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 外部執行之 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。

注意

您必須使用匯入自訂SSL憑證,mysql.rds_import_binlog_ssl_material才能啟用此選項。如果您尚未匯入自訂SSL憑證,請將此參數設定為 0,並用我的 Aurora(極光我的版本 3)SQLSSL於啟用二進位記錄複寫。

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

使用須知

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

在執行之前mysql.rds_set_external_source,您必須將 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連線。此外,使用 mysql.rds_import_binlog_ssl_material 程序,將憑證授權單位憑證、用戶端憑證和用戶端金鑰匯入資料庫執行個體或資料庫叢集。

注意

我們提供這些預存程序主要是為了讓在 Amazon 外部執行的 My SQL 執行個體進行複寫RDS。建議您盡可能使用 Aurora 複本來管理 Aurora My SQL 資料庫叢集內的複寫。如需在 Aurora My 資SQL料庫叢集中管理複寫的相關資訊,請參閱使用 Aurora 複本

在呼叫mysql.rds_set_external_source將 Aurora My SQL 資料庫執行個體設定為僅供讀取複本之後,您可以在僅供讀取複本上呼叫 mysql.rds_start_複製來啟動複製程序。您可以呼叫 mysql.rds_reset_external_source 來移除僅供讀取複本組態。

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

範例

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

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

與自動定位(Aurora 我的版本 3)SQL

將 Aurora My SQL 主執行個體設定為接受來自外部 My SQL 執行個體的傳入複寫。此程序也會根據全域交易識別碼 () GTIDs 來設定複寫。

語法

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

參數

host_name

在 Aurora 外部執行之 My SQL 執行個體的主機名稱或 IP 位址,以成為複寫來源。

host_port

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

replication_user_name

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

replication_user_password

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

ssl_encryption

此選項目前尚未實作。預設值為 0。

注意

我的 Aurora(極光我的版本 3)SQLSSL於啟用二進位記錄複寫。

使用須知

對於 Aurora My SQL DB 叢集,您可以在連線至主執行個體時呼叫此預存程序。

管理使用者必須執行 mysql.rds_set_external_source_with_auto_position 程序。管理使用者在作為複寫目標的 Aurora My SQL DB 叢集的主要執行個體上執行此程序。這可以是外部 My SQL DB 執行個體或 Aurora My 資料SQL庫叢集的複寫目標。

Aurora 我的SQL版本 3 支援此程序。此程序不會設定延遲複寫,因為 Aurora My SQL 不支援延遲複寫。

執行之前mysql.rds_set_external_source_with_auto_position,請將外部 My SQL DB 執行個體設定為複寫來源。若要連接至外部 My SQL 例證,請指定replication_user_name和的值replication_user_password。這些值必須指出具有外部 My SQL 執行個體REPLICATION CLIENTREPLICATION SLAVE權限的複寫使用者。

將外部 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'

當您打電話時mysql.rds_set_external_source_with_auto_position,Amazon 會RDS記錄某些信息。此資訊為時間、使用者,以及 "set master"mysql.rds_history 資料表中的 mysql.rds_replication_status 動作。

若要略過已知會造成問題的特定GTID基礎交易,您可以使用與 gtid(Aurora 我的版本 2 和 3)SQL預存程序。如需使用GTID基礎複製的詳細資訊,請參閱使用GTID基礎複製

範例

在 Aurora 主執行個體上執行時,下列範例會將 Aurora 叢集設定為在 Aurora 外部執行的 My SQL 執行個體的僅供讀取複本。

call mysql.rds_set_external_source_with_auto_position( 'Externaldb.some.com', 3306, 'repl_user'@'mydomain.com', 'SomePassW0rd');

自動定位(Aurora 我的版本 2)SQL

將複製模式設定為以二進位記錄檔位置或全域交易識別碼 (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 程序。

Aurora 我的SQL版本 2 支援此程序。

只讀(Aurora 我的版本 3)SQL

全域開read_only啟或關閉資料庫執行個體的模式。

語法

CALL mysql.rds_set_read_only(mode);

參數

mode

指出資料庫執行個體全域read_only模式是開啟還是關閉的值:

  • 0OFF. 預設值為0

  • 1ON

使用須知

mysql.rds_set_read_only存程序只會修改read_only參數。無法在讀取器資料庫執行個體上變更innodb_read_only參數。

read_only參數更改不會在重新啟動時持續存在。若要永久變更read_only,您必須使用read_only資料庫叢集參數。

Aurora 我的SQL版本 3.06 及更高版本支援此程序。

我的版本(Aurora 我的版本 2)SQL

設定目前工作階段的二進位日誌格式。

語法

CALL mysql.rds_set_session_binlog_format(format);

參數

format

指示目前工作階段的二進位日誌格式的值:

  • STATEMENT— 複寫來源會根據SQL陳述式將事件寫入二進位記錄。

  • ROW – 複寫來源會將事件寫入二進位日誌,指示個別資料表資料列的變更。

  • MIXED— 記錄通常以SQL陳述式為基礎,但在特定條件下切換至列。如需詳細資訊,請參閱 My SQL 文件中的混合二進位記錄格式

使用須知

對於 Aurora My SQL DB 叢集,您可以在連線至主執行個體時呼叫此預存程序。

若要使用這個預存程序,您必須為目前的工作階段設定二進位日誌。

對於 Aurora,Aurora 我的SQL版本 2.12 及更高版本 My SQL 5.7 相容版本支援此程序。

自動定位(Aurora 我的版本 3)SQL

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

語法

CALL mysql.rds_set_source_auto_position (auto_position_mode);

參數

auto_position_mode

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

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

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

使用須知

對於 Aurora My SQL DB 叢集,您可以在連線至主執行個體時呼叫此預存程序。

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

mysql.rds_skip_repl_error

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

語法

CALL 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

如需有關使用 Aurora My 解決複寫錯誤的詳細資訊SQL,請參閱診斷和解決 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

從我的資料庫執行個叢集啟動複寫。

注意

您可以使用開始複製直到(Aurora 我的版本 3)SQL我的 Aurora 復制(極光我的版本 3)SQL預存程序從 個體啟動複寫,並在指定的二進位記錄檔位置停止複寫。

語法

CALL mysql.rds_start_replication;

使用須知

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

若要將資料從 My SQL 外部的執行個體匯入 AmazonRDS,請mysql.rds_start_replication在呼叫mysql.rds_set_external_mastermysql.rds_set_external_source建立複寫組態後呼叫僅供讀取複本以啟動複寫程序。如需詳細資訊,請參閱在 Aurora 和我之間SQL或 Aurora 與另一個 Aurora 資料庫叢集之間的複寫 (二進位記錄複寫

若要將資料匯出至 Amazon SQL 外部 My 執行個體RDS,請在僅供讀取複本mysql.rds_stop_replication上呼叫mysql.rds_start_replication和以控制某些複寫動作,例如清除二進位記錄。如需詳細資訊,請參閱在 Aurora 和我之間SQL或 Aurora 與另一個 Aurora 資料庫叢集之間的複寫 (二進位記錄複寫

您也可以對僅供讀取複本呼叫 mysql.rds_start_replication,以重新啟動您先前呼叫 mysql.rds_stop_replication 所停止的任何複寫程序。如需詳細資訊,請參閱複寫已停止錯誤

開始複製直到(Aurora 我的版本 3)SQL

叢集啟動複寫,並在指定的二進位記錄檔位置停止複寫。

語法

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 程序。

Aurora 我的SQL版本 3.04 及更高版本支援此程序。

受管理複寫不支援mysql.rds_start_replication_until預存程序,其中包括下列項目:

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在匯入完成後呼叫僅供讀取複本以停止複寫程序。如需詳細資訊,請參閱在 Aurora 和我之間SQL或 Aurora 與另一個 Aurora 資料庫叢集之間的複寫 (二進位記錄複寫

如果您將複寫設定為將資料匯出到 Amazon SQL 外部 My 的執行個體RDS,請在僅供讀取複本mysql.rds_stop_replication上呼叫mysql.rds_start_replication和控制某些複寫動作,例如清除二進位記錄。如需詳細資訊,請參閱在 Aurora 和我之間SQL或 Aurora 與另一個 Aurora 資料庫叢集之間的複寫 (二進位記錄複寫

受管理複寫不支援mysql.rds_stop_replication預存程序,其中包括下列項目: