

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

# 管理多來源複寫
<a name="mysql-stored-proc-multi-source-replication"></a>

下列預存程序會在 RDS for MySQL 多來源複本上設定及管理複寫通道。如需更多詳細資訊，請參閱 [為 Amazon RDS for MySQL 設定多來源複寫](mysql-multi-source-replication.md)。

這些預存程序僅適用於執行下列引擎版本的 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 執行個體。

**Topics**
+ [mysql.rds\$1next\$1source\$1log\$1for\$1channel](#mysql_rds_next_source_log_for_channel)
+ [mysql.rds\$1reset\$1external\$1source\$1for\$1channel](#mysql_rds_reset_external_source_for_channel)
+ [mysql.rds\$1set\$1external\$1source\$1for\$1channel](#mysql_rds_set_external_source_for_channel)
+ [mysql.rds\$1set\$1external\$1source\$1with\$1auto\$1position\$1for\$1channel](#mysql_rds_set_external_source_with_auto_position_for_channel)
+ [mysql.rds\$1set\$1external\$1source\$1with\$1delay\$1for\$1channel](#mysql_rds_set_external_source_with_delay_for_channel)
+ [mysql.rds\$1set\$1source\$1auto\$1position\$1for\$1channel](#mysql_rds_set_source_auto_position_for_channel)
+ [mysql.rds\$1set\$1source\$1delay\$1for\$1channel](#mysql_rds_set_source_delay_for_channel)
+ [mysql.rds\$1skip\$1repl\$1error\$1for\$1channel](#mysql_rds_skip_repl_error_for_channel)
+ [mysql.rds\$1start\$1replication\$1for\$1channel](#mysql_rds_start_replication_for_channel)
+ [mysql.rds\$1start\$1replication\$1until\$1for\$1channel](#mysql_rds_start_replication_until_for_channel)
+ [mysql.rds\$1start\$1replication\$1until\$1gtid\$1for\$1channel](#mysql_rds_start_replication_until_gtid_for_channel)
+ [mysql.rds\$1stop\$1replication\$1for\$1channel](#mysql_rds_stop_replication_for_channel)

## mysql.rds\$1next\$1source\$1log\$1for\$1channel
<a name="mysql_rds_next_source_log_for_channel"></a>

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

### 語法
<a name="mysql_rds_next_source_log_for_channel-syntax"></a>

 

```
CALL mysql.rds_next_source_log_for_channel(
curr_master_log,
channel_name           
);
```

### 參數
<a name="mysql_rds_next_source_log_for_channel-parameters"></a>

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

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

### 使用須知
<a name="mysql_rds_next_source_log_for_channel-usage-notes"></a>

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

### 範例
<a name="mysql_rds_group_replication_advance_gtid-examples"></a>

假設多來源複本上的通道複寫失敗。在多來源複本上執行 `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\$1reset\$1external\$1source\$1for\$1channel
<a name="mysql_rds_reset_external_source_for_channel"></a>

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

**重要**  
若要執行此程序，必須啟用 `autocommit`。若要啟用它，請將 `autocommit` 參數設定為 `1`。如需修改參數的相關資訊，請參閱[修改 Amazon RDS 中的資料庫參數群組中的參數](USER_WorkingWithParamGroups.Modifying.md)。

### 語法
<a name="mysql_rds_reset_external_source_for_channel-syntax"></a>



```
CALL mysql.rds_reset_external_source_for_channel (channel_name);
```

### 參數
<a name="mysql_rds_reset_external_source_for_channel-parameters"></a>

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

### 使用須知
<a name="mysql_rds_reset_external_source_for_channel-usage-notes"></a>

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

## mysql.rds\$1set\$1external\$1source\$1for\$1channel
<a name="mysql_rds_set_external_source_for_channel"></a>

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

**重要**  
若要執行此程序，必須啟用 `autocommit`。若要啟用它，請將 `autocommit` 參數設定為 `1`。如需修改參數的相關資訊，請參閱[修改 Amazon RDS 中的資料庫參數群組中的參數](USER_WorkingWithParamGroups.Modifying.md)。

**注意**  
您可以改為使用 [mysql.rds\$1set\$1external\$1source\$1with\$1delay\$1for\$1channel](#mysql_rds_set_external_source_with_delay_for_channel) 預存程序，以延遲複寫來設定此通道。

### 語法
<a name="mysql_rds_set_external_source_for_channel-syntax"></a>



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

### 參數
<a name="mysql_rds_set_external_source_for_channel-parameters"></a>

 *host\$1name*   
RDS for MySQL 來源資料庫執行個體的主機名稱或 IP 位址。

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

 *replication\$1user\$1name*   
RDS for MySQL 來源資料庫執行個體上具有 `REPLICATION CLIENT` 和 `REPLICATION SLAVE` 許可的使用者 ID。我們建議您提供單獨用於來源資料庫執行個體複寫的帳戶。

 *replication\$1user\$1password*   
`replication_user_name` 中指定之使用者 ID 的密碼。

 *mysql\$1binary\$1log\$1file\$1name*   
來源資料庫執行個體上包含複寫資訊之二進位日誌的名稱。

 *mysql\$1binary\$1log\$1file\$1location*   
複寫在 `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\$1encryption*   
此值指定在複寫連線上是否使用 Secure Socket Layer (SSL) 加密。1 指定使用 SSL 加密，0 指定不使用加密。預設為 0。  
不支援 `SOURCE_SSL_VERIFY_SERVER_CERT` 選項。此選項設定為 0，表示連線已加密，但憑證未經過驗證。

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

### 使用須知
<a name="mysql_rds_set_external_source_for_channel-usage-notes"></a>

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

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

**設定來源資料庫執行個體上的複寫使用者**

1. 使用您選擇的 MySQL 用戶端，連線至來源資料庫執行個體，並建立用於複寫的使用者帳戶。以下是範例。
**重要**  
作為安全最佳實務，請指定以下範例中所顯示預留位置值以外的密碼。

   ```
   CREATE USER 'repl_user'@'example.com' IDENTIFIED BY 'password';
   ```

1. 在來源資料庫執行個體上，請將 `REPLICATION CLIENT` 和 `REPLICATION SLAVE` 權限授予複寫使用者。下列範例將所有資料庫上的 `REPLICATION CLIENT` 和 `REPLICATION SLAVE` 權限授予您網域中的 'repl\$1user' 使用者。

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

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

呼叫 `mysql.rds_set_external_source_for_channel` 以設定此複寫通道之後，您可以呼叫複本上的 [mysql.rds\$1start\$1replication\$1for\$1channel](#mysql_rds_start_replication_for_channel) 來啟動通道上的複寫程序。您可以呼叫 [mysql.rds\$1reset\$1external\$1source\$1for\$1channel](#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` 資料表中 (含通道名稱)。此資訊僅用於內部使用和監控目的。若要記錄用於稽核目的的完整程序呼叫，請考慮根據您應用程式的特定需求啟用稽核日誌或一般日誌。

### 範例
<a name="mysql_rds_set_external_source_for_channel-examples"></a>

在 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\$1set\$1external\$1source\$1with\$1auto\$1position\$1for\$1channel
<a name="mysql_rds_set_external_source_with_auto_position_for_channel"></a>

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

**重要**  
若要執行此程序，必須啟用 `autocommit`。若要啟用它，請將 `autocommit` 參數設定為 `1`。如需修改參數的相關資訊，請參閱[修改 Amazon RDS 中的資料庫參數群組中的參數](USER_WorkingWithParamGroups.Modifying.md)。

### 語法
<a name="mysql_rds_set_external_master_with_auto_position_for_channel-syntax"></a>

 

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

### 參數
<a name="mysql_rds_set_external_master_with_auto_position_for_channel-parameters"></a>

 *host\$1name*   
RDS for MySQL 來源資料庫執行個體的主機名稱或 IP 位址。

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

 *replication\$1user\$1name*   
RDS for MySQL 來源資料庫執行個體上具有 `REPLICATION CLIENT` 和 `REPLICATION SLAVE` 許可的使用者 ID。我們建議您提供單獨用於來源資料庫執行個體複寫的帳戶。

 *replication\$1user\$1password*   
`replication_user_name` 中指定之使用者 ID 的密碼。

 *ssl\$1encryption*   
此值指定在複寫連線上是否使用 Secure Socket Layer (SSL) 加密。1 指定使用 SSL 加密，0 指定不使用加密。預設為 0。  
不支援 `SOURCE_SSL_VERIFY_SERVER_CERT` 選項。此選項設定為 0，表示連線已加密，但憑證未經過驗證。

 *延遲*   
從來源資料庫執行個體延遲複寫的最低秒數。  
此參數的限制為一日 (86400 秒)。

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

### 使用須知
<a name="mysql_rds_set_external_master_with_auto_position_for_channel-usage-notes"></a>

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

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

**設定來源資料庫執行個體上的複寫使用者**

1. 使用您選擇的 MySQL 用戶端，連線至來源資料庫執行個體，並建立用於複寫的使用者帳戶。以下是範例。
**重要**  
作為安全最佳實務，請指定以下範例中所顯示預留位置值以外的密碼。

   ```
   CREATE USER 'repl_user'@'example.com' IDENTIFIED BY 'password';
   ```

1. 在來源資料庫執行個體上，請將 `REPLICATION CLIENT` 和 `REPLICATION SLAVE` 權限授予複寫使用者。下列範例將所有資料庫上的 `REPLICATION CLIENT` 和 `REPLICATION SLAVE` 權限授予您網域中的 'repl\$1user' 使用者。

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

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

呼叫 `mysql.rds_set_external_source_with_auto_position_for_channel` 之前，請務必呼叫 [mysql.rds\$1set\$1external\$1source\$1gtid\$1purged](mysql-stored-proc-replicating.md#mysql_rds_set_external_source_gtid_purged)，以從外部來源設定具有指定 GTID 範圍的 `gtid_purged` 系統變數。

呼叫 `mysql.rds_set_external_source_with_auto_position_for_channel` 將 Amazon RDS 資料庫執行個體設定為在特定通道上僅供讀取複本之後，您可以在僅供讀取複本上呼叫 [mysql.rds\$1start\$1replication\$1for\$1channel](#mysql_rds_start_replication_for_channel)，以在該通道上啟動複寫程序。

呼叫 `mysql.rds_set_external_source_with_auto_position_for_channel` 以設定此複寫通道之後，您可以呼叫複本上的 [mysql.rds\$1start\$1replication\$1for\$1channel](#mysql_rds_start_replication_for_channel) 來啟動通道上的複寫程序。您可以呼叫 [mysql.rds\$1reset\$1external\$1source\$1for\$1channel](#mysql_rds_reset_external_source_for_channel) 以停止通道上的複寫，並從複本中移除通道組態。

### 範例
<a name="mysql_rds_set_external_master_with_auto_position_for_channel-examples"></a>

在 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\$1set\$1external\$1source\$1with\$1delay\$1for\$1channel
<a name="mysql_rds_set_external_source_with_delay_for_channel"></a>

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

**重要**  
若要執行此程序，必須啟用 `autocommit`。若要啟用它，請將 `autocommit` 參數設定為 `1`。如需修改參數的相關資訊，請參閱[修改 Amazon RDS 中的資料庫參數群組中的參數](USER_WorkingWithParamGroups.Modifying.md)。

### 語法
<a name="mysql_rds_set_external_source_with_delay_for_channel-syntax"></a>

 

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

### 參數
<a name="mysql_rds_set_external_source_with_delay_for_channel-parameters"></a>

 *host\$1name*   
RDS for MySQL 來源資料庫執行個體的主機名稱或 IP 位址。

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

 *replication\$1user\$1name*   
RDS for MySQL 來源資料庫執行個體上具有 `REPLICATION CLIENT` 和 `REPLICATION SLAVE` 許可的使用者 ID。我們建議您提供單獨用於來源資料庫執行個體複寫的帳戶。

 *replication\$1user\$1password*   
`replication_user_name` 中指定之使用者 ID 的密碼。

 *mysql\$1binary\$1log\$1file\$1name*   
來源資料庫執行個體上包含複寫資訊之二進位日誌的名稱。

 *mysql\$1binary\$1log\$1file\$1location*   
在 `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\$1encryption*   
此值指定在複寫連線上是否使用 Secure Socket Layer (SSL) 加密。1 指定使用 SSL 加密，0 指定不使用加密。預設為 0。  
不支援 `SOURCE_SSL_VERIFY_SERVER_CERT` 選項。此選項設定為 0，表示連線已加密，但憑證未經過驗證。

 *延遲*   
從來源資料庫執行個體延遲複寫的最低秒數。  
此參數的限制為一日 (86400 秒)。

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

### 使用須知
<a name="mysql_rds_set_external_source_with_delay_for_channel-usage-notes"></a>

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

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

**設定來源資料庫執行個體上的複寫使用者**

1. 使用您選擇的 MySQL 用戶端，連線至來源資料庫執行個體，並建立用於複寫的使用者帳戶。以下是範例。
**重要**  
作為安全最佳實務，請指定以下範例中所顯示預留位置值以外的密碼。

   ```
   CREATE USER 'repl_user'@'example.com' IDENTIFIED BY 'password';
   ```

1. 在來源資料庫執行個體上，請將 `REPLICATION CLIENT` 和 `REPLICATION SLAVE` 權限授予複寫使用者。下列範例將所有資料庫上的 `REPLICATION CLIENT` 和 `REPLICATION SLAVE` 權限授予您網域中的 'repl\$1user' 使用者。

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

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

呼叫 `mysql.rds_set_external_source_with_delay_for_channel` 以設定此複寫通道之後，您可以呼叫複本上的 [mysql.rds\$1start\$1replication\$1for\$1channel](#mysql_rds_start_replication_for_channel) 來啟動通道上的複寫程序。您可以呼叫 [mysql.rds\$1reset\$1external\$1source\$1for\$1channel](#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` 資料表中 (含通道名稱)。此資訊僅用於內部使用和監控目的。若要記錄用於稽核目的的完整程序呼叫，請考慮根據您應用程式的特定需求啟用稽核日誌或一般日誌。

### 範例
<a name="mysql_rds_set_external_source_with_delay_for_channel-examples"></a>

在 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\$1set\$1source\$1auto\$1position\$1for\$1channel
<a name="mysql_rds_set_source_auto_position_for_channel"></a>

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

### 語法
<a name="mysql_rds_set_source_auto_position_for_channel-syntax"></a>

 

```
CALL mysql.rds_set_source_auto_position_for_channel (
auto_position_mode
 , channel_name
);
```

### 參數
<a name="mysql_rds_set_source_auto_position_for_channel-parameters"></a>

 *auto\$1position\$1mode*   
此值指示要使用日誌檔案位置複寫或是 GTID 複寫：  
+ `0` – 使用依據二進制日誌檔案位置的複寫模式。預設值為 `0`。
+ `1` – 使用依據 GTID 的複寫方法。

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

### 使用須知
<a name="mysql_rds_set_source_auto_position_for_channel-usage-notes"></a>

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

### 範例
<a name="mysql_rds_set_source_auto_position_for_channel-examples"></a>

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

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

## mysql.rds\$1set\$1source\$1delay\$1for\$1channel
<a name="mysql_rds_set_source_delay_for_channel"></a>

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

### 語法
<a name="mysql_rds_set_source_delay_for_channel-syntax"></a>

```
CALL mysql.rds_set_source_delay_for_channel(delay, channel_name);
```

### 參數
<a name="mysql_rds_set_source_delay_for_channel-parameters"></a>

 *延遲*   
從來源資料庫執行個體延遲複寫的最低秒數。  
此參數的限制為一日 (86400 秒)。

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

### 使用須知
<a name="mysql_rds_set_source_delay_for_channel-usage-notes"></a>

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

### 範例
<a name="mysql_rds_set_source_delay_for_channel-examples"></a>

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

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

## mysql.rds\$1skip\$1repl\$1error\$1for\$1channel
<a name="mysql_rds_skip_repl_error_for_channel"></a>

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

### 語法
<a name="mysql_rds_skip_repl_error_for_channel-syntax"></a>

 

```
CALL mysql.rds_skip_repl_error_for_channel(channel_name);
```

### 參數
<a name="mysql_rds_skip_repl_error_for_channel-parameters"></a>

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

### 使用須知
<a name="mysql_rds_skip_repl_error_for_channel-usage-notes"></a>

主要使用者必須在僅供讀取複本上執行 `mysql.rds_skip_repl_error_for_channel` 程序。您可以用類似的方式 `mysql.rds_skip_repl_error` 使用此程序來略過僅供讀取複本上的錯誤。如需更多詳細資訊，請參閱 [呼叫 mysql.rds\$1skip\$1repl\$1error 程序](Appendix.MySQL.CommonDBATasks.SkipError.md#Appendix.MySQL.CommonDBATasks.SkipError.procedure)。

**注意**  
若要略過 GTID 型複寫中的錯誤，建議您改用 [mysql.rds\$1skip\$1transaction\$1with\$1gtid](mysql-stored-proc-gtid.md#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 陳述式](https://dev.mysql.com/doc/refman/8.0/en/show-replica-status.html)。

## mysql.rds\$1start\$1replication\$1for\$1channel
<a name="mysql_rds_start_replication_for_channel"></a>

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

**注意**  
您可使用 [mysql.rds\$1start\$1replication\$1until\$1for\$1channel](#mysql_rds_start_replication_until_for_channel) 或 [mysql.rds\$1start\$1replication\$1until\$1gtid\$1for\$1channel](#mysql_rds_start_replication_until_gtid_for_channel) 預存程序從 RDS for MySQL 資料庫執行個體來啟動複寫，並從特定的二進位日誌檔案位置停止複寫。

### 語法
<a name="mysql_rds_start_replication_for_channel-syntax"></a>

 

```
CALL mysql.rds_start_replication_for_channel(channel_name);
```

### 參數
<a name="mysql_rds_start_replication_for_channel-parameters"></a>

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

### 使用須知
<a name="mysql_rds_start_replication_for_channel-usage-notes"></a>

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

### 範例
<a name="mysql_rds_start_replication_for_channel-examples"></a>

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

```
CALL mysql.rds_start_replication_for_channel('channel_1');
```

## mysql.rds\$1start\$1replication\$1until\$1for\$1channel
<a name="mysql_rds_start_replication_until_for_channel"></a>

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

### 語法
<a name="mysql_rds_start_replication_until_for_channel-syntax"></a>

 

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

### 參數
<a name="mysql_rds_start_replication_until_for_channel-parameters"></a>

 *replication\$1log\$1file*   
來源資料庫執行個體上包含複寫資訊之二進位日誌的名稱。

 *replication\$1stop\$1point *   
在 `replication_log_file` 二進位日誌中的複寫將停止的位置。

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

### 使用須知
<a name="mysql_rds_start_replication_until_for_channel-usage-notes"></a>

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

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

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

### 範例
<a name="mysql_rds_start_replication_until_for_channel-examples"></a>

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

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

## mysql.rds\$1start\$1replication\$1until\$1gtid\$1for\$1channel
<a name="mysql_rds_start_replication_until_gtid_for_channel"></a>

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

### 語法
<a name="mysql_rds_start_replication_until_gtid_for_channel-syntax"></a>

 

```
CALL mysql.rds_start_replication_until_gtid_for_channel(gtid,channel_name);
```

### 參數
<a name="mysql_rds_start_replication_until_gtid_for_channel-parameters"></a>

 *gtid*   
在此 GTID 後停止複寫。

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

### 使用須知
<a name="mysql_rds_start_replication_until_gtid_for_channel-usage-notes"></a>

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

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

執行此程序之前，您必須將 `replica_parallel_workers` 或 `slave_parallel_workers` 的值設定為 `0`，以停用多執行緒複寫。

### 範例
<a name="mysql_rds_start_replication_until_gtid_for_channel-examples"></a>

以下範例會啟動 `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\$1stop\$1replication\$1for\$1channel
<a name="mysql_rds_stop_replication_for_channel"></a>

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

### 語法
<a name="mysql_rds_stop_replication_for_channel-syntax"></a>

 

```
CALL mysql.rds_stop_replication_for_channel(channel_name);
```

### 參數
<a name="mysql_rds_stop_replication_for_channel-parameters"></a>

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

### 使用須知
<a name="mysql_rds_stop_replication_for_channel-usage-notes"></a>

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

### 範例
<a name="mysql_rds_stop_replication_for_channel-examples"></a>

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

```
CALL mysql.rds_stop_replication_for_channel('channel_1');
```