管理多來源複寫 - Amazon Relational Database Service

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

管理多來源複寫

下列預存程序會在 RDS for MySQL 多來源複本上設定及管理複寫通道。如需更多詳細資訊,請參閱 為 Amazon RDS for MySQL 設定多來源複寫

這些預存程序僅適用於執行下列引擎版本的 RDS for MySQL 資料庫執行個體:

  • 所有 8.4 版

  • 8.0.35 和更高的次要版本

  • 5.7.44 及更高次要版本

使用預存程序管理使用 caching_sha2_passwword 所設定複寫使用者的複寫時,您必須指定 SOURCE_SSL=1 來設定 TLS。caching_sha2_password 是 RDS for MySQL 8.4 的預設身分驗證外掛程式。

注意

雖然本文件將來源資料庫執行個體稱為 RDS for MySQL 資料庫執行個體,但這些程序也適用於在 Amazon RDS 外部執行的 MySQL 執行個體。

mysql.rds_next_source_log_for_channel

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

語法

CALL mysql.rds_next_source_log_for_channel( curr_master_log, channel_name );

參數

curr_master_log

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

channel_name

多來源複本上複寫通道的名稱。每個複寫通道都會從在特定主機和連接埠上執行的單一來源 RDS for MySQL 資料庫執行個體接收二進位日誌事件。

使用須知

主要使用者必須執行 mysql.rds_next_source_log_for_channel 程序。例如,如果有 IO_Thread 錯誤,則您可以使用此程序來略過目前二進位日誌檔中的所有事件,並從 channel_name 中指定通道的下一個二進位日誌檔繼續複寫。

範例

假設多來源複本上的通道複寫失敗。在多來源複本上執行 SHOW REPLICA STATUS FOR CHANNEL 'channel_1'\G 將傳回下列結果:

mysql> SHOW REPLICA STATUS FOR CHANNEL 'channel_1'\G *************************** 1. row *************************** Replica_IO_State: Waiting for source to send event Source_Host: myhost.XXXXXXXXXXXXXXX.rr-rrrr-1.rds.amazonaws.com Source_User: ReplicationUser Source_Port: 3306 Connect_Retry: 60 Source_Log_File: mysql-bin-changelog.012345 Read_Source_Log_Pos: 1219393 Relay_Log_File: replica-relay-bin.000003 Relay_Log_Pos: 30223388 Relay_Source_Log_File: mysql-bin-changelog.012345 Replica_IO_Running: No Replica_SQL_Running: Yes Replicate_Do_DB:. . . 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: . . Channel_name: channel_1 . . -- Some fields are omitted in this example output

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

CALL mysql.rds_next_source_log_for_channel(12345,'channel_1');

mysql.rds_reset_external_source_for_channel

停止指定通道上的複寫程序,並從多來源複本中移除通道和相關聯的組態。

重要

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

語法

CALL mysql.rds_reset_external_source_for_channel (channel_name);

參數

channel_name

多來源複本上複寫通道的名稱。每個複寫通道都會從在特定主機和連接埠上執行的單一來源 RDS for MySQL 資料庫執行個體接收二進位日誌事件。

使用須知

主要使用者必須執行 mysql.rds_reset_external_source_for_channel 程序。此程序會刪除屬於所要移除通道的所有轉送日誌。

mysql.rds_set_external_source_for_channel

設定 RDS for MySQL 資料庫執行個體上的複寫通道,以從另一個 RDS for MySQL 資料庫執行個體複寫資料。

重要

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

注意

您可以改為使用 mysql.rds_set_external_source_with_delay_for_channel 預存程序,以延遲複寫來設定此通道。

語法

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

參數

host_name

RDS for MySQL 來源資料庫執行個體的主機名稱或 IP 位址。

host_port

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

replication_user_name

RDS for MySQL 來源資料庫執行個體上具有 REPLICATION CLIENTREPLICATION SLAVE 許可的使用者 ID。我們建議您提供單獨用於來源資料庫執行個體複寫的帳戶。

replication_user_password

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

mysql_binary_log_file_name

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

