

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

# Aurora MySQL 預存程序參考
<a name="AuroraMySQL.Reference.StoredProcs"></a>

您可以呼叫內建預存程序，以管理您的 Aurora MySQL 資料庫叢集。

**Topics**
+ [收集和維護全域狀態歷史記錄](mysql-stored-proc-gsh.md)
+ [設定、啟動和停止二進位日誌 (binlog) 複寫](mysql-stored-proc-replicating.md)
+ [結束工作階段或查詢](mysql-stored-proc-ending.md)
+ [使用 GTID 複寫交易](mysql-stored-proc-gtid.md)
+ [輪換查詢日誌](mysql-stored-proc-logging.md)
+ [設定和顯示二進位日誌組態](mysql-stored-proc-configuring.md)

# 收集和維護全域狀態歷史記錄
<a name="mysql-stored-proc-gsh"></a>

Amazon RDS 會提供一組程序，將在一段時間內快照狀態變數的值，並將它們以及自從上次快照後的任何變更寫入至資料表。此基礎設施稱為「全域狀態歷史記錄」。如需更多詳細資訊，請參閱[管理全域狀態歷史記錄](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appendix.MySQL.CommonDBATasks.html#Appendix.MySQL.CommonDBATasks.GoSH)。

下列預存程序會管理收集及維護「全域狀態歷史記錄」的方式。

**Topics**
+ [mysql.rds\$1collect\$1global\$1status\$1history](#mysql_rds_collect_global_status_history)
+ [mysql.rds\$1disable\$1gsh\$1collector](#mysql_rds_disable_gsh_collector)
+ [mysql.rds\$1disable\$1gsh\$1rotation](#mysql_rds_disable_gsh_rotation)
+ [mysql.rds\$1enable\$1gsh\$1collector](#mysql_rds_enable_gsh_collector)
+ [mysql.rds\$1enable\$1gsh\$1rotation](#mysql_rds_enable_gsh_rotation)
+ [mysql.rds\$1rotate\$1global\$1status\$1history](#mysql_rds_rotate_global_status_history)
+ [mysql.rds\$1set\$1gsh\$1collector](#mysql_rds_set_gsh_collector)
+ [mysql.rds\$1set\$1gsh\$1rotation](#mysql_rds_set_gsh_rotation)

## mysql.rds\$1collect\$1global\$1status\$1history
<a name="mysql_rds_collect_global_status_history"></a>

隨需建立全域狀態歷史記錄的快照。

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

 

```
CALL mysql.rds_collect_global_status_history;
```

## mysql.rds\$1disable\$1gsh\$1collector
<a name="mysql_rds_disable_gsh_collector"></a>

停用全域狀態歷史記錄建立的快照。

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

 

```
CALL mysql.rds_disable_gsh_collector;
```

## mysql.rds\$1disable\$1gsh\$1rotation
<a name="mysql_rds_disable_gsh_rotation"></a>

關閉 `mysql.global_status_history` 表格的輪換。

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

 

```
CALL mysql.rds_disable_gsh_rotation;
```

## mysql.rds\$1enable\$1gsh\$1collector
<a name="mysql_rds_enable_gsh_collector"></a>

啟用全域狀態歷史記錄來依據 `rds_set_gsh_collector` 指定的間隔建立預設快照。

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

 

```
CALL mysql.rds_enable_gsh_collector;
```

## mysql.rds\$1enable\$1gsh\$1rotation
<a name="mysql_rds_enable_gsh_rotation"></a>

啟用依 `mysql.global_status_history` 指定的間隔將 `mysql.global_status_history_old` 資料表的內容輪換至 `rds_set_gsh_rotation`。

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

 

```
CALL mysql.rds_enable_gsh_rotation;
```

## mysql.rds\$1rotate\$1global\$1status\$1history
<a name="mysql_rds_rotate_global_status_history"></a>

隨需將 `mysql.global_status_history` 資料表的內容輪換至 `mysql.global_status_history_old`。

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

 

```
CALL mysql.rds_rotate_global_status_history;
```

## mysql.rds\$1set\$1gsh\$1collector
<a name="mysql_rds_set_gsh_collector"></a>

指定全域狀態歷史記錄建立快照之間的間隔 (以分鐘為單位)。

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

 

```
CALL mysql.rds_set_gsh_collector(intervalPeriod);
```

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

 *intervalPeriod*   
快照之間的間隔 (以分鐘為單位)。預設值為 `5`。

## mysql.rds\$1set\$1gsh\$1rotation
<a name="mysql_rds_set_gsh_rotation"></a>

指定 `mysql.global_status_history` 資料表輪換之間的間隔 (以天為單位)。

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

 

```
CALL mysql.rds_set_gsh_rotation(intervalPeriod);
```

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

 *intervalPeriod*   
資料表輪換之間的間隔 (以天為單位)。預設值為 `7`。

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

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

**Topics**
+ [mysql.rds\$1disable\$1session\$1binlog (Aurora MySQL 2 版)](#mysql_rds_disable_session_binlog)
+ [mysql.rds\$1enable\$1session\$1binlog (Aurora MySQL 2 版)](#mysql_rds_enable_session_binlog)
+ [mysql.rds\$1import\$1binlog\$1ssl\$1material](#mysql_rds_import_binlog_ssl_material)
+ [mysql.rds\$1next\$1master\$1log (Aurora MySQL 版本 2)](#mysql_rds_next_master_log)
+ [mysql.rds\$1next\$1source\$1log (Aurora MySQL 第 3 版)](#mysql_rds_next_source_log)
+ [mysql.rds\$1remove\$1binlog\$1ssl\$1material](#mysql_rds_remove_binlog_ssl_material)
+ [mysql.rds\$1reset\$1external\$1master (Aurora MySQL 第 2 版)](#mysql_rds_reset_external_master)
+ [mysql.rds\$1reset\$1external\$1source (Aurora MySQL 第 3 版)](#mysql_rds_reset_external_source)
+ [mysql.rds\$1set\$1binlog\$1source\$1ssl (Aurora MySQL 第 3 版)](#mysql_rds_set_binlog_source_ssl)
+ [mysql.rds\$1set\$1external\$1master (Aurora MySQL 第 2 版)](#mysql_rds_set_external_master)
+ [mysql.rds\$1set\$1external\$1source (Aurora MySQL 第 3 版)](#mysql_rds_set_external_source)
+ [mysql.rds\$1set\$1external\$1master\$1with\$1auto\$1position (Aurora MySQL 第 2 版)](#mysql_rds_set_external_master_with_auto_position)
+ [mysql.rds\$1set\$1external\$1source\$1with\$1auto\$1position (Aurora MySQL 第 3 版)](#mysql_rds_set_external_source_with_auto_position)
+ [mysql.rds\$1set\$1master\$1auto\$1position (Aurora MySQL 第 2 版）](#mysql_rds_set_master_auto_position)
+ [mysql.rds\$1set\$1read\$1only (Aurora MySQL 第 3 版)](#mysql_rds_set_read_only)
+ [mysql.rds\$1set\$1session\$1binlog\$1format (Aurora MySQL 2 版)](#mysql_rds_set_session_binlog_format)
+ [mysql.rds\$1set\$1source\$1auto\$1position (Aurora MySQL 第 3 版)](#mysql_rds_set_source_auto_position)
+ [mysql.rds\$1skip\$1repl\$1error](#mysql_rds_skip_repl_error)
+ [mysql.rds\$1start\$1replication](#mysql_rds_start_replication)
+ [mysql.rds\$1start\$1replication\$1until(Aurora MySQL 第 3 版）](#mysql_rds_start_replication_until)
+ [mysql.rds\$1stop\$1replication](#mysql_rds_stop_replication)

## mysql.rds\$1disable\$1session\$1binlog (Aurora MySQL 2 版)
<a name="mysql_rds_disable_session_binlog"></a>

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

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

```
CALL mysql.rds_disable_session_binlog;
```

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

無

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

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

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

**注意**  
在 Aurora MySQL 第 3 版中，如果您有 `SESSION_VARIABLES_ADMIN` 權限，您可以使用下列命令來停用目前工作階段的二進制記錄：  

```
SET SESSION sql_log_bin = OFF;
```

## mysql.rds\$1enable\$1session\$1binlog (Aurora MySQL 2 版)
<a name="mysql_rds_enable_session_binlog"></a>

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

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

```
CALL mysql.rds_enable_session_binlog;
```

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

無

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

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

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

**注意**  
在 Aurora MySQL 第 3 版中，如果您有 `SESSION_VARIABLES_ADMIN` 權限，您可以使用下列命令來啟用目前工作階段的二進制記錄：  

```
SET SESSION sql_log_bin = ON;
```

## mysql.rds\$1import\$1binlog\$1ssl\$1material
<a name="mysql_rds_import_binlog_ssl_material"></a>

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

**注意**  
目前，下列 Aurora MySQL 版本支援此程序：第二版：2.09.2、2.10.0、2.10.1 和 2.11.0；以及第 3 版：3.01.1 及更新版本。

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

 

```
CALL mysql.rds_import_binlog_ssl_material (
  ssl_material
);
```

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

 *ssl\$1material*   
JSON 承載，其中包含 MySQL 用戶端的以下 .pem 格式檔案的內容：  
+ "ssl\$1ca"："*憑證授權單位憑證*"
+ "ssl\$1cert"："*用戶端憑證*"
+ "ssl\$1key"："*用戶端金鑰*"

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

執行此程序之前為加密複寫做好準備：
+ 如果您在外部 MySQL 來源資料庫執行個體上未啟用 SSL，也沒有準備用戶端金鑰和用戶端憑證，請在 MySQL 資料庫伺服器上啟用 SSL，並產生所需的用戶端金鑰和用戶端憑證。
+ 如果外部來源資料庫執行個體上已啟用 SSL，請為 Aurora MySQL 資料庫叢集提供用戶端金鑰和憑證。如果您沒有這些資料，請為 Aurora MySQL 資料庫叢集產生新的金鑰和憑證。若要簽署用戶端憑證，您必須有用於外部 MySQL 來源資料庫執行個體上設定 SSL 的憑證授權單位金鑰。

如需詳細資訊，請參閱 MySQL 文件中的[使用 openssl 建立 SSL 憑證和金鑰](https://dev.mysql.com/doc/refman/8.0/en/creating-ssl-files-using-openssl.html)。

**重要**  
為加密複寫做好準備之後，使用 SSL 連線來執行此程序。不可透過不安全的連線來傳送用戶端金鑰。

此程序將外部 MySQL 資料庫中的 SSL 資訊匯入 Aurora MySQL 資料庫叢集。SSL 資訊是 .pem 格式檔案，其中包含 Aurora MySQL 資料庫叢集的 SSL 資訊。在加密複寫期間，Aurora MySQL 資料庫叢集充當 MySQL 資料庫伺服器的用戶端。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"}'
```

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

下列範例將 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\$1next\$1master\$1log (Aurora MySQL 版本 2)
<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` 會導致僅供讀取複本遺失資料。

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

假設 Aurora 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 (Aurora MySQL 第 3 版)
<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`，以降低此情況發生的機率，雖然這麼做會降低效能。

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

假設 Aurora 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\$1remove\$1binlog\$1ssl\$1material
<a name="mysql_rds_remove_binlog_ssl_material"></a>

移除用於 SSL 通訊和加密複寫的憑證授權單位憑證、用戶端憑證和用戶端金鑰。此資訊是利用 [mysql.rds\$1import\$1binlog\$1ssl\$1material](#mysql_rds_import_binlog_ssl_material) 來匯入。

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

 

```
CALL mysql.rds_remove_binlog_ssl_material;
```

## mysql.rds\$1reset\$1external\$1master (Aurora MySQL 第 2 版)
<a name="mysql_rds_reset_external_master"></a>

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

**重要**  
若要執行此程序，必須啟用 `autocommit`。若要啟用它，請將 `autocommit` 參數設定為 `1`。如需修改參數的相關資訊，請參閱[修改 Amazon Aurora 中的資料庫參數群組中的參數](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 外部執行的 MySQL 執行個體啟用複寫。如果可能，建議您使用 Aurora 複本來管理 Aurora MySQL 資料庫叢集內的複寫。如需 Aurora MySQL 資料庫叢集中管理複寫的相關資訊，請參閱 [使用 Aurora 複本](AuroraMySQL.Replication.md#AuroraMySQL.Replication.Replicas)。

如需使用複寫從 Aurora MySQL 外部執行的 MySQL 執行個體匯入資料的詳細資訊，請參閱 [Aurora 與 MySQL 之間或 Aurora 與另一個 Aurora 資料庫叢集之間的複寫 (二進位複寫)](AuroraMySQL.Replication.MySQL.md)。

## mysql.rds\$1reset\$1external\$1source (Aurora MySQL 第 3 版)
<a name="mysql_rds_reset_external_source"></a>

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

**重要**  
若要執行此程序，必須啟用 `autocommit`。若要啟用它，請將 `autocommit` 參數設定為 `1`。如需修改參數的相關資訊，請參閱[修改 Amazon Aurora 中的資料庫參數群組中的參數](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 外部執行的 MySQL 執行個體啟用複寫。如果可能，建議您使用 Aurora 複本來管理 Aurora MySQL 資料庫叢集內的複寫。如需 Aurora MySQL 資料庫叢集中管理複寫的相關資訊，請參閱 [使用 Aurora 複本](AuroraMySQL.Replication.md#AuroraMySQL.Replication.Replicas)。

## mysql.rds\$1set\$1binlog\$1source\$1ssl (Aurora MySQL 第 3 版)
<a name="mysql_rds_set_binlog_source_ssl"></a>

針對 binlog 複寫啟用 `SOURCE_SSL` 加密。如需詳細資訊，請參閱 MySQL 文件中的 [CHANGE REPLICATION SOURCE TO 陳述式](https://dev.mysql.com/doc/refman/8.0/en/change-replication-source-to.html)。

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

```
CALL mysql.rds_set_binlog_source_ssl(mode);
```

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

*模式*  
指出是否啟用 `SOURCE_SSL` 加密的值：  
+ `0` – `SOURCE_SSL` 加密已停用。預設值為 `0`。
+ `1` – `SOURCE_SSL` 加密已啟用。您可以使用 SSL 或 TLS 設定加密。

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

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

## mysql.rds\$1set\$1external\$1master (Aurora MySQL 第 2 版)
<a name="mysql_rds_set_external_master"></a>

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

`mysql.rds_set_external_master` 程序已棄用，且會在未來版本中將其移除。請改用 `mysql.rds\$1set\$1external\$1source`。

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

### 語法
<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 連線。此外，使用 [mysql.rds\$1import\$1binlog\$1ssl\$1material](#mysql_rds_import_binlog_ssl_material) 程序，將憑證認證機構憑證、用戶端憑證和用戶端金鑰匯入資料庫執行個體或資料庫叢集。

**注意**  
我們提供這些預存程序主要是為了對 Amazon RDS 外部執行的 MySQL 執行個體啟用複寫。如果可能，建議您使用 Aurora 複本來管理 Aurora MySQL 資料庫叢集內的複寫。如需 Aurora MySQL 資料庫叢集中管理複寫的相關資訊，請參閱 [使用 Aurora 複本](AuroraMySQL.Replication.md#AuroraMySQL.Replication.Replicas)。

呼叫 `mysql.rds_set_external_master` 將 Amazon RDS 資料庫執行個體設定為僅供讀取複本之後，您可以在僅供讀取複本上呼叫 [mysql.rds\$1start\$1replication](#mysql_rds_start_replication) 來啟動複寫程序。您可以呼叫 [mysql.rds\$1reset\$1external\$1master (Aurora MySQL 第 2 版)](#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 (Aurora MySQL 第 3 版)
<a name="mysql_rds_set_external_source"></a>

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

**重要**  
若要執行此程序，必須啟用 `autocommit`。若要啟用它，請將 `autocommit` 參數設定為 `1`。如需修改參數的相關資訊，請參閱[修改 Amazon Aurora 中的資料庫參數群組中的參數](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。  
您必須使用 [mysql.rds\$1import\$1binlog\$1ssl\$1material](#mysql_rds_import_binlog_ssl_material) 匯入自訂 SSL 憑證，才能啟用此選項。如果您尚未匯入自訂 SSL 憑證，請將此參數設為 0，並使用 [mysql.rds\$1set\$1binlog\$1source\$1ssl (Aurora MySQL 第 3 版)](#mysql_rds_set_binlog_source_ssl) 以針對二進制日誌複寫啟用 SSL。  
不支援 `SOURCE_SSL_VERIFY_SERVER_CERT` 選項。此選項設定為 0，表示連線已加密，但憑證未經過驗證。

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

管理使用者必須執行 `mysql.rds_set_external_source` 程序。此程序必須在要設定為 MySQL 執行個體 (在 Amazon RDS 外部執行) 之僅供讀取複本的 Aurora 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 外部執行的 MySQL 執行個體啟用複寫。如果可能，建議您使用 Aurora 複本來管理 Aurora MySQL 資料庫叢集內的複寫。如需 Aurora MySQL 資料庫叢集中管理複寫的相關資訊，請參閱 [使用 Aurora 複本](AuroraMySQL.Replication.md#AuroraMySQL.Replication.Replicas)。

呼叫 `mysql.rds_set_external_source` 將 Aurora MySQL 資料庫執行個體設定為僅供讀取複本之後，您可以在僅供讀取複本上呼叫 [mysql.rds\$1start\$1replication](#mysql_rds_start_replication) 來啟動複寫程序。您可以呼叫 [mysql.rds\$1reset\$1external\$1source (Aurora MySQL 第 3 版)](#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>

在 Aurora 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 (Aurora MySQL 第 2 版)
<a name="mysql_rds_set_external_master_with_auto_position"></a>

設定 Aurora MySQL 主要執行個體以接受從外部 MySQL 執行個體傳入的複寫。此程序也會依據全域交易識別符 (GTID) 設定複寫。

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

### 語法
<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
);
```

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

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

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

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

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

*ssl\$1encryption*  
此選項目前尚未實作。預設值為 0。

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

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

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

Aurora MySQL 第 2 版支援此程序。對於 Aurora MySQL 第 3 版，請改用 [mysql.rds\$1set\$1external\$1source\$1with\$1auto\$1position (Aurora MySQL 第 3 版)](#mysql_rds_set_external_source_with_auto_position)。

在您執行 `mysql.rds_set_external_master_with_auto_position` 前，請將外部 MySQL 資料庫執行個體設定為複寫來源。如要連線至外部 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.rds_set_external_master_with_auto_position` 時，Amazon RDS 會記錄特定資訊。此資訊為時間、使用者，以及 `"set master"` 和 `mysql.rds_history` 資料表中的 `mysql.rds_replication_status` 動作。

若要略過已知會導致災難的特定 GTID 型交易，可以使用 [mysql.rds\$1skip\$1transaction\$1with\$1gtid(Aurora MySQL 第 2 版和第 3 版）](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>

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

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

## mysql.rds\$1set\$1external\$1source\$1with\$1auto\$1position (Aurora MySQL 第 3 版)
<a name="mysql_rds_set_external_source_with_auto_position"></a>

設定 Aurora MySQL 主要執行個體以接受從外部 MySQL 執行個體傳入的複寫。此程序也會依據全域交易識別符 (GTID) 設定複寫。

### 語法
<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
);
```

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

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

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

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

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

*ssl\$1encryption*  
此選項目前尚未實作。預設值為 0。  
使用 [mysql.rds\$1set\$1binlog\$1source\$1ssl (Aurora MySQL 第 3 版)](#mysql_rds_set_binlog_source_ssl) 以針對二進制日誌複寫啟用 SSL。

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

 針對 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 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.rds_set_external_source_with_auto_position` 時，Amazon RDS 會記錄特定資訊。此資訊為時間、使用者，以及 `"set master"` 和 `mysql.rds_history` 資料表中的 `mysql.rds_replication_status` 動作。

 若要略過已知會導致災難的特定 GTID 型交易，可以使用 [mysql.rds\$1skip\$1transaction\$1with\$1gtid(Aurora MySQL 第 2 版和第 3 版）](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>

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

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

## mysql.rds\$1set\$1master\$1auto\$1position (Aurora MySQL 第 2 版）
<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` 程序。

Aurora MySQL 第 2 版支援此程序。

## mysql.rds\$1set\$1read\$1only (Aurora MySQL 第 3 版)
<a name="mysql_rds_set_read_only"></a>

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

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

```
CALL mysql.rds_set_read_only(mode);
```

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

*模式*  
指出針對資料庫執行個體全域開啟或關閉 `read_only` 模式的值：  
+ `0` – `OFF`。預設值為 `0`。
+ `1` – `ON`

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

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

`read_only` 參數變更不會在重新啟動時保留。若要對 `read_only` 進行永久變更，您必須使用 `read_only` 資料庫叢集參數。

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

## mysql.rds\$1set\$1session\$1binlog\$1format (Aurora MySQL 2 版)
<a name="mysql_rds_set_session_binlog_format"></a>

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

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

```
CALL mysql.rds_set_session_binlog_format(format);
```

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

*format*  
指示目前工作階段的二進位日誌格式的值：  
+ `STATEMENT` – 複寫來源會根據 SQL 陳述式將事件寫入二進位日誌。
+ `ROW` – 複寫來源會將事件寫入二進位日誌，指示個別資料表資料列的變更。
+ `MIXED` – 日誌記錄通常以 SQL 陳述式為基礎，但在特定條件下會切換至資料列。如需詳細資訊，請參閱 MySQL 文件中的[混合式二進位日誌格式](https://dev.mysql.com/doc/refman/8.0/en/binary-log-mixed.html)。

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

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

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

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

## mysql.rds\$1set\$1source\$1auto\$1position (Aurora MySQL 第 3 版)
<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>

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

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

## 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` 程序。如需有關此程序的詳細資訊，請參閱[略過目前的複寫錯誤](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appendix.MySQL.CommonDBATasks.html#Appendix.MySQL.CommonDBATasks.SkipError)。

若要判斷是否有錯誤，執行 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)。

如需有關解決 Aurora MySQL 複寫錯誤的詳細資訊，請參閱 [診斷和解決 MySQL 讀取複寫失敗](CHAP_Troubleshooting.md#CHAP_Troubleshooting.MySQL.RR)。

#### 複寫已停止錯誤
<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>

從 Aurora MySQL 資料庫叢集起始複寫。

**注意**  
您可使用 [mysql.rds\$1start\$1replication\$1until(Aurora MySQL 第 3 版）](#mysql_rds_start_replication_until) 或 [mysql.rds\$1start\$1replication\$1until\$1gtid(Aurora MySQL 第 3 版）](mysql-stored-proc-gtid.md#mysql_rds_start_replication_until_gtid) 預存程序從 Aurora 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 (Aurora MySQL 第 2 版)](#mysql_rds_set_external_master) 或 [mysql.rds\$1set\$1external\$1source (Aurora MySQL 第 3 版)](#mysql_rds_set_external_source) 來建置複寫組態，再呼叫僅供讀取複本上的 `mysql.rds_start_replication` 來啟動複寫程序。如需詳細資訊，請參閱[Aurora 與 MySQL 之間或 Aurora 與另一個 Aurora 資料庫叢集之間的複寫 (二進位複寫)](AuroraMySQL.Replication.MySQL.md)。

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

您也可以對僅供讀取複本呼叫 `mysql.rds_start_replication`，以重新啟動您先前呼叫 `mysql.rds_stop_replication` 所停止的任何複寫程序。如需詳細資訊，請參閱[複寫已停止錯誤](CHAP_Troubleshooting.md#CHAP_Troubleshooting.MySQL.ReplicationStopped)。

## mysql.rds\$1start\$1replication\$1until(Aurora MySQL 第 3 版）
<a name="mysql_rds_start_replication_until"></a>

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

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

受管複寫不支援 `mysql.rds_start_replication_until` 預存程序，其中包括下列項目：
+ [跨 AWS 區域 複寫 Amazon Aurora MySQL 資料庫叢集](AuroraMySQL.Replication.CrossRegion.md)
+ [使用 Aurora 讀取複本，從 RDS for MySQL 資料庫執行個體將資料遷移至 Amazon Aurora MySQL 資料庫叢集](AuroraMySQL.Migrating.RDSMySQL.Replica.md)

`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` 來停止複寫程序。如需詳細資訊，請參閱[Aurora 與 MySQL 之間或 Aurora 與另一個 Aurora 資料庫叢集之間的複寫 (二進位複寫)](AuroraMySQL.Replication.MySQL.md)。

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

受管複寫不支援 `mysql.rds_stop_replication` 預存程序，其中包括下列項目：
+ [跨 AWS 區域 複寫 Amazon Aurora MySQL 資料庫叢集](AuroraMySQL.Replication.CrossRegion.md)
+ [使用 Aurora 讀取複本，從 RDS for MySQL 資料庫執行個體將資料遷移至 Amazon Aurora MySQL 資料庫叢集](AuroraMySQL.Migrating.RDSMySQL.Replica.md)

# 結束工作階段或查詢
<a name="mysql-stored-proc-ending"></a>

下列預存程序會結束工作階段或查詢。

**Topics**
+ [mysql.rds\$1kill](#mysql_rds_kill)
+ [mysql.rds\$1kill\$1query](#mysql_rds_kill_query)

## mysql.rds\$1kill
<a name="mysql_rds_kill"></a>

結束 MySQL 伺服器的連線。

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

```
CALL mysql.rds_kill(processID);
```

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

 *processID*   
要結束之連線執行緒的身分。

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

MySQL 伺服器的每個連線都在個別執行緒中執行。若要結束連線，請使用 `mysql.rds_kill` 程序並傳入該連線的執行緒 ID。若要取得執行緒 ID，請使用 MySQL [SHOW PROCESSLIST](https://dev.mysql.com/doc/refman/8.0/en/show-processlist.html) 命令。

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

下列範例結束執行緒 ID 為 4243 的連線：

```
CALL mysql.rds_kill(4243);
```

## mysql.rds\$1kill\$1query
<a name="mysql_rds_kill_query"></a>

結束對 MySQL 伺服器執行的查詢。

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

```
CALL mysql.rds_kill_query(processID);
```

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

 *processID*   
正在執行要結束之查詢的處理序或執行緒的身分。

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

若要停止對 MySQL 伺服器執行的查詢，請使用 `mysql_rds_kill_query` 程序並傳入執行查詢之執行緒的連線 ID。然後程序就會終止連線。

若要取得 ID，請查詢 MySQL [INFORMATION\$1SCHEMA PROCESSLIST 資料表](https://dev.mysql.com/doc/refman/8.0/en/information-schema-processlist-table.html)或使用 MySQL [SHOW PROCESSLIST](https://dev.mysql.com/doc/refman/8.0/en/show-processlist.html) 命令。`SHOW PROCESSLIST` 或 `SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST` 中 ID 欄的值為 *processID*。

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

下列範例會停止查詢執行緒 ID 為 230040 的查詢：

```
CALL mysql.rds_kill_query(230040);
```

# 使用 GTID 複寫交易
<a name="mysql-stored-proc-gtid"></a>

下列預存程序控制如何使用全域交易識別符 (GTID) 搭配 Aurora MySQL 複寫交易。如要了解透過 Aurora MySQL 使用以 GTID 為基礎的複寫使用方式，請參閱 [使用 GTID 式複寫](mysql-replication-gtid.md)。

**Topics**
+ [mysql.rds\$1assign\$1gtids\$1to\$1anonymous\$1transactions (Aurora MySQL 第 3 版)](#mysql_assign_gtids_to_anonymous_transactions)
+ [mysql.rds\$1gtid\$1purged (Aurora MySQL 3 版)](#mysql_rds_gtid_purged)
+ [mysql.rds\$1skip\$1transaction\$1with\$1gtid(Aurora MySQL 第 2 版和第 3 版）](#mysql_rds_skip_transaction_with_gtid)
+ [mysql.rds\$1start\$1replication\$1until\$1gtid(Aurora MySQL 第 3 版）](#mysql_rds_start_replication_until_gtid)

## mysql.rds\$1assign\$1gtids\$1to\$1anonymous\$1transactions (Aurora MySQL 第 3 版)
<a name="mysql_assign_gtids_to_anonymous_transactions"></a>

配置 `CHANGE REPLICATION SOURCE TO` 陳述式的 `ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS` 選項。它會使複寫通道將 GTID 指派給沒有 GTID 的複寫交易。如此一來，您就可以將二進位日誌從不使用 GTID 型複寫的來源複寫到使用該複寫的複本。如需詳細資訊，請參閱《MySQL 參考手冊》**中的 [CHANGE REPLICATION SOURCE TO 陳述式](https://dev.mysql.com/doc/refman/8.0/en/change-replication-source-to.html)和[從沒有 GTID 的來源複寫到具有 GTID 的複本](https://dev.mysql.com/doc/refman/8.0/en/replication-gtids-assign-anon.html)。

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

```
CALL mysql.rds_assign_gtids_to_anonymous_transactions(gtid_option);
```

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

 *gtid\$1option*  
字串值。允許的值為 `OFF`、`LOCAL` 或指定的 UUID。

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

此程序的效果與在社群 MySQL 中發出陳述式 `CHANGE REPLICATION SOURCE TO ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS = gtid_option` 相同。

 GTID 必須轉換為 `ON`，*gtid\$1option* 才能設定為 `LOCAL` 或特定的 UUID。

預設為 `OFF`，表示不使用該功能。

`LOCAL` 會指派 GTID，其中包含複本自己的 UUID (`server_uuid` 設定)。

傳遞的參數是 UUID，則會指派一個 UUID，其中包含指定的 GTID，例如複寫來源伺服器的 `server_uuid` 設定。

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

若要關閉此功能：

```
mysql> call mysql.rds_assign_gtids_to_anonymous_transactions('OFF');
+-------------------------------------------------------------+
| Message  |
+-------------------------------------------------------------+
| ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS has been set to: OFF |
+-------------------------------------------------------------+
1 row in set (0.07 sec)
```

若要使用複本自己的 UUID：

```
mysql> call mysql.rds_assign_gtids_to_anonymous_transactions('LOCAL');
+---------------------------------------------------------------+
| Message  |
+---------------------------------------------------------------+
| ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS has been set to: LOCAL |
+---------------------------------------------------------------+
1 row in set (0.07 sec)
```

若要使用指定的 UUID：

```
mysql> call mysql.rds_assign_gtids_to_anonymous_transactions('317a4760-f3dd-3b74-8e45-0615ed29de0e');
+----------------------------------------------------------------------------------------------+
| Message |
+----------------------------------------------------------------------------------------------+
| ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS has been set to: 317a4760-f3dd-3b74-8e45-0615ed29de0e |
+----------------------------------------------------------------------------------------------+
1 row in set (0.07 sec)
```

## mysql.rds\$1gtid\$1purged (Aurora MySQL 3 版)
<a name="mysql_rds_gtid_purged"></a>



將系統變數 `gtid_purged` 的全域值設定為特定全域交易識別碼 (GTID) 設定。`gtid_purged` 系統變數是一個 GTID 集，由伺服器上已提交但不存在於伺服器上的任何二進位日誌檔中的所有 GTID 交易組成。

為了與 MySQL 8.0 相容，有兩種方法可以設定 `gtid_purged` 的值：
+ 將 `gtid_purged` 的值取代為指定的 GTID 設定。
+ 將指定的 GTID 集附加至已包含 `gtid_purged` 的 GTID 設定。

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

若要使用指定的 GTID 設定取代 `gtid_purged` 的值：

```
CALL mysql.rds_gtid_purged (gtid_set);
```

若要將指定的 GTID 設定附加至 `gtid_purged` 的值：

```
CALL mysql.rds_gtid_purged (+gtid_set);
```

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

*gtid\$1set*  
*gtid\$1set* 的值必須是目前 `gtid_purged` 值的超集，且不能與 `gtid_subtract(gtid_executed,gtid_purged)` 相交。也就是說，新的 GTID 集必須包含已在 `gtid_purged` 中的任何 GTID，並且不能在 `gtid_executed` 中包含任何 GTID 尚未清除的項目。*gtid\$1set* 參數也不能包含全域中的任何 GTID `gtid_owned` 設定，目前正在伺服器上處理交易的 GTID。

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

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

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

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

下列範例會指派 GTID `3E11FA47-71CA-11E1-9E33-C80AA9429562:23` 到 `gtid_purged` 全域變數。

```
CALL mysql.rds_gtid_purged('3E11FA47-71CA-11E1-9E33-C80AA9429562:23');
```

## mysql.rds\$1skip\$1transaction\$1with\$1gtid(Aurora MySQL 第 2 版和第 3 版）
<a name="mysql_rds_skip_transaction_with_gtid"></a>

略過 Aurora 主要執行個體上具有指定全域交易識別碼 (GTID) 之交易的複寫。

若已知特定 GTID 交易導致錯誤，可以使用此程序進行災難復原。使用此預存程序來略過有問題的交易。有問題的交易範例包括停用複寫、刪除重要資料或導致資料庫執行個體無法使用的交易。

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

 

```
CALL mysql.rds_skip_transaction_with_gtid (
gtid_to_skip
);
```

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

 *gtid\$1to\$1skip*   
要略過的複寫交易的 GTID。

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

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

Aurora MySQL 第 2 版和第 3 版支援此程序。

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

下列範例會略過使用 GTID `3E11FA47-71CA-11E1-9E33-C80AA9429562:23` 進行交易的複寫。

```
CALL mysql.rds_skip_transaction_with_gtid('3E11FA47-71CA-11E1-9E33-C80AA9429562:23');
```

## mysql.rds\$1start\$1replication\$1until\$1gtid(Aurora MySQL 第 3 版）
<a name="mysql_rds_start_replication_until_gtid"></a>

從 Aurora MySQL 資料庫叢集啟動複寫，並在指定的全域交易識別碼 (GTID) 之後立即停止複寫。

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

 

```
CALL mysql.rds_start_replication_until_gtid(gtid);
```

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

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

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

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

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

受管複寫不支援 `mysql.rds_start_replication_until_gtid` 預存程序，其中包括下列項目：
+ [跨 AWS 區域 複寫 Amazon Aurora MySQL 資料庫叢集](AuroraMySQL.Replication.CrossRegion.md)
+ [使用 Aurora 讀取複本，從 RDS for MySQL 資料庫執行個體將資料遷移至 Amazon Aurora MySQL 資料庫叢集](AuroraMySQL.Migrating.RDSMySQL.Replica.md)

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

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

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

```
call mysql.rds_start_replication_until_gtid('3E11FA47-71CA-11E1-9E33-C80AA9429562:23');
```

# 輪換查詢日誌
<a name="mysql-stored-proc-logging"></a>

下列預存程序會將 MySQL 日誌輪換為備份資料表。如需更多詳細資訊，請參閱 [Aurora MySQL資料庫日誌檔案](USER_LogAccess.Concepts.MySQL.md)。

**Topics**
+ [mysql.rds\$1rotate\$1general\$1log](#mysql_rds_rotate_general_log)
+ [mysql.rds\$1rotate\$1slow\$1log](#mysql_rds_rotate_slow_log)

## mysql.rds\$1rotate\$1general\$1log
<a name="mysql_rds_rotate_general_log"></a>

將 `mysql.general_log` 資料表輪換至備份資料表。

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

 

```
CALL mysql.rds_rotate_general_log;
```

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

您可以呼叫 `mysql.general_log` 程序，將 `mysql.rds_rotate_general_log` 資料表輪換至備份資料表。輪換日誌資料表時，目前日誌資料表會複製到備份日誌資料表，並移除目前日誌資料表中的項目。如果備份日誌資料表已存在，則其會在目前日誌資料表複製到備份之前遭到刪除。如有需要，您可以查詢備份日誌資料表。`mysql.general_log` 資料表的備份日誌資料表名為 `mysql.general_log_backup`。

當 `log_output` 參數設定為 `TABLE` 時，您僅可執行此程序。

## mysql.rds\$1rotate\$1slow\$1log
<a name="mysql_rds_rotate_slow_log"></a>

將 `mysql.slow_log` 資料表輪換至備份資料表。

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

 

```
CALL mysql.rds_rotate_slow_log;
```

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

您可以呼叫 `mysql.slow_log` 程序，將 `mysql.rds_rotate_slow_log` 資料表輪換至備份資料表。輪換日誌資料表時，目前日誌資料表會複製到備份日誌資料表，並移除目前日誌資料表中的項目。如果備份日誌資料表已存在，則其會在目前日誌資料表複製到備份之前遭到刪除。

如有需要，您可以查詢備份日誌資料表。`mysql.slow_log` 資料表的備份日誌資料表名為 `mysql.slow_log_backup`。

# 設定和顯示二進位日誌組態
<a name="mysql-stored-proc-configuring"></a>

下列預存程序會設定並顯示組態參數，例如二進位日誌檔案保留。

**Topics**
+ [mysql.rds\$1set\$1configuration](#mysql_rds_set_configuration)
+ [mysql.rds\$1show\$1configuration](#mysql_rds_show_configuration)

## mysql.rds\$1set\$1configuration
<a name="mysql_rds_set_configuration"></a>

指定保留二進位日誌的小時數，或延遲複寫的秒數。

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

 

```
CALL mysql.rds_set_configuration(name,value);
```

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

 *name*   
要設定之組態參數的名稱。

 *value*   
組態參數的值。

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

`mysql.rds_set_configuration` 程序支援下列組態參數：
+ [binlog 保留 (小時)](#mysql_rds_set_configuration-usage-notes.binlog-retention-hours)

組態參數會永久存放，且在任何資料庫執行個體重新啟動或容錯移轉後依然存在。

#### binlog 保留 (小時)
<a name="mysql_rds_set_configuration-usage-notes.binlog-retention-hours"></a>

`binlog retention hours` 參數用於指定保留二進位日誌檔的小時數。Amazon Aurora 通常會儘快清除二進位日誌，但複寫 Aurora 外部的 MySQL 資料庫時可能仍需要二進位日誌。

`binlog retention hours` 的預設值為 `NULL`。對於 Aurora MySQL，`NULL` 意味著二進位日誌被延遲清理。Aurora MySQL 二進位日誌可能會在系統中保留一段時間，通常不會超過一天。

若要指定在資料庫叢集上保留二進位日誌的時數，請使用 `mysql.rds_set_configuration` 預存程序，並指定讓複寫有足夠時間進行的期間，如下列範例所示。

`call mysql.rds_set_configuration('binlog retention hours', 24);`

**注意**  
不可針對 `binlog retention hours` 使用值 `0`。

對於 Aurora MySQL 2.11.0 版和更新版本，以及第 3 版資料庫叢集，最大 `binlog retention hours` 值是 2160 (90 天)。

設定保留期間之後，請監控資料庫執行個體的儲存體用量，確定保留的二進位日誌沒有佔用太多儲存體。

## mysql.rds\$1show\$1configuration
<a name="mysql_rds_show_configuration"></a>

保留二進位日誌的時數。

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

 

```
CALL mysql.rds_show_configuration;
```

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

若要驗證 Amazon RDS 保留二進位日誌的時數，請使用 `mysql.rds_show_configuration` 預存程序。

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

下列範例顯示保留期間：

```
call mysql.rds_show_configuration;
                name                         value     description
                binlog retention hours       24        binlog retention hours specifies the duration in hours before binary logs are automatically deleted.
```