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

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

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

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

mysql.rds_disable_session_binlog (Aurora MySQL 第 2 版)

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

語法

CALL mysql.rds_disable_session_binlog;

參數

使用須知

對於 Aurora MySQL 資料庫叢集,您會在連線到主要執行個體時呼叫此預存程序。

對於 Aurora,Aurora MySQL 2.12 版和更新的 MySQL 5.7 相容版本支援此程序。

注意

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

SET SESSION sql_log_bin = OFF;

mysql.rds_enable_session_binlog (Aurora MySQL 第 2 版)

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

語法

CALL mysql.rds_enable_session_binlog;

參數

使用須知

對於 Aurora MySQL 資料庫叢集,您會在連線到主要執行個體時呼叫此預存程序。

對於 Aurora,Aurora MySQL 2.12 版和更新的 MySQL 5.7 相容版本支援此程序。

注意

在 Aurora MySQL 第 3 版中,如果您具有 SESSION_VARIABLES_ADMIN權限,您可以使用下列命令來啟用目前工作階段的二進位記錄:

SET SESSION sql_log_bin = ON;

mysql.rds_import_binlog_ssl_material

將憑證授權單位憑證、用戶端憑證和用戶端金鑰匯入Aurora MySQL 資料庫叢集。SSL 通訊和加密複寫需要此資訊。

注意

目前,Aurora MySQL 第 2 版支援此程序:2.09.2、2.10.0、2.10.1 和 2.11.0;第 3 版:3.01.1 和更新版本。

語法

CALL mysql.rds_import_binlog_ssl_material ( ssl_material );

參數

ssl_material

JSON 承載,其中包含 MySQL 用戶端的下列 .pem 格式檔案的內容:

  • "ssl_ca":"Certificate authority certificate"

  • "ssl_cert":"Client certificate"

  • "ssl_key":"Client key"

使用須知

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

  • 如果您未在外部 MySQL source 資料庫執行個體上SSL啟用 ,且未準備好用戶端金鑰和用戶端憑證,SSL請在 MySQL 資料庫伺服器上啟用 ,並產生所需的用戶端金鑰和用戶端憑證。

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

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

重要

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

此程序會從外部 MySQL 資料庫將SSL資訊匯入 Aurora MySQL 資料庫叢集。SSL 資訊採用 .pem 格式的檔案,其中包含 Aurora MySQL 資料庫叢集SSL的資訊。在加密複寫期間,Aurora MySQL 資料庫叢集會對我的SQL資料庫伺服器執行用戶端。Aurora MySQL 用戶端的憑證和金鑰是以 .pem 格式的檔案。

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

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 MySQL。在 .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"}');

mysql.rds_next_master_log (Aurora MySQL version 2)

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

範例

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

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

範例

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

mysql.rds_reset_external_master (Aurora MySQL version 2)

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

重要

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

語法

CALL mysql.rds_reset_external_master;

使用須知

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

注意

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

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

mysql.rds_reset_external_source (Aurora MySQL 版本 3)

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

重要

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

語法

CALL mysql.rds_reset_external_source;

使用須知

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

注意

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

mysql.rds_set_binlog_source_ssl (Aurora MySQL 第 3 版)

啟用 binlog 複寫的SOURCE_SSL加密。如需詳細資訊,請參閱我的SQL文件中的 CHANGE REPLICATION SOURCE TO 陳述式。

語法

CALL mysql.rds_set_binlog_source_ssl(mode);

參數

mode

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

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

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

使用須知

Aurora MySQL 3.06 版及更新版本支援此程序。

mysql.rds_set_external_master (Aurora MySQL version 2)

MySQL 資料庫執行個體設定為在 Amazon 外部執行之 MySQL 執行個體的僅供讀取複本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 外部執行的 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連線。此外,使用 mysql.rds_import_binlog_ssl_material 程序,將憑證認證機構憑證、用戶端憑證和用戶端金鑰匯入資料庫執行個體或資料庫叢集。

注意

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

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

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 (Aurora MySQL 版本 3)

MySQL 資料庫執行個體設定為在 Amazon 外部執行之 MySQL 執行個體的僅供讀取複本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 外部執行的 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。

注意

您必須使用 匯入自訂SSL憑證mysql.rds_import_binlog_ssl_material,才能啟用此選項。如果您尚未匯入自訂SSL憑證,請將此參數設定為 0,並使用 mysql.rds_set_binlog_source_ssl (Aurora MySQL 第 3 版)啟用SSL二進位日誌複寫。

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

使用須知

管理使用者必須執行 mysql.rds_set_external_source 程序。此程序必須在 Aurora 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 外部執行的我的SQL執行個體RDS。我們建議您盡可能使用 Aurora 複本來管理 Aurora MySQL 資料庫叢集內的複寫。如需在 Aurora MySQL 資料庫叢集中管理複寫的相關資訊,請參閱 使用 Aurora 複本