mysql_binary_log_file_location

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

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

注意

MySQL 以前的版本使用 SHOW MASTER STATUS 而不是 SHOW BINARY LOG STATUS。如果您使用的 MySQL 是 8.4 之前的版本,請使用 SHOW MASTER STATUS

ssl_encryption

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

注意

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

channel_name

複寫通道的名稱。每個複寫通道都會從在特定主機和連接埠上執行的單一來源 RDS for MySQL 資料庫執行個體接收二進位日誌事件。

使用須知

主要使用者必須執行 mysql.rds_set_external_source_for_channel 程序。此程序必須在您要建立複寫通道的目標 RDS for MySQL 資料庫執行個體上執行。

在執行 mysql.rds_set_external_source_for_channel 之前,請利用多來源複本所需的權限,在來源資料庫執行個體上設定複寫使用者。若要將多來源複本連線至來源資料庫執行個體,您必須指定在來源資料庫執行個體上具有 REPLICATION CLIENTREPLICATION SLAVE 許可之複寫使用者的 replication_user_namereplication_user_password 值。

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

    重要

    作為安全最佳實務,請指定以下範例中所顯示預留位置值以外的密碼。

    CREATE USER 'repl_user'@'example.com' IDENTIFIED BY 'password';
  2. 在來源資料庫執行個體上,請將 REPLICATION CLIENTREPLICATION SLAVE 權限授予複寫使用者。下列範例將所有資料庫上的 REPLICATION CLIENTREPLICATION SLAVE 權限授予您網域中的 'repl_user' 使用者。

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

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

呼叫 mysql.rds_set_external_source_for_channel 以設定此複寫通道之後,您可以呼叫複本上的 mysql.rds_start_replication_for_channel 來啟動通道上的複寫程序。您可以呼叫 mysql.rds_reset_external_source_for_channel 以停止通道上的複寫,並從複本中移除通道組態。

當您呼叫 mysql.rds_set_external_source_for_channel 時,Amazon RDS 會將 set channel source 的時間、使用者和動作記錄在 mysql.rds_history 資料表中 (不含通道特定詳細資訊),以及記錄在 mysql.rds_replication_status 資料表中 (含通道名稱)。此資訊僅用於內部使用和監控目的。若要記錄用於稽核目的的完整程序呼叫,請考慮根據您應用程式的特定需求啟用稽核日誌或一般日誌。

範例

在 RDS for MySQL 資料庫執行個體上執行時,下列範例會設定在此資料庫執行個體上名為 channel_1 的複寫通道,以從主機 sourcedb.example.com 和連接埠 3306 指定的來源複寫資料。

call mysql.rds_set_external_source_for_channel( 'sourcedb.example.com', 3306, 'repl_user', 'password', 'mysql-bin-changelog.0777', 120, 0, 'channel_1');

mysql.rds_set_external_source_with_auto_position_for_channel

在具有選用複寫延遲的 RDS for MySQL 資料庫執行個體上設定複寫通道。複寫也會以全域交易識別符 (GTID) 為依據。

重要

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

語法

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

參數

host_name

RDS for MySQL 來源資料庫執行個體的主機名稱或 IP 位址。

host_port

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

replication_user_name

RDS for MySQL 來源資料庫執行個體上具有 REPLICATION CLIENTREPLICATION SLAVE 許可的使用者 ID。我們建議您提供單獨用於來源資料庫執行個體複寫的帳戶。

replication_user_password

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

ssl_encryption

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

注意

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

延遲

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

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

channel_name

複寫通道的名稱。每個複寫通道都會從在特定主機和連接埠上執行的單一來源 RDS for MySQL 資料庫執行個體接收二進位日誌事件。

使用須知

主要使用者必須執行 mysql.rds_set_external_source_with_auto_position_for_channel 程序。此程序必須在您要建立複寫通道的目標 RDS for MySQL 資料庫執行個體上執行。

