

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

# 設定、啟動和停止二進位日誌 (binlog) 複寫
<a name="mysql-stored-proc-replicating"></a>

下列預存程序控制交易從外部資料庫複寫到 RDS for MySQL 中，或從 RDS for MySQL 複寫到外部資料庫的方式。

使用這些預存程序來管理使用者以 `caching_sha2_password` 設定的複寫進行的複寫，您必須透過指定 `SOURCE_SSL=1` 來設定 TLS。`caching_sha2_password` 是 RDS for MySQL 8.4 的預設身分驗證外掛程式。如需詳細資訊，請參閱 [使用 SSL/TLS 加密](mysql-ssl-connections.md)。

如需有關設定、使用和管理讀取複本的詳細資訊，請參閱 [使用 MySQL 僅供讀取複本](USER_MySQL.Replication.ReadReplicas.md)。

**Topics**
+ [mysql.rds\$1next\$1master\$1log (RDS for MariaDB 和 RDS for MySQL 主要版本 8.0 及更低版本）](#mysql_rds_next_master_log)
+ [mysql.rds\$1next\$1source\$1log (RDS for MySQL 主要版本 8.4 及更高版本)](#mysql_rds_next_source_log)
+ [mysql.rds\$1reset\$1external\$1master (RDS for MariaDB 和 RDS for MySQL 主要版本 8.0 及更低版本)](#mysql_rds_reset_external_master)
+ [mysql.rds\$1reset\$1external\$1source (RDS for MySQL 主要版本 8.4 及更新版本)](#mysql_rds_reset_external_source)
+ [mysql.rds\$1set\$1external\$1master (RDS for MariaDB 和 RDS for MySQL 主要版本 8.0 及更低版本)](#mysql_rds_set_external_master)
+ [mysql.rds\$1set\$1external\$1source (RDS for MySQL 主要版本 8.4 及更新版本)](#mysql_rds_set_external_source)
+ [mysql.rds\$1set\$1external\$1master\$1with\$1auto\$1position (RDS for MySQL 主要版本 8.0 及更低版本)](#mysql_rds_set_external_master_with_auto_position)
+ [mysql.rds\$1set\$1external\$1source\$1with\$1auto\$1position (RDS for MySQL 主要版本 8.4 及更新版本)](#mysql_rds_set_external_source_with_auto_position)
+ [mysql.rds\$1set\$1external\$1master\$1with\$1delay (RDS for MariaDB 和 RDS for MySQL 主要版本 8.0 及更低版本)](#mysql_rds_set_external_master_with_delay)
+ [mysql.rds\$1set\$1external\$1source\$1with\$1delay (RDS for MySQL 主要版本 8.4 及更新版本)](#mysql_rds_set_external_source_with_delay)
+ [mysql.rds\$1set\$1external\$1source\$1gtid\$1purged](#mysql_rds_set_external_source_gtid_purged)
+ [mysql.rds\$1set\$1master\$1auto\$1position (RDS for MySQL 主要版本 8.0 及更低版本）](#mysql_rds_set_master_auto_position)
+ [mysql.rds\$1set\$1source\$1auto\$1position (RDS for MySQL 主要版本 8.4 及更新版本)](#mysql_rds_set_source_auto_position)
+ [mysql.rds\$1set\$1source\$1delay](#mysql_rds_set_source_delay)
+ [mysql.rds\$1skip\$1repl\$1error](#mysql_rds_skip_repl_error)
+ [mysql.rds\$1start\$1replication](#mysql_rds_start_replication)
+ [mysql.rds\$1start\$1replication\$1until](#mysql_rds_start_replication_until)
+ [mysql.rds\$1stop\$1replication](#mysql_rds_stop_replication)

## mysql.rds\$1next\$1master\$1log (RDS for MariaDB 和 RDS for MySQL 主要版本 8.0 及更低版本）
<a name="mysql_rds_next_master_log"></a>

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

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

 

```
CALL mysql.rds_next_master_log(
curr_master_log
);
```

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

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

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

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

**警告**  
只有當複寫來源的異地同步備份資料庫執行個體在容錯移轉之後複寫失敗時，且 `mysql.rds_next_master_log` 的 `Last_IO_Errno` 欄位報告輸入/輸出錯誤 1236，才呼叫 `SHOW REPLICA STATUS`。  
在容錯移轉事件發生之前，如果來源執行個體中的交易未寫入磁碟上的二進位日誌，則呼叫 `mysql.rds_next_master_log` 會導致僅供讀取複本遺失資料。您可以將來源執行個體參數 `sync_binlog` 和 `innodb_support_xa` 設為 `1`，以降低此情況發生的機率，雖然這麼做會降低效能。如需詳細資訊，請參閱 [對 MySQL 僅供讀取複本問題進行故障診斷](USER_ReadRepl.Troubleshooting.md)。

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

假設 RDS for 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\$1next\$1source\$1log (RDS for MySQL 主要版本 8.4 及更高版本)
<a name="mysql_rds_next_source_log"></a>

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

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

 

```
CALL mysql.rds_next_source_log(
curr_source_log
);
```

### Parameters
<a name="mysql_rds_next_source_log-parameters"></a>

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

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

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

**警告**  
只有當複寫來源的異地同步備份資料庫執行個體在容錯移轉之後複寫失敗時，且 `mysql.rds_next_source_log` 的 `Last_IO_Errno` 欄位報告輸入/輸出錯誤 1236，才呼叫 `SHOW REPLICA STATUS`。  
在容錯移轉事件發生之前，如果來源執行個體中的交易未寫入磁碟上的二進位日誌，則呼叫 `mysql.rds_next_source_log` 會導致僅供讀取複本遺失資料。您可以將來源執行個體參數 `sync_binlog` 和 `innodb_support_xa` 設為 `1`，以降低此情況發生的機率，雖然這麼做會降低效能。如需詳細資訊，請參閱 [對 MySQL 僅供讀取複本問題進行故障診斷](USER_ReadRepl.Troubleshooting.md)。

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

假設 RDS for 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\$1reset\$1external\$1master (RDS for MariaDB 和 RDS for MySQL 主要版本 8.0 及更低版本)
<a name="mysql_rds_reset_external_master"></a>

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

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

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

 

```
CALL mysql.rds_reset_external_master;
```

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

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

**注意**  
如果可能，建議您使用僅供讀取複本來管理兩個 Amazon RDS 資料庫執行個體間的複寫。當您這麼做時，建議您僅使用此程序和其他與複寫相關的預存程序。這些做法使得 Amazon RDS 資料庫執行個體之間能夠實行更複雜的複寫拓撲。我們提供這些預存程序主要是為了對 Amazon RDS 外部執行的 MySQL 執行個體啟用複寫。如需 Amazon RDS 資料庫執行個體之間管理複寫的相關資訊，請參閱[使用資料庫執行個體僅供讀取複本](USER_ReadRepl.md)。

如需使用複寫從 Amazon RDS 外部執行的 MySQL 執行個體匯入資料的詳細資訊，請參閱[使用外部來源執行個體設定二進位日誌檔案位置複寫](MySQL.Procedural.Importing.External.Repl.md)。

## mysql.rds\$1reset\$1external\$1source (RDS for MySQL 主要版本 8.4 及更新版本)
<a name="mysql_rds_reset_external_source"></a>

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

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

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

 

```
CALL mysql.rds_reset_external_source;
```

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

管理使用者必須執行 `mysql.rds_reset_external_source` 程序。此程序必須在要做為 MySQL 執行個體 (在 Amazon RDS 外部執行) 之僅供讀取複本的將被移除的 MySQL 資料庫執行個體上執行。

**注意**  
如果可能，建議您使用僅供讀取複本來管理兩個 Amazon RDS 資料庫執行個體間的複寫。當您這麼做時，建議您僅使用此程序和其他與複寫相關的預存程序。這些做法使得 Amazon RDS 資料庫執行個體之間能夠實行更複雜的複寫拓撲。我們提供這些預存程序主要是為了對 Amazon RDS 外部執行的 MySQL 執行個體啟用複寫。  
如需 Amazon RDS 資料庫執行個體之間管理複寫的相關資訊，請參閱[使用資料庫執行個體僅供讀取複本](USER_ReadRepl.md)。如需使用複寫從 Amazon RDS 外部執行的 MySQL 執行個體匯入資料的詳細資訊，請參閱[使用外部來源執行個體設定二進位日誌檔案位置複寫](MySQL.Procedural.Importing.External.Repl.md)。

## mysql.rds\$1set\$1external\$1master (RDS for MariaDB 和 RDS for MySQL 主要版本 8.0 及更低版本)
<a name="mysql_rds_set_external_master"></a>

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

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

**注意**  
您可以使用 [mysql.rds\$1set\$1external\$1master\$1with\$1delay (RDS for MariaDB 和 RDS for MySQL 主要版本 8.0 及更低版本)](#mysql_rds_set_external_master_with_delay) 預存程序來設定外部來源資料庫執行個體與延遲的複寫。

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

 

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

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

 *host\$1name*   
要成為來源資料庫執行個體之 MySQL 執行個體 (在 Amazon RDS 外部執行) 的主機名稱或 IP 地址。

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

 *replication\$1user\$1name*   
在 Amazon RDS 外部執行的 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 MASTER STATUS` 來判斷 binlog 檔案名稱和位置。

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

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

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

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

**將外部 MySQL 執行個體設定為來源資料庫執行個體**

1. 使用您選擇的 MySQL 用戶端，連線至外部 MySQL 執行個體，並建立用於複寫的使用者帳戶。下列是 範例。

   **MySQL 5.7**

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

   **MySQL 8.0**

   ```
   CREATE USER 'repl_user'@'mydomain.com' IDENTIFIED WITH mysql_native_password BY 'password';
   ```
**注意**  
指定此處所顯示提示以外的密碼，作為安全最佳實務。

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

   **MySQL 5.7**

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

   **MySQL 8.0**

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

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

**注意**  
如果可能，建議您使用僅供讀取複本來管理兩個 Amazon RDS 資料庫執行個體間的複寫。當您這麼做時，建議您僅使用此程序和其他與複寫相關的預存程序。這些做法使得 Amazon RDS 資料庫執行個體之間能夠實行更複雜的複寫拓撲。我們提供這些預存程序主要是為了對 Amazon RDS 外部執行的 MySQL 執行個體啟用複寫。如需 Amazon RDS 資料庫執行個體之間管理複寫的相關資訊，請參閱[使用資料庫執行個體僅供讀取複本](USER_ReadRepl.md)。

呼叫 `mysql.rds_set_external_master` 將 Amazon RDS 資料庫執行個體設定為僅供讀取複本之後，您可以在僅供讀取複本上呼叫 [mysql.rds\$1start\$1replication](#mysql_rds_start_replication) 來啟動複寫程序。您可以呼叫 [mysql.rds\$1reset\$1external\$1master (RDS for MariaDB 和 RDS for MySQL 主要版本 8.0 及更低版本)](#mysql_rds_reset_external_master) 來移除僅供讀取複本組態。

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

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

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

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

## mysql.rds\$1set\$1external\$1source (RDS for MySQL 主要版本 8.4 及更新版本)
<a name="mysql_rds_set_external_source"></a>

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

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

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

 

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

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

 *host\$1name*   
要成為來源資料庫執行個體之 MySQL 執行個體 (在 Amazon RDS 外部執行) 的主機名稱或 IP 地址。

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

 *replication\$1user\$1name*   
在 Amazon RDS 外部執行的 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 MASTER STATUS` 來判斷 binlog 檔案名稱和位置。

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

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

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

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

**將外部 MySQL 執行個體設定為來源資料庫執行個體**

1. 使用您選擇的 MySQL 用戶端，連線至外部 MySQL 執行個體，並建立用於複寫的使用者帳戶。下列是 範例。

   ```
   CREATE USER 'repl_user'@'mydomain.com' IDENTIFIED BY 'password';
   ```
**注意**  
指定此處所顯示提示以外的密碼，作為安全最佳實務。

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

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

若要使用加密複寫，請將來源資料庫執行個體設定為使用 SSL 連線。此外，使用 [mysql.rds\$1import\$1binlog\$1ssl\$1material](url-rds-user;mysql_rds_import_binlog_ssl_material.html) 程序，將憑證授權單位憑證、用戶端憑證和用戶端金鑰匯入資料庫執行個體或資料庫叢集。

**注意**  
如果可能，建議您使用僅供讀取複本來管理兩個 Amazon RDS 資料庫執行個體間的複寫。當您這麼做時，建議您僅使用此程序和其他與複寫相關的預存程序。這些做法使得 Amazon RDS 資料庫執行個體之間能夠實行更複雜的複寫拓撲。我們提供這些預存程序主要是為了對 Amazon RDS 外部執行的 MySQL 執行個體啟用複寫。如需 Amazon RDS 資料庫執行個體之間管理複寫的相關資訊，請參閱[使用資料庫執行個體僅供讀取複本](USER_ReadRepl.md)。

呼叫 `mysql.rds_set_external_source` 將 RDS for MySQL 資料庫執行個體設定為僅供讀取複本之後，您可以在僅供讀取複本上呼叫 [mysql.rds\$1start\$1replication](#mysql_rds_start_replication) 來啟動複寫程序。您可以呼叫 [mysql.rds\$1reset\$1external\$1source (RDS for MySQL 主要版本 8.4 及更新版本)](#mysql_rds_reset_external_source) 來移除僅供讀取複本組態。

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

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

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

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

## mysql.rds\$1set\$1external\$1master\$1with\$1auto\$1position (RDS for MySQL 主要版本 8.0 及更低版本)
<a name="mysql_rds_set_external_master_with_auto_position"></a>

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

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

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

 

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

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

 *host\$1name*   
要成為來源資料庫執行個體之 MySQL 執行個體 (在 Amazon RDS 外部執行) 的主機名稱或 IP 地址。

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

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

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

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

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

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

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

RDS for MySQL 5.7 版，以及 RDS for MySQL 8.0.26 版和更新的 8.0 版都支援此程序。

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

**將外部 MySQL 執行個體設定為來源資料庫執行個體**

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

   ```
   CREATE USER 'repl_user'@'mydomain.com' IDENTIFIED BY 'SomePassW0rd'
   ```

1. 在外部 MySQL 執行個體上，將 `REPLICATION CLIENT` 和 `REPLICATION SLAVE` 權限授予複寫使用者。下列範例將所有資料庫上的 `REPLICATION CLIENT` 和 `REPLICATION SLAVE` 權限授予您網域中的 `'repl_user'` 使用者。

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

如需更多詳細資訊，請參閱 [使用外部來源執行個體設定二進位日誌檔案位置複寫](MySQL.Procedural.Importing.External.Repl.md)。

**注意**  
如果可能，建議您使用僅供讀取複本來管理兩個 Amazon RDS 資料庫執行個體間的複寫。當您這麼做時，建議您僅使用此程序和其他與複寫相關的預存程序。這些做法使得 Amazon RDS 資料庫執行個體之間能夠實行更複雜的複寫拓撲。我們提供這些預存程序主要是為了對 Amazon RDS 外部執行的 MySQL 執行個體啟用複寫。如需 Amazon RDS 資料庫執行個體之間管理複寫的相關資訊，請參閱[使用資料庫執行個體僅供讀取複本](USER_ReadRepl.md)。

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

呼叫 `mysql.rds_set_external_master_with_auto_position` 將 Amazon RDS 資料庫執行個體設定為僅供讀取複本之後，您可以在僅供讀取複本上呼叫 [mysql.rds\$1start\$1replication](#mysql_rds_start_replication) 來啟動複寫程序。您可以呼叫 [mysql.rds\$1reset\$1external\$1master (RDS for MariaDB 和 RDS for MySQL 主要版本 8.0 及更低版本)](#mysql_rds_reset_external_master) 來移除僅供讀取複本組態。

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

進行災難復原時，您可以透過 [mysql.rds\$1start\$1replication\$1until](#mysql_rds_start_replication_until) 或 [mysql.rds\$1start\$1replication\$1until\$1gtid](mysql-stored-proc-gtid.md#mysql_rds_start_replication_until_gtid) 預存程序來使用此程序。若要變更延遲的僅供讀取複本，並向前捲動到災難發生前的時間點，可以執行 `mysql.rds_set_external_master_with_auto_position` 程序。在 `mysql.rds_start_replication_until_gtid` 程序停止複寫後，您可使用 [提升僅供讀取複本為獨立的資料庫執行個體](USER_ReadRepl.Promote.md) 中的說明來提升該僅供讀取複本成為新的主要資料庫執行個體。

若要使用 `mysql.rds_rds_start_replication_until_gtid` 程序，需啟用依據 GTID 的複寫。若要略過已知會導致災難的特定 GTID 型交易，可以使用 [mysql.rds\$1skip\$1transaction\$1with\$1gtid](mysql-stored-proc-gtid.md#mysql_rds_skip_transaction_with_gtid) 預存程序。如需有關依據 GTID 複寫的詳細資訊，請參閱[使用 GTID 式複寫](mysql-replication-gtid.md)。

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

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

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

## mysql.rds\$1set\$1external\$1source\$1with\$1auto\$1position (RDS for MySQL 主要版本 8.4 及更新版本)
<a name="mysql_rds_set_external_source_with_auto_position"></a>

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

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

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

 

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

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

 *host\$1name*   
要成為來源資料庫執行個體之 MySQL 執行個體 (在 Amazon RDS 外部執行) 的主機名稱或 IP 地址。

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

 *replication\$1user\$1name*   
在 Amazon RDS 外部執行的 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 秒)。

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

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

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

**將外部 MySQL 執行個體設定為來源資料庫執行個體**

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

   ```
   CREATE USER 'repl_user'@'mydomain.com' IDENTIFIED BY 'SomePassW0rd'
   ```

1. 在外部 MySQL 執行個體上，將 `REPLICATION CLIENT` 和 `REPLICATION SLAVE` 權限授予複寫使用者。下列範例將所有資料庫上的 `REPLICATION CLIENT` 和 `REPLICATION SLAVE` 權限授予您網域中的 `'repl_user'` 使用者。

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

如需更多詳細資訊，請參閱 [使用外部來源執行個體設定二進位日誌檔案位置複寫](MySQL.Procedural.Importing.External.Repl.md)。

**注意**  
如果可能，建議您使用僅供讀取複本來管理兩個 Amazon RDS 資料庫執行個體間的複寫。當您這麼做時，建議您僅使用此程序和其他與複寫相關的預存程序。這些做法使得 Amazon RDS 資料庫執行個體之間能夠實行更複雜的複寫拓撲。我們提供這些預存程序主要是為了對 Amazon RDS 外部執行的 MySQL 執行個體啟用複寫。如需 Amazon RDS 資料庫執行個體之間管理複寫的相關資訊，請參閱[使用資料庫執行個體僅供讀取複本](USER_ReadRepl.md)。

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

呼叫 `mysql.rds_set_external_source_with_auto_position` 將 Amazon RDS 資料庫執行個體設定為僅供讀取複本之後，您可以在僅供讀取複本上呼叫 [mysql.rds\$1start\$1replication](#mysql_rds_start_replication) 來啟動複寫程序。您可以呼叫 [mysql.rds\$1reset\$1external\$1source (RDS for MySQL 主要版本 8.4 及更新版本)](#mysql_rds_reset_external_source) 來移除僅供讀取複本組態。

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

進行災難復原時，您可以透過 [mysql.rds\$1start\$1replication\$1until](#mysql_rds_start_replication_until) 或 [mysql.rds\$1start\$1replication\$1until\$1gtid](mysql-stored-proc-gtid.md#mysql_rds_start_replication_until_gtid) 預存程序來使用此程序。若要變更延遲的僅供讀取複本，並向前捲動到災難發生前的時間點，可以執行 `mysql.rds_set_external_source_with_auto_position` 程序。在 `mysql.rds_start_replication_until_gtid` 程序停止複寫後，您可使用 [提升僅供讀取複本為獨立的資料庫執行個體](USER_ReadRepl.Promote.md) 中的說明來提升該僅供讀取複本成為新的主要資料庫執行個體。

若要使用 `mysql.rds_rds_start_replication_until_gtid` 程序，需啟用依據 GTID 的複寫。若要略過已知會導致災難的特定 GTID 型交易，可以使用 [mysql.rds\$1skip\$1transaction\$1with\$1gtid](mysql-stored-proc-gtid.md#mysql_rds_skip_transaction_with_gtid) 預存程序。如需有關依據 GTID 複寫的詳細資訊，請參閱[使用 GTID 式複寫](mysql-replication-gtid.md)。

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

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

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

## mysql.rds\$1set\$1external\$1master\$1with\$1delay (RDS for MariaDB 和 RDS for MySQL 主要版本 8.0 及更低版本)
<a name="mysql_rds_set_external_master_with_delay"></a>

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

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

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

 

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

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

 *host\$1name*   
要成為來源資料庫執行個體、在 Amazon RDS 外部執行的 MySQL 執行個體的主機名稱或 IP 地址。

 *host\$1port*   
要設定為來源資料庫執行個體之 MySQL 執行個體 (在 Amazon RDS 外部執行) 所使用的連線埠。如果網路組態包含會轉換連線埠號碼的 SSH 連線埠複寫，請指定 SSH 所公開的連線埠號碼。

 *replication\$1user\$1name*   
在 Amazon RDS 外部執行的 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 MASTER STATUS` 來判斷 binlog 檔案名稱和位置。

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

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

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

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

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

**將外部 MySQL 執行個體設定為來源資料庫執行個體**

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

   ```
   CREATE USER 'repl_user'@'mydomain.com' IDENTIFIED BY 'SomePassW0rd'
   ```

1. 在外部 MySQL 執行個體上，將 `REPLICATION CLIENT` 和 `REPLICATION SLAVE` 權限授予複寫使用者。下列範例將所有資料庫上的 `REPLICATION CLIENT` 和 `REPLICATION SLAVE` 權限授予您網域中的 `'repl_user'` 使用者。

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

如需更多詳細資訊，請參閱 [使用外部來源執行個體設定二進位日誌檔案位置複寫](MySQL.Procedural.Importing.External.Repl.md)。

**注意**  
如果可能，建議您使用僅供讀取複本來管理兩個 Amazon RDS 資料庫執行個體間的複寫。當您這麼做時，建議您僅使用此程序和其他與複寫相關的預存程序。這些做法使得 Amazon RDS 資料庫執行個體之間能夠實行更複雜的複寫拓撲。我們提供這些預存程序主要是為了對 Amazon RDS 外部執行的 MySQL 執行個體啟用複寫。如需 Amazon RDS 資料庫執行個體之間管理複寫的相關資訊，請參閱[使用資料庫執行個體僅供讀取複本](USER_ReadRepl.md)。

呼叫 `mysql.rds_set_external_master_with_delay` 將 Amazon RDS 資料庫執行個體設定為僅供讀取複本之後，您可以在僅供讀取複本上呼叫 [mysql.rds\$1start\$1replication](#mysql_rds_start_replication) 來啟動複寫程序。您可以呼叫 [mysql.rds\$1reset\$1external\$1master (RDS for MariaDB 和 RDS for MySQL 主要版本 8.0 及更低版本)](#mysql_rds_reset_external_master) 來移除僅供讀取複本組態。

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

進行災難復原時，您可以透過 [mysql.rds\$1start\$1replication\$1until](#mysql_rds_start_replication_until) 或 [mysql.rds\$1start\$1replication\$1until\$1gtid](mysql-stored-proc-gtid.md#mysql_rds_start_replication_until_gtid) 預存程序來使用此程序。若要變更延遲的僅供讀取複本，並向前捲動到災難發生前的時間點，可以執行 `mysql.rds_set_external_master_with_delay` 程序。在 `mysql.rds_start_replication_until` 程序停止複寫後，您可使用 [提升僅供讀取複本為獨立的資料庫執行個體](USER_ReadRepl.Promote.md) 中的說明來提升該僅供讀取複本成為新的主要資料庫執行個體。

若要使用 `mysql.rds_rds_start_replication_until_gtid` 程序，需啟用依據 GTID 的複寫。若要略過已知會導致災難的特定 GTID 型交易，可以使用 [mysql.rds\$1skip\$1transaction\$1with\$1gtid](mysql-stored-proc-gtid.md#mysql_rds_skip_transaction_with_gtid) 預存程序。如需有關依據 GTID 複寫的詳細資訊，請參閱[使用 GTID 式複寫](mysql-replication-gtid.md)。

以下的 RDS for MySQL 版本中可使用 `mysql.rds_set_external_master_with_delay` 程序：
+ MySQL 8.0.26 和更新的 8.0 版
+ 所有 5.7 版

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

在 MySQL 資料庫執行個體上執行時，下列範例會將資料庫執行個體設定為 MySQL 執行個體 (在 Amazon RDS 外部執行) 的僅供讀取複本。它會在 MySQL 資料庫執行個體上設最小複寫延遲為一小時 (3600 秒)。在 Amazon RDS 外部執行的 MySQL 來源資料庫執行個體，其中變更至少一小時內不會套用在 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\$1set\$1external\$1source\$1with\$1delay (RDS for MySQL 主要版本 8.4 及更新版本)
<a name="mysql_rds_set_external_source_with_delay"></a>

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

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

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

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

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

 *host\$1name*   
要成為來源資料庫執行個體、在 Amazon RDS 外部執行的 MySQL 執行個體的主機名稱或 IP 地址。

 *host\$1port*   
要設定為來源資料庫執行個體之 MySQL 執行個體 (在 Amazon RDS 外部執行) 所使用的連線埠。如果網路組態包含會轉換連線埠號碼的 SSH 連線埠複寫，請指定 SSH 所公開的連線埠號碼。

 *replication\$1user\$1name*   
在 Amazon RDS 外部執行的 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 MASTER STATUS` 來判斷 binlog 檔案名稱和位置。

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

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

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

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

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

**將外部 MySQL 執行個體設定為來源資料庫執行個體**

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

   ```
   CREATE USER 'repl_user'@'mydomain.com' IDENTIFIED BY 'SomePassW0rd'
   ```

1. 在外部 MySQL 執行個體上，將 `REPLICATION CLIENT` 和 `REPLICATION SLAVE` 權限授予複寫使用者。下列範例將所有資料庫上的 `REPLICATION CLIENT` 和 `REPLICATION SLAVE` 權限授予您網域中的 `'repl_user'` 使用者。

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

如需更多詳細資訊，請參閱 [使用外部來源執行個體設定二進位日誌檔案位置複寫](MySQL.Procedural.Importing.External.Repl.md)。

**注意**  
如果可能，建議您使用僅供讀取複本來管理兩個 Amazon RDS 資料庫執行個體間的複寫。當您這麼做時，建議您僅使用此程序和其他與複寫相關的預存程序。這些做法使得 Amazon RDS 資料庫執行個體之間能夠實行更複雜的複寫拓撲。我們提供這些預存程序主要是為了對 Amazon RDS 外部執行的 MySQL 執行個體啟用複寫。如需 Amazon RDS 資料庫執行個體之間管理複寫的相關資訊，請參閱[使用資料庫執行個體僅供讀取複本](USER_ReadRepl.md)。

呼叫 `mysql.rds_set_external_source_with_delay` 將 Amazon RDS 資料庫執行個體設定為僅供讀取複本之後，您可以在僅供讀取複本上呼叫 [mysql.rds\$1start\$1replication](#mysql_rds_start_replication) 來啟動複寫程序。您可以呼叫 [mysql.rds\$1reset\$1external\$1source (RDS for MySQL 主要版本 8.4 及更新版本)](#mysql_rds_reset_external_source) 來移除僅供讀取複本組態。

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

進行災難復原時，您可以透過 [mysql.rds\$1start\$1replication\$1until](#mysql_rds_start_replication_until) 或 [mysql.rds\$1start\$1replication\$1until\$1gtid](mysql-stored-proc-gtid.md#mysql_rds_start_replication_until_gtid) 預存程序來使用此程序。若要變更延遲的僅供讀取複本，並向前捲動到災難發生前的時間點，可以執行 `mysql.rds_set_external_source_with_delay` 程序。在 `mysql.rds_start_replication_until` 程序停止複寫後，您可使用 [提升僅供讀取複本為獨立的資料庫執行個體](USER_ReadRepl.Promote.md) 中的說明來提升該僅供讀取複本成為新的主要資料庫執行個體。

若要使用 `mysql.rds_rds_start_replication_until_gtid` 程序，需啟用依據 GTID 的複寫。若要略過已知會導致災難的特定 GTID 型交易，可以使用 [mysql.rds\$1skip\$1transaction\$1with\$1gtid](mysql-stored-proc-gtid.md#mysql_rds_skip_transaction_with_gtid) 預存程序。如需有關依據 GTID 複寫的詳細資訊，請參閱[使用 GTID 式複寫](mysql-replication-gtid.md)。

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

在 MySQL 資料庫執行個體上執行時，下列範例會將資料庫執行個體設定為 MySQL 執行個體 (在 Amazon RDS 外部執行) 的僅供讀取複本。它會在 MySQL 資料庫執行個體上設最小複寫延遲為一小時 (3600 秒)。在 Amazon RDS 外部執行的 MySQL 來源資料庫執行個體，其中變更至少一小時內不會套用在 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\$1set\$1external\$1source\$1gtid\$1purged
<a name="mysql_rds_set_external_source_gtid_purged"></a>

從外部來源設定具有指定 GTID 範圍的 [gtid\$1purged](https://dev.mysql.com/doc/refman/8.0/en/replication-options-gtids.html#sysvar_gtid_purged) 系統變數。設定 GTID 型複寫以使用自動定位繼續複寫時需要 `gtid_purged` 值。

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

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

 

```
CALL mysql.rds_set_external_source_gtid_purged(
  server_uuid
  , start_pos
  , end_pos
);
```

### Parameters
<a name="mysql_rds_set_external_source_gtid_purged-parameters"></a>

 *server\$1uuid*   
要匯入 GTID 範圍之外部伺服器的通用唯一識別符 (UUID)。

 *start\$1pos*   
要設定的 GTID 範圍開始位置。

 *end\$1pos*   
要設定的 GTID 範圍結束位置。

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

`mysql.rds_set_external_source_gtid_purged` 程序僅適用於 MySQL 8.0.37 和更新的 8.0 版本。

在呼叫 [mysql.rds\$1set\$1external\$1master\$1with\$1auto\$1position (RDS for MySQL 主要版本 8.0 及更低版本)](#mysql_rds_set_external_master_with_auto_position)、[mysql.rds\$1set\$1external\$1source\$1with\$1auto\$1position (RDS for MySQL 主要版本 8.4 及更新版本)](#mysql_rds_set_external_source_with_auto_position) 或 [mysql.rds\$1set\$1external\$1source\$1with\$1auto\$1position\$1for\$1channel](mysql-stored-proc-multi-source-replication.md#mysql_rds_set_external_source_with_auto_position_for_channel) 之前，請先呼叫 `mysql.rds_set_external_source_gtid_purged`。

在呼叫 `mysql.rds_set_external_source_gtid_purged` 之前，請務必停止資料庫的所有作用中複寫通道。若要檢查通道的狀態，請使用 `SHOW REPLICA STATUS` MySQL 陳述式。若要停止通道上的複寫，請呼叫 [mysql.rds\$1stop\$1replication\$1for\$1channel](mysql-stored-proc-multi-source-replication.md#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 RDS 會將時間、使用者、`set gtid_purged` 的動作記錄在 `mysql.rds_history` 資料表中。

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

**在複本上設定 gtid\$1purged 值**

1. 決定要使用做為複寫起點的時間點或特定備份檔案。這可以是邏輯備份 (mysqldump 檔案) 或實體備份 (Amazon RDS 快照)。

1. 決定 `gtid_executed` 值。此值代表在伺服器上提交的所有 GTID 集合。若要擷取此值，請在來源執行個體上執行下列其中一項操作：
   + 在進行備份時執行 SQL 陳述式 `SELECT @@GLOBAL.GTID_EXECUTED;`。
   + 如果個別備份公用程式中包含任何相關選項，請從備份檔案擷取值。如需詳細資訊，請參閱 MySQL 文件中的 [set-gtid-purged](https://dev.mysql.com/doc/refman/8.4/en/mysqldump.html#option_mysqldump_set-gtid-purged) 選項。

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

   若要判斷 `gtid_purged` 值，請識別未包含在備份中且不再需要複寫的 GTID。您可以透過分析二進制日誌或使用 mysqlbinlog 等工具，尋找已從二進制日誌中清除的 GTID，藉以執行此操作。

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

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

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

在 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\$1set\$1master\$1auto\$1position (RDS for MySQL 主要版本 8.0 及更低版本）
<a name="mysql_rds_set_master_auto_position"></a>

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

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

 

```
CALL mysql.rds_set_master_auto_position (
auto_position_mode
);
```

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

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

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

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

RDS for MySQL 5.7 版，以及 RDS for MySQL 8.0.26 版和更新的 8.0 版都支援此程序。

## mysql.rds\$1set\$1source\$1auto\$1position (RDS for MySQL 主要版本 8.4 及更新版本)
<a name="mysql_rds_set_source_auto_position"></a>

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

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

```
CALL mysql.rds_set_source_auto_position (auto_position_mode);
```

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

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

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

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

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

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

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

```
CALL mysql.rds_set_source_delay(
delay
);
```

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

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

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

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

進行災難復原時，您可以透過 [mysql.rds\$1start\$1replication\$1until](#mysql_rds_start_replication_until) 預存程序或 [mysql.rds\$1start\$1replication\$1until\$1gtid](mysql-stored-proc-gtid.md#mysql_rds_start_replication_until_gtid) 預存程序來使用此程序。若要變更延遲的僅供讀取複本，並向前捲動到災難發生前的時間點，可以執行 `mysql.rds_set_source_delay` 程序。在 `mysql.rds_start_replication_until` 或 `mysql.rds_start_replication_until_gtid` 程序停止複寫後，您可使用[提升僅供讀取複本為獨立的資料庫執行個體](USER_ReadRepl.Promote.md)中的說明來提升該僅供讀取複本成為新的主要資料庫執行個體。

若要使用 `mysql.rds_rds_start_replication_until_gtid` 程序，需啟用依據 GTID 的複寫。若要略過已知會導致災難的特定 GTID 型交易，可以使用 [mysql.rds\$1skip\$1transaction\$1with\$1gtid](mysql-stored-proc-gtid.md#mysql_rds_skip_transaction_with_gtid) 預存程序。如需依據 GTID 複寫的詳細資訊，請參閱[使用 GTID 式複寫](mysql-replication-gtid.md)。

以下的 RDS for MySQL 版本中可使用 `mysql.rds_set_source_delay` 程序：
+ 所有 RDS for MySQL 8.4 版本
+ MySQL 8.0.26 和更新的 8.0 版
+ 所有 5.7 版

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

若要延遲來源資料庫執行個體到目前僅供讀取複本的複寫至少一小時 (3,600 秒)，您可透過下列參數呼叫 `mysql.rds_set_source_delay`：

```
CALL mysql.rds_set_source_delay(3600);
```

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

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

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

 

```
CALL mysql.rds_skip_repl_error;
```

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

主要使用者必須在僅供讀取複本上執行 `mysql.rds_skip_repl_error` 程序。如需有關此程序的詳細資訊，請參閱[呼叫 mysql.rds\$1skip\$1repl\$1error 程序](Appendix.MySQL.CommonDBATasks.SkipError.md#Appendix.MySQL.CommonDBATasks.SkipError.procedure)。

若要判斷是否有錯誤，執行 MySQL `SHOW REPLICA STATUS\G` 命令。如果複寫錯誤不嚴重，您可以執行 `mysql.rds_skip_repl_error` 來略過錯誤。如果有多個錯誤，`mysql.rds_skip_repl_error` 會刪除第一個錯誤，然後警告還有其他錯誤。然後，您可以使用 `SHOW REPLICA STATUS\G`，以針對下一個錯誤判斷正確的行動步驟。如需傳回值的相關資訊，請參閱 MySQL 文件中的 [SHOW REPLICA STATUS 陳述式](https://dev.mysql.com/doc/refman/8.0/en/show-replica-status.html)。

如需有關解決 Amazon RDS 複寫錯誤的詳細資訊，請參閱 [對 MySQL 僅供讀取複本問題進行故障診斷](USER_ReadRepl.Troubleshooting.md)。

#### 複寫已停止錯誤
<a name="skip_repl_error.stopped-error"></a>

當您呼叫 `mysql.rds_skip_repl_error` 程序時，可能會收到錯誤訊息，指出複本已關閉或停用。

如果您在主要執行個體而非僅供讀取複本上執行程序，此錯誤訊息就會出現。您必須在僅供讀取複本上執行此程序，程序才能運作。

如果您在僅供讀取複本上執行程序，但複寫無法成功重新啟動，此錯誤訊息也可能出現。

如果您需要略過大量錯誤，複寫延遲可能增加至超出二進位日誌(binlog) 檔案的預設保留期間。在此情況下，由於在清除 binlog 檔案之前已在僅供讀取複本上重播該檔案，您可能會遇到嚴重錯誤。此清除動作會導致複寫停止，而您將無法再呼叫 `mysql.rds_skip_repl_error` 命令來略過複寫錯誤。

透過增加 binlog 檔案在來源資料庫執行個體上保留的小時數，即可以減輕此問題。在延長二進位記錄檔保留時間之後，您可以重新啟動複寫，並視需要呼叫 `mysql.rds_skip_repl_error` 命令。

若要設定 binlog 保留時間，請使用 [mysql.rds\$1set\$1configuration](mysql-stored-proc-configuring.md#mysql_rds_set_configuration) 程序，並指定 `'binlog retention hours'`組態參數加上資料庫叢集上保留 binlog 檔案的時數。下列範例會將 binlog 檔案的保留期間設定為 48 小時。

```
CALL mysql.rds_set_configuration('binlog retention hours', 48);
```

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

從 RDS for MySQL 資料庫執行個體起始複寫。

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

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

 

```
CALL mysql.rds_start_replication;
```

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

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

如果要從 Amazon RDS 外部的 MySQL 執行個體匯入資料，請呼叫 [mysql.rds\$1set\$1external\$1master (RDS for MariaDB 和 RDS for MySQL 主要版本 8.0 及更低版本)](#mysql_rds_set_external_master) 或 [mysql.rds\$1set\$1external\$1source (RDS for MySQL 主要版本 8.4 及更新版本)](#mysql_rds_set_external_source) 來建置複寫組態，再呼叫僅供讀取複本上的 `mysql.rds_start_replication` 來啟動複寫程序。如需詳細資訊，請參閱[將備份還原至 Amazon RDS for MySQL 資料庫執行個體](MySQL.Procedural.Importing.md)。

若要將資料匯出至 Amazon RDS 外部的 MySQL 執行個體，請在僅供讀取複本上呼叫 `mysql.rds_start_replication` 和 `mysql.rds_stop_replication` 來控制某些複寫動作，例如清除二進位日誌。如需詳細資訊，請參閱[使用複寫從 MySQL 資料庫執行個體匯出資料](MySQL.Procedural.Exporting.NonRDSRepl.md)。

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

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

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

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

 

```
CALL mysql.rds_start_replication_until (
replication_log_file
  , replication_stop_point
);
```

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

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

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

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

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

以下的 RDS for MySQL 版本中可使用 `mysql.rds_start_replication_until` 程序：
+ 所有 RDS for MySQL 8.4 版本
+ MySQL 8.0.26 和更新的 8.0 版
+ 所有 5.7 版

您可以透過延遲複寫來使用此程序進行災難復原。若您已延遲複寫設定，您可使用此程序變更延遲的僅供讀取複本，並向前捲動到災難發生前的時間點。在此程序停止複寫後，您可使用 [提升僅供讀取複本為獨立的資料庫執行個體](USER_ReadRepl.Promote.md) 中的說明來提升該僅供讀取複本成為新的主要資料庫執行個體。

您可使用以下預存程序來設定延遲複寫：
+ [mysql.rds\$1set\$1configuration](mysql-stored-proc-configuring.md#mysql_rds_set_configuration)
+ [mysql.rds\$1set\$1external\$1master\$1with\$1delay (RDS for MariaDB 和 RDS for MySQL 主要版本 8.0 及更低版本)](#mysql_rds_set_external_master_with_delay)
+ [mysql.rds\$1set\$1external\$1source\$1with\$1delay (RDS for MySQL 主要版本 8.4 及更新版本)](#mysql_rds_set_external_source_with_delay)
+ [mysql.rds\$1set\$1source\$1delay](#mysql_rds_set_source_delay)

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

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

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

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

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

## mysql.rds\$1stop\$1replication
<a name="mysql_rds_stop_replication"></a>

從 MySQL 資料庫執行個體停止複寫。

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

 

```
CALL mysql.rds_stop_replication;
```

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

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

如果您要將複寫設定為從 Amazon RDS 外部執行的 MySQL 執行個體匯入資料，在匯入完成之後，請在僅供讀取複本上呼叫 `mysql.rds_stop_replication` 來停止複寫程序。如需詳細資訊，請參閱[將備份還原至 Amazon RDS for MySQL 資料庫執行個體](MySQL.Procedural.Importing.md)。

如果您要設定複寫將資料匯出至 Amazon RDS 外部的 MySQL 執行個體，請在僅供讀取複本上呼叫 `mysql.rds_start_replication` 和 `mysql.rds_stop_replication` 來控制某些複寫動作，例如清除二進位日誌。如需詳細資訊，請參閱[使用複寫從 MySQL 資料庫執行個體匯出資料](MySQL.Procedural.Exporting.NonRDSRepl.md)。

您也可以使用 `mysql.rds_stop_replication`，以停止兩個 Amazon RDS 資料庫執行個體之間的複寫。您停止複寫通常是為了在僅供讀取複本上執行長時間的操作，例如在僅供讀取複本上建立大型索引。您可以在僅供讀取複本上呼叫 [mysql.rds\$1start\$1replication](#mysql_rds_start_replication)，以重新啟動您已停止的任何複寫程序。如需詳細資訊，請參閱[使用資料庫執行個體僅供讀取複本](USER_ReadRepl.md)。