呼叫 mysql.rds_set_external_sourceAurora MySQL 資料庫執行個體設定為僅供讀取複本後,您可以在僅供讀取複本mysql.rds_start_replication上呼叫 以啟動複寫程序。您可以呼叫 mysql.rds_reset_external_source (Aurora MySQL 版本 3) 來移除僅供讀取複本組態。

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

範例

Aurora 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 (Aurora MySQL 第 2 版)

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

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

語法

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

參數

host_name

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

host_port

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

replication_user_name

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

replication_user_password

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

ssl_encryption

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

使用須知

對於 Aurora MySQL 資料庫叢集,您會在連線到主要執行個體時呼叫此預存程序。

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

Aurora MySQL 第 2 版支援此程序。對於 Aurora MySQL 第 3 版,請mysql.rds_set_external_source_with_auto_position (Aurora MySQL 第 3 版)改用 程序。

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

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

    CREATE USER 'repl_user'@'mydomain.com' IDENTIFIED BY 'SomePassW0rd'
  2. 在外部 MySQL 執行個體上,將 REPLICATION CLIENTREPLICATION 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型交易,您可以使用mysql.rds_skip_transaction_with_gtid (Aurora MySQL 第 2 版和第 3 版)預存程序。如需使用 GTID型複寫的詳細資訊,請參閱 使用 GTID型複寫

範例

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

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

mysql.rds_set_external_source_with_auto_position (Aurora MySQL 第 3 版)

設定 Aurora MySQL 主要執行個體以接受來自外部 MySQL 執行個體的傳入複寫。此程序也會根據全域交易識別符 (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 外部執行的 MySQL 執行個體的主機名稱或 IP 地址,以成為複寫來源。

host_port

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

replication_user_name

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

replication_user_password

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

ssl_encryption

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

注意

使用 SSL mysql.rds_set_binlog_source_ssl (Aurora MySQL 第 3 版)啟用二進位日誌複寫。

使用須知

對於 Aurora MySQL 資料庫叢集,您會在連線到主要執行個體時呼叫此預存程序。

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

Aurora MySQL 第 3 版支援此程序。此程序不會設定延遲複寫,因為 Aurora MySQL 不支援延遲複寫。

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

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

    CREATE USER 'repl_user'@'mydomain.com' IDENTIFIED BY 'SomePassW0rd'
  2. 在外部 MySQL 執行個體上,將 REPLICATION CLIENTREPLICATION 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型交易,您可以使用mysql.rds_skip_transaction_with_gtid (Aurora MySQL 第 2 版和第 3 版)預存程序。如需使用 GTID型複寫的詳細資訊,請參閱 使用 GTID型複寫

範例

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

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

mysql.rds_set_master_auto_position (Aurora MySQL 版本 2)

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

mysql.rds_set_read_only (Aurora MySQL 第 3 版)

全域開啟或關閉資料庫執行個體的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 MySQL 3.06 版及更新版本支援此程序。

mysql.rds_set_session_binlog_format (Aurora MySQL 第 2 版)

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

語法

CALL mysql.rds_set_session_binlog_format(format);

參數

format

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

  • STATEMENT – 複寫來源會根據SQL陳述式將事件寫入二進位日誌。

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

  • MIXED – 記錄通常是以SQL陳述式為基礎,但在特定情況下會切換到資料列。如需詳細資訊,請參閱我的SQL文件中的混合二進位記錄格式

使用須知

對於 Aurora MySQL 資料庫叢集,您會在連線至主要執行個體時呼叫此預存程序。

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

對於 Aurora,Aurora MySQL 2.12 版及更新的 MySQL 5.7 相容版本支援此程序。

mysql.rds_set_source_auto_position (Aurora MySQL 版本 3)

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

語法

CALL mysql.rds_set_source_auto_position (auto_position_mode);

參數

auto_position_mode

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

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

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

使用須知

對於 Aurora MySQL 資料庫叢集,您會在連線至主要執行個體時呼叫此預存程序。

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

mysql.rds_skip_repl_error

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

語法

CALL 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陳述式。

如需使用 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 MySQL 資料庫叢集啟動複寫。

注意

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

語法

CALL mysql.rds_start_replication;

使用須知

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

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

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

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

mysql.rds_start_replication_until (Aurora MySQL 第 3 版)

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

Aurora MySQL 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

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

語法

CALL mysql.rds_stop_replication;

使用須知

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

如果您要設定複寫以從在 Amazon 外部執行的 MySQL 執行個體匯入資料RDS,請在匯入完成後mysql.rds_stop_replication呼叫僅供讀取複本以停止複寫程序。如需詳細資訊,請參閱在 Aurora 和我之間SQL或 Aurora 與另一個 Aurora 資料庫叢集之間的複寫 (二進位記錄複寫

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

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