在執行 rds_set_external_source_with_auto_position_for_channel 之前,請利用多來源複本所需的權限,在來源資料庫執行個體上設定複寫使用者。若要將多來源複本連線至來源資料庫執行個體,您必須指定在來源資料庫執行個體上具有 REPLICATION CLIENTREPLICATION SLAVE 許可之複寫使用者的 replication_user_namereplication_user_password 值。

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

    重要

    作為安全最佳實務,請指定以下範例中所顯示預留位置值以外的密碼。

    CREATE USER 'repl_user'@'example.com' IDENTIFIED BY 'password';
  2. 在來源資料庫執行個體上,請將 REPLICATION CLIENTREPLICATION SLAVE 權限授予複寫使用者。下列範例將所有資料庫上的 REPLICATION CLIENTREPLICATION SLAVE 權限授予您網域中的 'repl_user' 使用者。

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

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

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

呼叫 mysql.rds_set_external_source_with_auto_position_for_channel 將 Amazon RDS 資料庫執行個體設定為在特定通道上僅供讀取複本之後,您可以在僅供讀取複本上呼叫 mysql.rds_start_replication_for_channel,以在該通道上啟動複寫程序。

呼叫 mysql.rds_set_external_source_with_auto_position_for_channel 以設定此複寫通道之後,您可以呼叫複本上的 mysql.rds_start_replication_for_channel 來啟動通道上的複寫程序。您可以呼叫 mysql.rds_reset_external_source_for_channel 以停止通道上的複寫,並從複本中移除通道組態。

範例

在 RDS for MySQL 資料庫執行個體上執行時,下列範例會設定在此資料庫執行個體上名為 channel_1 的複寫通道,以從主機 sourcedb.example.com 和連接埠 3306 指定的來源複寫資料。其會將最小複寫延遲設定為一小時 (3,600 秒)。這表示多來源複本上至少一小時不會套用來自來源 RDS for MySQL 資料庫執行個體的變更。

call mysql.rds_set_external_source_with_auto_position_for_channel( 'sourcedb.example.com', 3306, 'repl_user', 'password', 1, 3600, 'channel_1');

mysql.rds_set_external_source_with_delay_for_channel

在具有指定複寫延遲的 RDS for MySQL 資料庫執行個體上設定複寫通道。

重要

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

語法

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

參數

host_name

RDS for MySQL 來源資料庫執行個體的主機名稱或 IP 位址。

host_port

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

replication_user_name

RDS for MySQL 來源資料庫執行個體上具有 REPLICATION CLIENTREPLICATION SLAVE 許可的使用者 ID。我們建議您提供單獨用於來源資料庫執行個體複寫的帳戶。

replication_user_password

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

mysql_binary_log_file_name

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

mysql_binary_log_file_location

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

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

注意

MySQL 以前的版本使用 SHOW MASTER STATUS 而不是 SHOW BINARY LOG STATUS。如果您使用的 MySQL 是 8.4 之前的版本,請使用 SHOW MASTER STATUS

ssl_encryption

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

注意

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

延遲

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

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

channel_name

複寫通道的名稱。每個複寫通道都會從在特定主機和連接埠上執行的單一來源 RDS for MySQL 資料庫執行個體接收二進位日誌事件。

使用須知

主要使用者必須執行 mysql.rds_set_external_source_with_delay_for_channel 程序。此程序必須在您要建立複寫通道的目標 RDS for MySQL 資料庫執行個體上執行。

在執行 mysql.rds_set_external_source_with_delay_for_channel 之前,請利用多來源複本所需的權限,在來源資料庫執行個體上設定複寫使用者。若要將多來源複本連線至來源資料庫執行個體,您必須指定在來源資料庫執行個體上具有 REPLICATION CLIENTREPLICATION SLAVE 許可之複寫使用者的 replication_user_namereplication_user_password 值。

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

    重要

    作為安全最佳實務,請指定以下範例中所顯示預留位置值以外的密碼。

    CREATE USER 'repl_user'@'example.com' IDENTIFIED BY 'password';
  2. 在來源資料庫執行個體上,請將 REPLICATION CLIENTREPLICATION SLAVE 權限授予複寫使用者。下列範例將所有資料庫上的 REPLICATION CLIENTREPLICATION SLAVE 權限授予您網域中的 'repl_user' 使用者。

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

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

呼叫 mysql.rds_set_external_source_with_delay_for_channel 以設定此複寫通道之後,您可以呼叫複本上的 mysql.rds_start_replication_for_channel 來啟動通道上的複寫程序。您可以呼叫 mysql.rds_reset_external_source_for_channel 以停止通道上的複寫,並從複本中移除通道組態。

當您呼叫 mysql.rds_set_external_source_with_delay_for_channel 時,Amazon RDS 會將 set channel source 的時間、使用者和動作記錄在 mysql.rds_history 資料表中 (不含通道特定詳細資訊),以及記錄在 mysql.rds_replication_status 資料表中 (含通道名稱)。此資訊僅用於內部使用和監控目的。若要記錄用於稽核目的的完整程序呼叫,請考慮根據您應用程式的特定需求啟用稽核日誌或一般日誌。

範例

在 RDS for MySQL 資料庫執行個體上執行時,下列範例會設定在此資料庫執行個體上名為 channel_1 的複寫通道,以從主機 sourcedb.example.com 和連接埠 3306 指定的來源複寫資料。其會將最小複寫延遲設定為一小時 (3,600 秒)。這表示多來源複本上至少一小時不會套用來自來源 RDS for MySQL 資料庫執行個體的變更。

call mysql.rds_set_external_source_with_delay_for_channel( 'sourcedb.example.com', 3306, 'repl_user', 'password', 'mysql-bin-changelog.000777', 120, 1, 3600, 'channel_1');

mysql.rds_set_source_auto_position_for_channel

將指定通道的複寫模式設為依據二進制日誌檔案位置或全域交易識別符 (GTID)。

語法

CALL mysql.rds_set_source_auto_position_for_channel ( auto_position_mode , channel_name );

參數

auto_position_mode

此值指示要使用日誌檔案位置複寫或是 GTID 複寫:

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

  • 1 – 使用依據 GTID 的複寫方法。

channel_name

多來源複本上複寫通道的名稱。每個複寫通道都會從在特定主機和連接埠上執行的單一來源 RDS for MySQL 資料庫執行個體接收二進位日誌事件。

使用須知

主要使用者必須執行 mysql.rds_set_source_auto_position_for_channel 程序。此程序會重新啟動指定通道上的複寫,以套用指定的自動定位模式。

範例

下列範例會將 channel_1 的自動定位模式設定為使用 GTID 型複寫方法。

call mysql.rds_set_source_auto_position_for_channel(1,'channel_1');

mysql.rds_set_source_delay_for_channel

設定最低秒數,以延遲來源資料庫執行個體到指定通道多來源複本的複寫。

語法

CALL mysql.rds_set_source_delay_for_channel(delay, channel_name);

參數

延遲

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

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

channel_name

多來源複本上複寫通道的名稱。每個複寫通道都會從在特定主機和連接埠上執行的單一來源 RDS for MySQL 資料庫執行個體接收二進位日誌事件。

使用須知

主要使用者必須執行 mysql.rds_set_source_delay_for_channel 程序。若要使用此程序,請先呼叫 mysql.rds_stop_replication_for_channel 來停止複寫。然後,呼叫此程序來設定複寫延遲值。設定延遲時,請呼叫 mysql.rds_start_replication_for_channel 以重新啟動複寫。

範例

下列範例會在多來源複本的 channel_1 上設定來源資料庫執行個體的複寫延遲至少一小時 (3,600 秒)。

CALL mysql.rds_set_source_delay_for_channel(3600,'channel_1');

mysql.rds_skip_repl_error_for_channel

略過二進位日誌事件,並刪除指定通道之 MySQL 資料庫多來源複本上的複寫錯誤。

語法

CALL mysql.rds_skip_repl_error_for_channel(channel_name);

參數

channel_name

多來源複本上複寫通道的名稱。每個複寫通道都會從在特定主機和連接埠上執行的單一來源 RDS for MySQL 資料庫執行個體接收二進位日誌事件。

使用須知

主要使用者必須在僅供讀取複本上執行 mysql.rds_skip_repl_error_for_channel 程序。您可以用類似的方式 mysql.rds_skip_repl_error 使用此程序來略過僅供讀取複本上的錯誤。如需更多詳細資訊,請參閱 呼叫 mysql.rds_skip_repl_error 程序

注意

若要略過 GTID 型複寫中的錯誤,建議您改用 mysql.rds_skip_transaction_with_gtid 程序。

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

mysql.rds_start_replication_for_channel

從 RDS for MySQL 資料庫執行個體開始複寫至指定通道上的多來源複本。

注意

您可使用 mysql.rds_start_replication_until_for_channelmysql.rds_start_replication_until_gtid_for_channel 預存程序從 RDS for MySQL 資料庫執行個體來啟動複寫,並從特定的二進位日誌檔案位置停止複寫。

語法

CALL mysql.rds_start_replication_for_channel(channel_name);

參數

channel_name

多來源複本上複寫通道的名稱。每個複寫通道都會從在特定主機和連接埠上執行的單一來源 RDS for MySQL 資料庫執行個體接收二進位日誌事件。

使用須知

主要使用者必須執行 mysql.rds_start_replication_for_channel 程序。從來源 RDS for MySQL 資料庫執行個體匯入資料後,請在多來源複本上執行此命令,以在指定的通道上開始複寫。

範例

下列範例會在多來源複本的 channel_1 上開始複寫。

CALL mysql.rds_start_replication_for_channel('channel_1');

mysql.rds_start_replication_until_for_channel

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

語法

CALL mysql.rds_start_replication_until_for_channel ( replication_log_file , replication_stop_point , channel_name );

參數

replication_log_file

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

replication_stop_point

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

channel_name

多來源複本上複寫通道的名稱。每個複寫通道都會從在特定主機和連接埠上執行的單一來源 RDS for MySQL 資料庫執行個體接收二進位日誌事件。

使用須知

主要使用者必須執行 mysql.rds_start_replication_until_for_channel 程序。透過此程序,隨即開始複寫,然後在達到指定的 binlog 檔案位置時停止。此程序會同時停止 SQL_THREADIO_THREAD

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

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

範例

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

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

mysql.rds_start_replication_until_gtid_for_channel

從 RDS for MySQL 資料庫執行個體啟動指定通道上的複寫,並在指定的全域交易識別符 (GTID) 停止複寫。

語法

CALL mysql.rds_start_replication_until_gtid_for_channel(gtid,channel_name);

參數

gtid

在此 GTID 後停止複寫。

channel_name

多來源複本上複寫通道的名稱。每個複寫通道都會從在特定主機和連接埠上執行的單一來源 RDS for MySQL 資料庫執行個體接收二進位日誌事件。

使用須知

主要使用者必須執行 mysql.rds_start_replication_until_gtid_for_channel 程序。程序會在指定的通道上開始複寫,並將所有變更套用至指定的 GTID 值。然後,它會停止通道上的複寫。

gtid 參數指定了複本已經執行的交易時,複寫會立即停止。

執行此程序之前,您必須將 replica_parallel_workersslave_parallel_workers 的值設定為 0,以停用多執行緒複寫。

範例

以下範例會啟動 channel_1 上的複寫,並複寫變更直到達到 GTID 3E11FA47-71CA-11E1-9E33-C80AA9429562:23 為止。

call mysql.rds_start_replication_until_gtid_for_channel('3E11FA47-71CA-11E1-9E33-C80AA9429562:23','channel_1');

mysql.rds_stop_replication_for_channel

從指定通道上的 MySQL 資料庫執行個體停止複寫。

語法

CALL mysql.rds_stop_replication_for_channel(channel_name);

參數

channel_name

多來源複本上複寫通道的名稱。每個複寫通道都會從在特定主機和連接埠上執行的單一來源 RDS for MySQL 資料庫執行個體接收二進位日誌事件。

使用須知

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

範例

下列範例會在多來源複本的 channel_1 上停止複寫。

CALL mysql.rds_stop_replication_for_channel('channel_1');