

# RDS for MySQL ストアドプロシージャリファレンス
<a name="Appendix.MySQL.SQLRef"></a>

これらのトピックでは、MySQL DB エンジンを実行する Amazon RDS インスタンスで使用できるシステムストアドプロシージャについて説明します。マスターユーザーがこれらの手順を実行する必要があります。

**Topics**
+ [

# グローバルステータス履歴の収集と維持
](mysql-stored-proc-gsh.md)
+ [

# バイナリログレプリケーションの設定、開始、停止
](mysql-stored-proc-replicating.md)
+ [

# セッションやクエリの終了
](mysql-stored-proc-ending.md)
+ [

# アクティブ/アクティブクラスターの管理
](mysql-stored-proc-active-active-clusters.md)
+ [

# マルチソースレプリケーションの管理
](mysql-stored-proc-multi-source-replication.md)
+ [

# GTID を使用したトランザクションのレプリケーション
](mysql-stored-proc-gtid.md)
+ [

# クエリログのローテーション
](mysql-stored-proc-logging.md)
+ [

# バイナリログ構成の設定と表示
](mysql-stored-proc-configuring.md)
+ [

# InnoDB キャッシュのウォームアップ
](mysql-stored-proc-warming.md)

# グローバルステータス履歴の収集と維持
<a name="mysql-stored-proc-gsh"></a>

Amazon RDS は、ステータス変数の値のスナップショットを掲示的に取得し、前回のスナップショット後の変化とともにテーブルに書き込む一連のプロシージャを提供します。このインフラストラクチャは Global Status History (GoSH) と呼ばれます。詳細については、「[RDS for MySQL のグローバルステータス履歴の管理](Appendix.MySQL.CommonDBATasks.GoSH.md)」(Global Status History の管理) を参照してください。

以下のストアドプロシージャは、Global Status History (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>

Global Status History (GoSH) のスナップショットをオンデマンドで作成します。

### 構文
<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>

Global Status History (GoSH) によって作成されたスナップショットを無効にします。

### 構文
<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>

Global Status History (GoSH) をオンにして、`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>

`rds_set_gsh_rotation` で指定された間隔での `mysql.global_status_history` テーブルのコンテンツの `mysql.global_status_history_old` へのローテーションをオンにします。

### 構文
<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>

Global Status History (GoSH) によって作成されたスナップショットの間隔を分単位で指定します。

### 構文
<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` です。

# バイナリログレプリケーションの設定、開始、停止
<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 を使用した暗号化](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>

出典データベースインスタンスのログの位置を、出典データベースインスタンスの次のバイナリログの先頭に変更します。このプロシージャは、リードレプリカでレプリケーション I/O エラー 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` は、レプリケーション出典であるマルチ AZ DB インスタンスのフェイルオーバーの後でレプリケーションが失敗し、`Last_IO_Errno` の `SHOW REPLICA STATUS` フィールドが I/O エラー 1236 を示している場合にのみ呼び出してください。  
`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` フィールドはインスタンスが I/O エラー 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>

出典データベースインスタンスのログの位置を、出典データベースインスタンスの次のバイナリログの先頭に変更します。このプロシージャは、リードレプリカでレプリケーション I/O エラー 1236 が発生した場合にのみ使用してください。

### 構文
<a name="mysql_rds_next_source_log-syntax"></a>

 

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

### パラメータ
<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` は、レプリケーション出典であるマルチ AZ DB インスタンスのフェイルオーバーの後でレプリケーションが失敗し、`Last_IO_Errno` の `SHOW REPLICA STATUS` フィールドが I/O エラー 1236 を示している場合にのみ呼び出してください。  
`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` フィールドはインスタンスが I/O エラー 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 DB インスタンスを、Amazon RDS の外部で実行している MySQL インスタンスのリードレプリカとして使用しないように再設定します。

**重要**  
この手順を実行するには、`autocommit` を有効にする必要があります。これを有効にするには、`autocommit` パラメータを `1` に設定します。パラメータの変更については、「[Amazon RDS の DB パラメータグループのパラメータの変更](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` を実行する必要があります。このプロシージャは、Amazon RDS の外部で動作する MySQL インスタンスのリードレプリカとしての設定が解除される MySQL DB インスタンス上で実行する必要があります。

**注記**  
可能な場合は、2 つの Amazon RDS DB インスタンス間のレプリケーションを管理するために、リードレプリカを使用することをお勧めします。その場合、このプロシージャとレプリケーション関連のストアドプロシージャだけを使用することをお勧めします。これらのプラクティスにより、Amazon RDS DB インスタンス間で、より複雑なレプリケーショントポロジが有効になります。これらのストアドプロシージャは、主に Amazon RDS 外部で実行されている MySQL インスタンスのレプリケーションの有効化のために提供されています。Amazon RDS DB インスタンス間でのレプリケーションの管理の詳細については、「[DB インスタンスのリードレプリカの操作](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 DB インスタンスを、Amazon RDS の外部で実行している MySQL インスタンスのリードレプリカとして使用しないように再設定します。

**重要**  
この手順を実行するには、`autocommit` を有効にする必要があります。これを有効にするには、`autocommit` パラメータを `1` に設定します。パラメータの変更については、「[Amazon RDS の DB パラメータグループのパラメータの変更](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`プロシージャを実行すべきです。このプロシージャは、Amazon RDS の外部で動作する MySQL インスタンスのリードレプリカとしての設定が解除される MySQL DB インスタンス上で実行する必要があります。

**注記**  
可能な場合は、2 つの Amazon RDS DB インスタンス間のレプリケーションを管理するために、リードレプリカを使用することをお勧めします。その場合、このプロシージャとレプリケーション関連のストアドプロシージャだけを使用することをお勧めします。これらのプラクティスにより、Amazon RDS DB インスタンス間で、より複雑なレプリケーショントポロジが有効になります。これらのストアドプロシージャは、主に Amazon RDS 外部で実行されている MySQL インスタンスのレプリケーションの有効化のために提供されています。  
Amazon RDS DB インスタンス間でのレプリケーションの管理の詳細については、「[DB インスタンスのリードレプリカの操作](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 DB インスタンスを、Amazon RDS の外部で実行している MySQL インスタンスのリードレプリカとして使用するように設定します。

**重要**  
この手順を実行するには、`autocommit` を有効にする必要があります。これを有効にするには、`autocommit` パラメータを `1` に設定します。パラメータの変更については、「[Amazon RDS の DB パラメータグループのパラメータの変更](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*   
出典データベースインスタンスとなる、Amazon RDS の外部で動作する MySQL インスタンスのホスト名または IP アドレス。

 *host\$1port*   
Amazon RDS の外部で動作する MySQL インスタンス (出典データベースインスタンス) で使用されるポート。ポート番号を変換する Secure Shell (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` バイナリログ内の場所。レプリケーションでは、この場所からレプリケーション情報の読み取りをスタートします。  
binlog ファイルの名前と場所は、`SHOW MASTER STATUS`出典データベースインスタンス上で実行することによって決定できます。

 *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` を実行する必要があります。このプロシージャは、Amazon RDS の外部で動作する MySQL インスタンスのリードレプリカとして設定される MySQL DB インスタンス上で実行する必要があります。

`mysql.rds_set_external_master` を実行する前に、Amazon RDS の外部で動作する MySQL インスタンスを出典データベースインスタンスとして必ず設定してください。Amazon RDS の外部で動作する MySQL インスタンスに接続するには、MySQL の外部インスタンスの `replication_user_name` および `replication_user_password` アクセス権限を持つレプリケーションユーザーを示す `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` の権限をレプリケーションユーザーに付与します。次の例では、ドメインの 「repl\$1user」ユーザーに、すべてのデータベースの `REPLICATION CLIENT` および `REPLICATION SLAVE` 権限を付与します。

   **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 接続を使用するようにソースデータベースインスタンスを設定します。

**注記**  
可能な場合は、2 つの Amazon RDS DB インスタンス間のレプリケーションを管理するために、リードレプリカを使用することをお勧めします。その場合、このプロシージャとレプリケーション関連のストアドプロシージャだけを使用することをお勧めします。これらのプラクティスにより、Amazon RDS DB インスタンス間で、より複雑なレプリケーショントポロジが有効になります。これらのストアドプロシージャは、主に Amazon RDS 外部で実行されている MySQL インスタンスのレプリケーションの有効化のために提供されています。Amazon RDS DB インスタンス間でのレプリケーションの管理の詳細については、「[DB インスタンスのリードレプリカの操作](USER_ReadRepl.md)」を参照してください。

`mysql.rds_set_external_master` を呼び出して Amazon RDS DB インスタンスをリードレプリカとして設定した後で、このリードレプリカで [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 DB インスタンス上で実行すると、DB インスタンスが Amazon RDS の外部で動作する MySQL インスタンスのリードレプリカとして設定されます。次に例を示します。

```
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 DB インスタンスを、Amazon RDS の外部で実行している MySQL インスタンスのリードレプリカとして使用するように設定します。

**重要**  
この手順を実行するには、`autocommit` を有効にする必要があります。これを有効にするには、`autocommit` パラメータを `1` に設定します。パラメータの変更については、「[Amazon RDS の DB パラメータグループのパラメータの変更](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*   
出典データベースインスタンスとなる、Amazon RDS の外部で動作する MySQL インスタンスのホスト名または IP アドレス。

 *host\$1port*   
Amazon RDS の外部で動作する MySQL インスタンス (出典データベースインスタンス) で使用されるポート。ポート番号を変換する Secure Shell (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` バイナリログ内の場所。レプリケーションでは、この場所からレプリケーション情報の読み取りをスタートします。  
binlog ファイルの名前と場所は、`SHOW MASTER STATUS`出典データベースインスタンス上で実行することによって決定できます。

 *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`プロシージャを実行すべきです。このプロシージャは、Amazon RDS の外部で実行している MySQL インスタンスのリードレプリカとして設定される RDS for MySQL DB インスタンス上で実行する必要があります。

 `mysql.rds_set_external_source` を実行する前に、Amazon RDS の外部で動作する MySQL インスタンスを出典データベースインスタンスとして必ず設定してください。Amazon RDS の外部で動作する MySQL インスタンスに接続するには、MySQL の外部インスタンスの `replication_user_name` および `replication_user_password` アクセス権限を持つレプリケーションユーザーを示す `REPLICATION CLIENT` および `REPLICATION SLAVE` の値を指定する必要があります。

**MySQL の外部インスタンスを出典データベースインスタンスとして設定するには**

1. 選択した MySQL クライアントを使用して、MySQL の外部インスタンスに接続し、レプリケーションに使用されるユーザーアカウントを作成します。以下に例を示します。

   ```
   CREATE USER 'repl_user'@'mydomain.com' IDENTIFIED BY 'password';
   ```
**注記**  
セキュリティ上のベストプラクティスとして、ここに示されているプロンプト以外のパスワードを指定してください。

1. MySQL の外部インスタンスで、`REPLICATION CLIENT` と `REPLICATION SLAVE` の権限をレプリケーションユーザーに付与します。次の例では、ドメインの 「repl\$1user」ユーザーに、すべてのデータベースの `REPLICATION CLIENT` および `REPLICATION SLAVE` 特権を付与します。

   ```
   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) プロシージャを使用して、DB インスタンスまたは DB クラスターに認証局証明書、クライアント証明書、およびクライアントキーをインポートします。

**注記**  
可能な場合は、2 つの Amazon RDS DB インスタンス間のレプリケーションを管理するために、リードレプリカを使用することをお勧めします。その場合、このプロシージャとレプリケーション関連のストアドプロシージャだけを使用することをお勧めします。これらのプラクティスにより、Amazon RDS DB インスタンス間で、より複雑なレプリケーショントポロジが有効になります。これらのストアドプロシージャは、主に Amazon RDS 外部で実行されている MySQL インスタンスのレプリケーションの有効化のために提供されています。Amazon RDS DB インスタンス間でのレプリケーションの管理の詳細については、「[DB インスタンスのリードレプリカの操作](USER_ReadRepl.md)」を参照してください。

`mysql.rds_set_external_source` を呼び出して RDS for MySQL DB インスタンスをリードレプリカとして設定したら、このリードレプリカで [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 DB インスタンスで実行すると、次の例に示されているように、DB インスタンスが Amazon RDS の外部で実行されている MySQL インスタンスのリードレプリカとして設定されます。

```
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 DB インスタンスを、Amazon RDS の外部で動作する MySQL インスタンスのリードレプリカとして設定します。このプロシージャは、遅延レプリケーション、および、グローバルトランザクション識別子 (GTID) ベースのレプリケーションも設定します。

**重要**  
この手順を実行するには、`autocommit` を有効にする必要があります。これを有効にするには、`autocommit` パラメータを `1` に設定します。パラメータの変更については、「[Amazon RDS の DB パラメータグループのパラメータの変更](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*   
出典データベースインスタンスとなる、Amazon RDS の外部で動作する MySQL インスタンスのホスト名または IP アドレス。

 *host\$1port*   
Amazon RDS の外部で動作する MySQL インスタンス (出典データベースインスタンス) で使用されるポート。ポート番号を変換する Secure Shell (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 に設定されます。つまり、接続は暗号化されますが、証明書は検証されません。

 *delay*   
出典データベースインスタンスからのレプリケーションを遅延させる最小秒数。  
このパラメータの上限は 1 日 (86400 秒) です。

### 使用に関する注意事項
<a name="mysql_rds_set_external_master_with_auto_position-usage-notes"></a>

マスターユーザーが `mysql.rds_set_external_master_with_auto_position` を実行する必要があります。このプロシージャは、Amazon RDS の外部で動作する MySQL インスタンスのリードレプリカとして設定される MySQL DB インスタンス上で実行する必要があります。

この手順は すべての 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)」を参照してください。

**注記**  
可能な場合は、2 つの Amazon RDS DB インスタンス間のレプリケーションを管理するために、リードレプリカを使用することをお勧めします。その場合、このプロシージャとレプリケーション関連のストアドプロシージャだけを使用することをお勧めします。これらのプラクティスにより、Amazon RDS DB インスタンス間で、より複雑なレプリケーショントポロジが有効になります。これらのストアドプロシージャは、主に Amazon RDS 外部で実行されている MySQL インスタンスのレプリケーションの有効化のために提供されています。Amazon RDS DB インスタンス間でのレプリケーションの管理の詳細については、「[DB インスタンスのリードレプリカの操作](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 DB インスタンスをリードレプリカとして設定した後で、このリードレプリカで [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` でのレプリケーションが停止したら、「[リードレプリカをスタンドアロン DB インスタンスに昇格させる](USER_ReadRepl.Promote.md)」の手順に従ってリードレプリカを新しいプライマリ DB インスタンスに昇格させることができます。

`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 DB インスタンス上で実行すると、DB インスタンスが Amazon RDS の外部で動作する MySQL インスタンスのリードレプリカとして設定されます。次に例を示します。この例では、MySQL DB インスタンスでのレプリケーションの最小遅延間隔を 1 時間 (3600 秒) に設定します。Amazon RDS の外部で動作する MySQL 出典データベースインスタンスの変更は、少なくとも 1 時間は MySQL DB インスタンスのリードレプリカに適用されません。

```
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 DB インスタンスを、Amazon RDS の外部で動作する MySQL インスタンスのリードレプリカとして設定します。このプロシージャは、遅延レプリケーション、および、グローバルトランザクション識別子 (GTID) ベースのレプリケーションも設定します。

**重要**  
この手順を実行するには、`autocommit` を有効にする必要があります。これを有効にするには、`autocommit` パラメータを `1` に設定します。パラメータの変更については、「[Amazon RDS の DB パラメータグループのパラメータの変更](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*   
出典データベースインスタンスとなる、Amazon RDS の外部で動作する MySQL インスタンスのホスト名または IP アドレス。

 *host\$1port*   
Amazon RDS の外部で動作する MySQL インスタンス (出典データベースインスタンス) で使用されるポート。ポート番号を変換する Secure Shell (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 に設定されます。つまり、接続は暗号化されますが、証明書は検証されません。

 *delay*   
出典データベースインスタンスからのレプリケーションを遅延させる最小秒数。  
このパラメータの上限は 1 日 (86400 秒) です。

### 使用に関する注意事項
<a name="mysql_rds_set_external_source_with_auto_position-usage-notes"></a>

管理ユーザーは、`mysql.rds_set_external_source_with_auto_position`プロシージャを実行すべきです。このプロシージャは、Amazon RDS の外部で動作する MySQL インスタンスのリードレプリカとして設定される MySQL DB インスタンス上で実行する必要があります。

`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)」を参照してください。

**注記**  
可能な場合は、2 つの Amazon RDS DB インスタンス間のレプリケーションを管理するために、リードレプリカを使用することをお勧めします。その場合、このプロシージャとレプリケーション関連のストアドプロシージャだけを使用することをお勧めします。これらのプラクティスにより、Amazon RDS DB インスタンス間で、より複雑なレプリケーショントポロジが有効になります。これらのストアドプロシージャは、主に Amazon RDS 外部で実行されている MySQL インスタンスのレプリケーションの有効化のために提供されています。Amazon RDS DB インスタンス間でのレプリケーションの管理の詳細については、「[DB インスタンスのリードレプリカの操作](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 DB インスタンスをリードレプリカとして設定した後で、このリードレプリカで [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` でのレプリケーションが停止したら、「[リードレプリカをスタンドアロン DB インスタンスに昇格させる](USER_ReadRepl.Promote.md)」の手順に従ってリードレプリカを新しいプライマリ DB インスタンスに昇格させることができます。

`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 DB インスタンス上で実行すると、DB インスタンスが Amazon RDS の外部で動作する MySQL インスタンスのリードレプリカとして設定されます。次に例を示します。この例では、MySQL DB インスタンスでのレプリケーションの最小遅延間隔を 1 時間 (3600 秒) に設定します。Amazon RDS の外部で動作する MySQL 出典データベースインスタンスの変更は、少なくとも 1 時間は MySQL DB インスタンスのリードレプリカに適用されません。

```
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 DB インスタンスを、Amazon RDS の外部で動作する MySQL インスタンスのリードレプリカとして設定し、さらに遅延レプリケーションを設定します。

**重要**  
この手順を実行するには、`autocommit` を有効にする必要があります。これを有効にするには、`autocommit` パラメータを `1` に設定します。パラメータの変更については、「[Amazon RDS の DB パラメータグループのパラメータの変更](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*   
Amazon RDS の外部で動作する MySQL インスタンス (出典データベースインスタンス) で使用されるポート。ポート番号を変換する 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` バイナリログ内の場所。レプリケーションでは、この場所からレプリケーション情報の読み取りをスタートします。  
binlog ファイルの名前と場所は、`SHOW MASTER STATUS`出典データベースインスタンス上で実行することによって決定できます。

 *ssl\$1encryption*   
レプリケーション接続で Secure Socket Layer (SSL) 暗号化を使用するかどうかを指定する値。1 は SSL 暗号化を使用することを指定し、0 は暗号化を使用しないことを指定します。デフォルトは 0 です。  
`MASTER_SSL_VERIFY_SERVER_CERT` オプションはサポートされていません。このオプションは 0 に設定されます。つまり、接続は暗号化されますが、証明書は検証されません。

 *delay*   
出典データベースインスタンスからのレプリケーションを遅延させる最小秒数。  
このパラメータの上限は 1 日 (86400 秒) です。

### 使用に関する注意事項
<a name="mysql_rds_set_external_master_with_delay-usage-notes"></a>

 マスターユーザーが `mysql.rds_set_external_master_with_delay` を実行する必要があります。このプロシージャは、Amazon RDS の外部で動作する MySQL インスタンスのリードレプリカとして設定される MySQL DB インスタンス上で実行する必要があります。

 `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)」を参照してください。

**注記**  
可能な場合は、2 つの Amazon RDS DB インスタンス間のレプリケーションを管理するために、リードレプリカを使用することをお勧めします。その場合、このプロシージャとレプリケーション関連のストアドプロシージャだけを使用することをお勧めします。これらのプラクティスにより、Amazon RDS DB インスタンス間で、より複雑なレプリケーショントポロジが有効になります。これらのストアドプロシージャは、主に Amazon RDS 外部で実行されている MySQL インスタンスのレプリケーションの有効化のために提供されています。Amazon RDS DB インスタンス間でのレプリケーションの管理の詳細については、「[DB インスタンスのリードレプリカの操作](USER_ReadRepl.md)」を参照してください。

`mysql.rds_set_external_master_with_delay` を呼び出して Amazon RDS DB インスタンスをリードレプリカとして設定した後で、このリードレプリカで [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` でのレプリケーションが停止したら、「[リードレプリカをスタンドアロン DB インスタンスに昇格させる](USER_ReadRepl.Promote.md)」の手順に従ってリードレプリカを新しいプライマリ DB インスタンスに昇格させることができます。

`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)」を参照してください。

`mysql.rds_set_external_master_with_delay` プロシージャは、以下のバージョンの RDS for MySQL で利用できます。
+ MySQL のバージョン 8.0 (8.0.26 以降)
+ すべての 5.7 バージョン

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

MySQL DB インスタンス上で実行すると、DB インスタンスが Amazon RDS の外部で動作する MySQL インスタンスのリードレプリカとして設定されます。次に例を示します。この例では、MySQL DB インスタンスでのレプリケーションの最小遅延間隔を 1 時間 (3600 秒) に設定します。Amazon RDS の外部で動作する MySQL 出典データベースインスタンスの変更は、少なくとも 1 時間は MySQL DB インスタンスのリードレプリカに適用されません。

```
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 DB インスタンスを、Amazon RDS の外部で動作する MySQL インスタンスのリードレプリカとして設定し、さらに遅延レプリケーションを設定します。

**重要**  
この手順を実行するには、`autocommit` を有効にする必要があります。これを有効にするには、`autocommit` パラメータを `1` に設定します。パラメータの変更については、「[Amazon RDS の DB パラメータグループのパラメータの変更](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*   
Amazon RDS の外部で動作する MySQL インスタンス (出典データベースインスタンス) で使用されるポート。ポート番号を変換する 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` バイナリログ内の場所。レプリケーションでは、この場所からレプリケーション情報の読み取りをスタートします。  
binlog ファイルの名前と場所は、`SHOW MASTER STATUS`出典データベースインスタンス上で実行することによって決定できます。

 *ssl\$1encryption*   
レプリケーション接続で Secure Socket Layer (SSL) 暗号化を使用するかどうかを指定する値。1 は SSL 暗号化を使用することを指定し、0 は暗号化を使用しないことを指定します。デフォルトは 0 です。  
`SOURCE_SSL_VERIFY_SERVER_CERT` オプションはサポートされていません。このオプションは 0 に設定されます。つまり、接続は暗号化されますが、証明書は検証されません。

 *delay*   
出典データベースインスタンスからのレプリケーションを遅延させる最小秒数。  
このパラメータの上限は 1 日 (86400 秒) です。

### 使用に関する注意事項
<a name="mysql_rds_set_external_source_with_delay-usage-notes"></a>

管理ユーザーは、`mysql.rds_set_external_source_with_delay`プロシージャを実行すべきです。このプロシージャは、Amazon RDS の外部で動作する MySQL インスタンスのリードレプリカとして設定される MySQL DB インスタンス上で実行する必要があります。

 `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)」を参照してください。

**注記**  
可能な場合は、2 つの Amazon RDS DB インスタンス間のレプリケーションを管理するために、リードレプリカを使用することをお勧めします。その場合、このプロシージャとレプリケーション関連のストアドプロシージャだけを使用することをお勧めします。これらのプラクティスにより、Amazon RDS DB インスタンス間で、より複雑なレプリケーショントポロジが有効になります。これらのストアドプロシージャは、主に Amazon RDS 外部で実行されている MySQL インスタンスのレプリケーションの有効化のために提供されています。Amazon RDS DB インスタンス間でのレプリケーションの管理の詳細については、「[DB インスタンスのリードレプリカの操作](USER_ReadRepl.md)」を参照してください。

`mysql.rds_set_external_source_with_delay` を呼び出して Amazon RDS DB インスタンスをリードレプリカとして設定した後で、このリードレプリカで [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` でのレプリケーションが停止したら、「[リードレプリカをスタンドアロン DB インスタンスに昇格させる](USER_ReadRepl.Promote.md)」の手順に従ってリードレプリカを新しいプライマリ DB インスタンスに昇格させることができます。

`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 DB インスタンス上で実行すると、DB インスタンスが Amazon RDS の外部で動作する MySQL インスタンスのリードレプリカとして設定されます。次に例を示します。この例では、MySQL DB インスタンスでのレプリケーションの最小遅延間隔を 1 時間 (3600 秒) に設定します。Amazon RDS の外部で動作する MySQL 出典データベースインスタンスの変更は、少なくとも 1 時間は MySQL DB インスタンスのリードレプリカに適用されません。

```
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 の DB パラメータグループのパラメータの変更](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
);
```

### パラメータ
<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 DB インスタンスで `mysql.rds_set_external_source_gtid_purged` ストアドプロシージャを呼び出して値を設定します。

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

MySQL DB インスタンスで実行すると、次の例では、UUID `12345678-abcd-1234-efgh-123456789abc` を持つ外部 MySQL サーバーからの GTID 範囲、`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>

バイナリログファイルの位置、または、グローバルトランザクション識別子 (GTIDs) ベースのレプリケーションモードを設定します。

### 構文
<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>

 *delay*   
出典データベースインスタンスからのレプリケーションを遅延させる最小秒数。  
このパラメータの上限は 1 日 (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` プロシージャによりレプリケーションが停止したら、「[リードレプリカをスタンドアロン DB インスタンスに昇格させる](USER_ReadRepl.Promote.md)」の手順に従ってリードレプリカを新しいプライマリ DB インスタンスに昇格させることができます。

`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)」を参照してください。

`mysql.rds_set_source_delay` プロシージャは、以下のバージョンの RDS for MySQL で利用できます。
+ すべての RDS for MySQL 8.4 バージョン
+ MySQL のバージョン 8.0 (8.0.26 以降)
+ すべての 5.7 バージョン

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

出典データベースインスタンスから現在のリードレプリカへのレプリケーションを少なくとも 1 時間 (3600 秒) 遅延させるには、次のパラメータを使用して `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 DB リードレプリカのレプリケーションエラーをスキップして、削除します。

### 構文
<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 statement](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` コマンドを呼び出してレプリケーションエラーをスキップすることができなくなります。

この問題は、出典データベースインスタンスでバイナリログファイルの保持時間を増加させることで軽減できます。バイナリログ保持時間を長くすると、レプリケーションを再開し、必要に応じて `mysql.rds_skip_repl_error` コマンドを使用できるようになります。

バイナリログの保持期間を設定するには、「[mysql.rds\$1set\$1configuration](mysql-stored-proc-configuring.md#mysql_rds_set_configuration)」の手順を使用して、DB クラスターのバイナリログファイルの保持期間に合わせて、`'binlog retention hours'` の設定パラメータを指定します。以下の例では、バイナリログファイルの保持期間を 48 時間に設定しています。

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

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

RDS for MySQL DB インスタンスからのレプリケーションを開始します。

**注記**  
[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 DB インスタンスからのレプリケーションを開始し、指定したバイナリログファイルの場所でレプリケーションを停止できます。

### 構文
<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 DB インスタンスへのバックアップの復元](MySQL.Procedural.Importing.md)」を参照してください。

Amazon RDS の外部の MySQL インスタンスにデータをエクスポートするには、リードレプリカに対して `mysql.rds_start_replication` と `mysql.rds_stop_replication` を呼び出して、バイナリログの消去などのレプリケーションアクションを制御します。詳細については、「[レプリケーションを使用した MySQL DB インスタンスからのデータのエクスポート](MySQL.Procedural.Exporting.NonRDSRepl.md)」を参照してください。

リードレプリカで `mysql.rds_start_replication` を呼び出すことで、`mysql.rds_stop_replication` の呼び出しによって前に停止したレプリケーションプロセスを再開することもできます。詳細については、「[DB インスタンスのリードレプリカの操作](USER_ReadRepl.md)」を参照してください。

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

RDS for MySQL DB インスタンスからレプリケーションを開始し、指定したバイナリログファイルの場所でレプリケーションを停止します。

### 構文
<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` を実行する必要があります。

`mysql.rds_start_replication_until` プロシージャは、以下のバージョンの RDS for MySQL で利用できます。
+ すべての RDS for MySQL 8.4 バージョン
+ MySQL のバージョン 8.0 (8.0.26 以降)
+ すべての 5.7 バージョン

このプロシージャは、災害対策用の遅延レプリケーションで使用できます。遅延レプリケーションを設定している場合は、このプロシージャを使用して、遅延したリードレプリカへの変更を災害発生直前の時点までロールフォワードできます。このプロシージャでのレプリケーションが停止したら、「[リードレプリカをスタンドアロン DB インスタンスに昇格させる](USER_ReadRepl.Promote.md)」の手順に従ってリードレプリカを新しいプライマリ DB インスタンスに昇格させることができます。

次のストアドプロシージャを使用して遅延レプリケーションを設定できます。
+ [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 DB インスタンスからのレプリケーションを停止します。

### 構文
<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 DB インスタンスへのバックアップの復元](MySQL.Procedural.Importing.md)」を参照してください。

Amazon RDS の外部にある MySQL インスタンスにデータをエクスポートするようにレプリケーションを設定している場合は、リードレプリカで `mysql.rds_start_replication` と `mysql.rds_stop_replication` を呼び出して、バイナリログの消去などのレプリケーションアクションを制御できます。詳細については、「[レプリケーションを使用した MySQL DB インスタンスからのデータのエクスポート](MySQL.Procedural.Exporting.NonRDSRepl.md)」を参照してください。

`mysql.rds_stop_replication` を使用して、2 つ Amazon RDS DB インスタンス間のレプリケーションを停止することもできます。通常、レプリケーションの停止は、リードレプリカでの長時間のオペレーション (リードレプリカで大規模なインデックスを作成するなど) を実行するために行います。停止したレプリケーションプロセスは、リードレプリカで [mysql.rds\$1start\$1replication](#mysql_rds_start_replication) を呼び出して再開できます。詳細については、「[DB インスタンスのリードレプリカの操作](USER_ReadRepl.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 の [PROCESSLIST](https://dev.mysql.com/doc/refman/8.0/en/show-processlist.html) コマンドを使用します。

制限の詳細については、「[MySQL ストアドプロシージャの制限事項](MySQL.KnownIssuesAndLimitations.md#MySQL.Concepts.KnownIssuesAndLimitations.KillProcedures)」を参照してください。

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

次の例では、4243 のスレッド ID を持つ接続を終了します。

```
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*   
終了するクエリを実行しているプロセスまたはスレッドの ID。

### 使用に関する注意事項
<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* です。

制限の詳細については、「[MySQL ストアドプロシージャの制限事項](MySQL.KnownIssuesAndLimitations.md#MySQL.Concepts.KnownIssuesAndLimitations.KillProcedures)」を参照してください。

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

次の例では、クエリスレッド ID が 230040 のクエリを停止します。

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

# アクティブ/アクティブクラスターの管理
<a name="mysql-stored-proc-active-active-clusters"></a>

以下のストアドプロシージャは、RDS for MySQL のアクティブ/アクティブクラスターを設定および管理します。詳細については、「[RDS for MySQL のアクティブ/アクティブクラスターの設定](mysql-active-active-clusters.md)」を参照してください。

これらのストアドプロシージャは、次のバージョンを実行している RDS for MySQL DB インスタンスでのみ使用できます。
+ すべての MySQL 8.4 バージョン
+ MySQL 8.0.35 以降のマイナーバージョン

**Topics**
+ [

## mysql.rds\$1group\$1replication\$1advance\$1gtid
](#mysql_rds_group_replication_advance_gtid)
+ [

## mysql.rds\$1group\$1replication\$1create\$1user
](#mysql_rds_group_replication_create_user)
+ [

## mysql.rds\$1group\$1replication\$1set\$1recovery\$1channel
](#mysql_rds_group_replication_set_recovery_channel)
+ [

## mysql.rds\$1group\$1replication\$1start
](#mysql_rds_group_replication_start)
+ [

## mysql.rds\$1group\$1replication\$1stop
](#mysql_rds_group_replication_stop)

## mysql.rds\$1group\$1replication\$1advance\$1gtid
<a name="mysql_rds_group_replication_advance_gtid"></a>

現在の DB インスタンスにプレースホルダー GTID を作成します。

### 構文
<a name="mysql_rds_group_replication_advance_gtid-syntax"></a>

```
CALL mysql.rds_group_replication_advance_gtid(
begin_id
, end_id
, server_uuid
);
```

### パラメータ
<a name="mysql_rds_group_replication_advance_gtid-parameters"></a>

 *begin\$1id*   
作成する開始トランザクション ID。

 *end\$1id*   
作成する終了トランザクション ID。

 *begin\$1id*   
作成するトランザクションの `group_replication_group_name`。`group_replication_group_name` は、DB インスタンスに関連付けられた DB パラメータグループの UUID として指定されます。

### 使用に関する注意事項
<a name="mysql_rds_group_replication_advance_gtid-usage-notes"></a>

アクティブ/アクティブクラスターでは、DB インスタンスがグループに参加するには、新しい DB インスタンスで実行されるすべての GTID トランザクションが、クラスター内の他のメンバーに存在する必要があります。通常とは異なる場合、インスタンスをグループに結合する前にトランザクションが実行されると、新しい DB インスタンスで、より多くのトランザクションが発生する可能性があります。この場合、既存のトランザクションを削除することはできませんが、この手順を使用して、グループ内の他の DB インスタンスに対応するプレースホルダー GTID を作成できます。その前に、トランザクションが*レプリケートされたデータ に影響を与えない*ことを確認します。

この手順を呼び出すと、`server_uuid:begin_id-end_id` の GTID トランザクションが空のコンテンツで作成されます。レプリケーションの問題を回避するには、この手順を他の条件で使用しないでください。

**重要**  
アクティブ/アクティブクラスターが正常に機能している場合は、この手順を呼び出さないでください。この手順は、作成するトランザクションの考えられる結果を理解しない限り、呼び出さないでください。この手順を呼び出すと、データが矛盾する可能性があります。

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

次の例は、現在の DB インスタンスにプレースホルダー GTID を作成します。

```
CALL mysql.rds_group_replication_advance_gtid(5, 6, '11111111-2222-3333-4444-555555555555');
```

## mysql.rds\$1group\$1replication\$1create\$1user
<a name="mysql_rds_group_replication_create_user"></a>

DB インスタンスにグループレプリケーション用のレプリケーションユーザー `rdsgrprepladmin` を作成します。

### 構文
<a name="mysql_rds_group_replication_create_user-syntax"></a>

```
CALL mysql.rds_group_replication_create_user(
replication_user_password
);
```

### パラメータ
<a name="mysql_rds_group_replication_create_user-parameters"></a>

 *replication\$1user\$1password*   
レプリケーションユーザー `rdsgrprepladmin` のパスワード。

### 使用に関する注意事項
<a name="mysql_rds_group_replication_create_user-usage-notes"></a>
+ レプリケーションユーザー `rdsgrprepladmin` のパスワードは、アクティブ/アクティブクラスター内のすべての DB インスタンスで同じである必要があります。
+ `rdsgrprepladmin` ユーザー名は、グループレプリケーション接続用に予約されています。マスターユーザーを含め、他のユーザーがこのユーザー名を持つことはできません。

### 例
<a name="mysql_rds_group_replication_create_user-examples"></a>

次の例は、DB インスタンスにグループレプリケーション用のレプリケーションユーザー `rdsgrprepladmin` を作成します。

```
CALL mysql.rds_group_replication_create_user('password');
```

## mysql.rds\$1group\$1replication\$1set\$1recovery\$1channel
<a name="mysql_rds_group_replication_set_recovery_channel"></a>

アクティブ/アクティブクラスターの `group_replication_recovery` チャネルを設定します。この手順では、予約済み `rdsgrprepladmin` ユーザーを使用してチャネルを設定します。

### 構文
<a name="mysql_rds_group_replication_set_recovery_channel-syntax"></a>

```
CALL mysql.rds_group_replication_set_recovery_channel(
replication_user_password);
```

### パラメータ
<a name="mysql_rds_group_replication_set_recovery_channel-parameters"></a>

 *replication\$1user\$1password*   
レプリケーションユーザー `rdsgrprepladmin` のパスワード。

### 使用に関する注意事項
<a name="mysql_rds_group_replication_set_recovery_channel-usage-notes"></a>

レプリケーションユーザー `rdsgrprepladmin` のパスワードは、アクティブ/アクティブクラスター内のすべての DB インスタンスで同じである必要があります。`mysql.rds_group_replication_create_user` の呼び出しは、パスワードを指定します。

### 例
<a name="mysql_rds_group_replication_set_recovery_channel-examples"></a>

次の例は、アクティブ/アクティブクラスターの `group_replication_recovery` チャネルを設定します。

```
CALL mysql.rds_group_replication_set_recovery_channel('password');
```

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

現在の DB インスタンスでグループレプリケーションを開始します。

### 構文
<a name="mysql_rds_group_replication_start-syntax"></a>

```
CALL mysql.rds_group_replication_start(
bootstrap
);
```

### パラメータ
<a name="mysql_rds_group_replication_start-parameters"></a>

 *bootstrap*   
新しいグループを初期化するか、既存のグループに参加するかを指定する値。`1` は、現在の DB インスタンスで新しいグループを初期化します。`0` は、DB インスタンスに関連付けられた DB パラメータグループの `group_replication_group_seeds` パラメータで定義されたエンドポイントに接続することで、現在の DB インスタンスを既存のグループに結合します。

### 例
<a name="mysql_rds_group_replication_start-examples"></a>

次の例は、現在の DB インスタンスで新しいグループを初期化します。

```
CALL mysql.rds_group_replication_start(1);
```

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

現在の DB インスタンスでのグループレプリケーションを停止します。

### 構文
<a name="mysql_rds_group_replication_stop-syntax"></a>

```
CALL mysql.rds_group_replication_stop();
```

### 使用に関する注意事項
<a name="mysql_rds_group_replication_stop-usage-notes"></a>

DB インスタンスでのレプリケーションを停止しても、アクティブ/アクティブクラスター内の他の DB インスタンスには影響しません。

# マルチソースレプリケーションの管理
<a name="mysql-stored-proc-multi-source-replication"></a>

以下のストアドプロシージャは、RDS for MySQL マルチソースレプリカでレプリケーションチャネルを設定および管理します。詳細については、「[Amazon RDS for MySQL のマルチソースレプリケーションの設定](mysql-multi-source-replication.md)」を参照してください。

これらのストアドプロシージャは、次のエンジンバージョンを実行している RDS for MySQL DB インスタンスでのみ使用できます。
+ すべての 8.4 バージョン
+ 8.0.35 以降のマイナーバージョン
+ 5.7.44 以降のマイナーバージョン

`caching_sha2_passwword` で設定されたレプリケーションユーザーによるレプリケーションを、ストアドプロシージャを使用して管理する場合は、`SOURCE_SSL=1` を指定して TLS を設定する必要があります。`caching_sha2_password` は RDS for MySQL 8.4 のデフォルトの認証プラグインです。

**注記**  
このドキュメントではソース DB インスタンスを RDS for MySQL DB インスタンスと呼びますが、これらの手順は Amazon RDS の外部で実行されている MySQL インスタンスでも機能します。

**Topics**
+ [

## mysql.rds\$1next\$1source\$1log\$1for\$1channel
](#mysql_rds_next_source_log_for_channel)
+ [

## mysql.rds\$1reset\$1external\$1source\$1for\$1channel
](#mysql_rds_reset_external_source_for_channel)
+ [

## mysql.rds\$1set\$1external\$1source\$1for\$1channel
](#mysql_rds_set_external_source_for_channel)
+ [

## mysql.rds\$1set\$1external\$1source\$1with\$1auto\$1position\$1for\$1channel
](#mysql_rds_set_external_source_with_auto_position_for_channel)
+ [

## mysql.rds\$1set\$1external\$1source\$1with\$1delay\$1for\$1channel
](#mysql_rds_set_external_source_with_delay_for_channel)
+ [

## mysql.rds\$1set\$1source\$1auto\$1position\$1for\$1channel
](#mysql_rds_set_source_auto_position_for_channel)
+ [

## mysql.rds\$1set\$1source\$1delay\$1for\$1channel
](#mysql_rds_set_source_delay_for_channel)
+ [

## mysql.rds\$1skip\$1repl\$1error\$1for\$1channel
](#mysql_rds_skip_repl_error_for_channel)
+ [

## mysql.rds\$1start\$1replication\$1for\$1channel
](#mysql_rds_start_replication_for_channel)
+ [

## mysql.rds\$1start\$1replication\$1until\$1for\$1channel
](#mysql_rds_start_replication_until_for_channel)
+ [

## mysql.rds\$1start\$1replication\$1until\$1gtid\$1for\$1channel
](#mysql_rds_start_replication_until_gtid_for_channel)
+ [

## mysql.rds\$1stop\$1replication\$1for\$1channel
](#mysql_rds_stop_replication_for_channel)

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

ソース DB インスタンスログの位置を、チャネルのソース DB インスタンスの次のバイナリログの先頭に変更します。このプロシージャは、マルチソースレプリカでレプリケーション I/O エラー 1236 が発生した場合にのみ使用してください。

### 構文
<a name="mysql_rds_next_source_log_for_channel-syntax"></a>

 

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

### パラメータ
<a name="mysql_rds_next_source_log_for_channel-parameters"></a>

 *curr\$1master\$1log*  
現在のソースログファイルのインデックス。例えば、現在のファイルが `mysql-bin-changelog.012345` という名前の場合は、インデックスは 12345 になります。現在のソースログファイルの名前を調べるには、`SHOW REPLICA STATUS FOR CHANNEL 'channel_name'` コマンドを実行し、`Source_Log_File` フィールドを確認します。

 *channel\$1name*   
マルチソースレプリカのレプリケーションチャネルの名前。各レプリケーションチャネルは、特定のホストとポートで実行されているシングルソース RDS for MySQL DB インスタンスからバイナリログイベントを受け取ります。

### 使用に関する注意事項
<a name="mysql_rds_next_source_log_for_channel-usage-notes"></a>

マスターユーザーが `mysql.rds_next_source_log_for_channel` を実行する必要があります。例えば、IO\$1Thread エラーが発生した場合、このプロシージャを使用して現在のバイナリログファイルのすべてのイベントをスキップし、`channel_name` で指定されたチャネルの次のバイナリログファイルからレプリケーションを再開できます。

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

マルチソースレプリカのチャネルでレプリケーションが失敗するとします。マルチソースレプリカで `SHOW REPLICA STATUS FOR CHANNEL 'channel_1'\G` を実行すると、次の結果が返されます。

```
mysql> SHOW REPLICA STATUS FOR CHANNEL 'channel_1'\G
*************************** 1. row ***************************
             Replica_IO_State: Waiting for source to send event
                  Source_Host: myhost.XXXXXXXXXXXXXXX.rr-rrrr-1.rds.amazonaws.com
                  Source_User: ReplicationUser
                  Source_Port: 3306
                Connect_Retry: 60
              Source_Log_File: mysql-bin-changelog.012345
          Read_Source_Log_Pos: 1219393
               Relay_Log_File: replica-relay-bin.000003
                Relay_Log_Pos: 30223388
        Relay_Source_Log_File: mysql-bin-changelog.012345
           Replica_IO_Running: No
          Replica_SQL_Running: Yes
              Replicate_Do_DB:.
              .
              .
                Last_IO_Errno: 1236
                Last_IO_Error: Got fatal error 1236 from master when reading data from binary log: 'Client requested master to start replication from impossible position; the first event 'mysql-bin-changelog.013406' at 1219393, the last event read from '/rdsdbdata/log/binlog/mysql-bin-changelog.012345' at 4, the last byte read from '/rdsdbdata/log/binlog/mysql-bin-changelog.012345' at 4.'
               Last_SQL_Errno: 0
               Last_SQL_Error:
               .
               .
                 Channel_name: channel_1
              .
              .
 -- Some fields are omitted in this example output
```

`Last_IO_Errno` フィールドはインスタンスが I/O エラー 1236 を受け取ったことを示します。`Source_Log_File` フィールドは、ファイル名が `mysql-bin-changelog.012345` であることを示しています。これは、ログファイルのインデックスが `12345` であることを表しています。エラーを解決するには、以下のパラメータを使用して `mysql.rds_next_source_log_for_channel` を呼び出すことができます。

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

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

指定されたチャネルでのレプリケーションプロセスを停止し、マルチソースレプリカからチャネルおよび関連する設定を削除します。

**重要**  
この手順を実行するには、`autocommit` を有効にする必要があります。これを有効にするには、`autocommit` パラメータを `1` に設定します。パラメータの変更については、「[Amazon RDS の DB パラメータグループのパラメータの変更](USER_WorkingWithParamGroups.Modifying.md)」を参照してください。

### 構文
<a name="mysql_rds_reset_external_source_for_channel-syntax"></a>



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

### パラメータ
<a name="mysql_rds_reset_external_source_for_channel-parameters"></a>

 *channel\$1name*   
マルチソースレプリカのレプリケーションチャネルの名前。各レプリケーションチャネルは、特定のホストとポートで実行されているシングルソース RDS for MySQL DB インスタンスからバイナリログイベントを受け取ります。

### 使用に関する注意事項
<a name="mysql_rds_reset_external_source_for_channel-usage-notes"></a>

マスターユーザーが `mysql.rds_reset_external_source_for_channel` を実行する必要があります。このプロシージャは、削除されるチャネルに属するすべてのリレーログを削除します。

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

RDS for MySQL DB インスタンスのレプリケーションチャネルを設定して、別の RDS for MySQL DB インスタンスからデータをレプリケートします。

**重要**  
この手順を実行するには、`autocommit` を有効にする必要があります。これを有効にするには、`autocommit` パラメータを `1` に設定します。パラメータの変更については、「[Amazon RDS の DB パラメータグループのパラメータの変更](USER_WorkingWithParamGroups.Modifying.md)」を参照してください。

**注記**  
代わりに [mysql.rds\$1set\$1external\$1source\$1with\$1delay\$1for\$1channel](#mysql_rds_set_external_source_with_delay_for_channel) ストアドプロシージャを使用して、このチャネルを遅延レプリケーションで設定できます。

### 構文
<a name="mysql_rds_set_external_source_for_channel-syntax"></a>



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

### パラメータ
<a name="mysql_rds_set_external_source_for_channel-parameters"></a>

 *host\$1name*   
RDS for MySQL ソース DB インスタンスのホスト名または IP アドレス。

 *host\$1port*   
RDS for MySQL ソース DB インスタンスで使用されるポート。ポート番号を変換する Secure Shell (SSH) ポートのレプリケーションがネットワーク設定に含まれる場合、SSH によって発行されるポート番号を指定します。

 *replication\$1user\$1name*   
RDS for MySQL ソース DB インスタンスの `REPLICATION CLIENT` および `REPLICATION SLAVE` アクセス許可を持つユーザーの ID。ソース DB インスタンスのレプリケーション専用のアカウントを使用することをお勧めします。

 *replication\$1user\$1password*   
`replication_user_name` で指定されたユーザー ID のパスワード。

 *mysql\$1binary\$1log\$1file\$1name*   
レプリケーション情報を含むソース DB インスタンスのバイナリログの名前。

 *mysql\$1binary\$1log\$1file\$1location*   
`mysql_binary_log_file_name` バイナリログ内の場所。レプリケーションでは、この場所からレプリケーション情報の読み取りをスタートします。  
binlog ファイルの名前と場所は、ソース DB インスタンスで `SHOW BINARY LOG STATUS` を実行することによって決定できます。  
MySQL の旧バージョンは、`SHOW BINARY LOG STATUS` ではなく `SHOW MASTER STATUS` を使用していました。8.4 より前の MySQL バージョンを使用している場合は、`SHOW MASTER STATUS` を使用します。

 *ssl\$1encryption*   
レプリケーション接続で Secure Socket Layer (SSL) 暗号化を使用するかどうかを指定する値。1 は SSL 暗号化を使用することを指定し、0 は暗号化を使用しないことを指定します。デフォルトは 0 です。  
`SOURCE_SSL_VERIFY_SERVER_CERT` オプションはサポートされていません。このオプションは 0 に設定されます。つまり、接続は暗号化されますが、証明書は検証されません。

 *channel\$1name*   
レプリケーションチャネルの名前。各レプリケーションチャネルは、特定のホストとポートで実行されているシングルソース RDS for MySQL DB インスタンスからバイナリログイベントを受け取ります。

### 使用に関する注意事項
<a name="mysql_rds_set_external_source_for_channel-usage-notes"></a>

 マスターユーザーが `mysql.rds_set_external_source_for_channel` を実行する必要があります。このプロシージャは、レプリケーションチャネルを作成するターゲット RDS for MySQL DB インスタンスで実行する必要があります。

 `mysql.rds_set_external_source_for_channel` を実行する前に、マルチソースレプリカに必要な権限を持つレプリケーションユーザーをソース DB インスタンスに設定します。マルチソースレプリカをソース DB インスタンスに接続するには、ソース DB インスタンスに対する `REPLICATION CLIENT` および `REPLICATION SLAVE` アクセス許可を持つレプリケーションユーザーの `replication_user_name` および `replication_user_password` の値を指定する必要があります。

**ソース DB インスタンスでレプリケーションユーザーを設定するには**

1. 選択した MySQL クライアントを使用して、ソース DB インスタンスに接続し、レプリケーションに使用するユーザーアカウントを作成します。以下に例を示します。
**重要**  
セキュリティのベストプラクティスとして、次の例に示すプレースホルダー値以外のパスワードを指定します。

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

1. ソース DB インスタンスで、`REPLICATION CLIENT` および `REPLICATION SLAVE` 権限をレプリケーションユーザーに付与します。次の例では、ドメインの 「repl\$1user」ユーザーに、すべてのデータベースの `REPLICATION CLIENT` および `REPLICATION SLAVE` 権限を付与します。

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

暗号化されたレプリケーションを使用するには、SSL 接続を使用するようにソース DB インスタンスを設定します。

`mysql.rds_set_external_source_for_channel` を呼び出し、このレプリケーションチャネルを設定した後、レプリカに対して [mysql.rds\$1start\$1replication\$1for\$1channel](#mysql_rds_start_replication_for_channel) を呼び出してチャネルでレプリケーションプロセスを開始できます。[mysql.rds\$1reset\$1external\$1source\$1for\$1channel](#mysql_rds_reset_external_source_for_channel) を呼び出してチャンネルのレプリケーションを停止し、レプリカからチャンネル設定を削除できます。

`mysql.rds_set_external_source_for_channel` を呼び出すと、Amazon RDS は、`set channel source` の時間、ユーザー、およびアクションをチャネル固有の詳細なしで `mysql.rds_history` テーブルに記録し、`mysql.rds_replication_status` テーブルにチャネル名を記録します。この情報は、内部使用およびモニタリングの目的でのみ記録されます。監査目的で完全なプロシージャ呼び出しを記録するには、アプリケーションの特定の要件に基づいて、監査ログまたは一般ログを有効にすることを検討してください。

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

RDS for MySQL DB インスタンスで実行すると、次の例は、ホスト `sourcedb.example.com`とポート `3306` で指定されたソースからデータをレプリケートするように、この DB インスタンスで `channel_1` という名前のレプリケーションチャネルを設定します。

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

## mysql.rds\$1set\$1external\$1source\$1with\$1auto\$1position\$1for\$1channel
<a name="mysql_rds_set_external_source_with_auto_position_for_channel"></a>

オプションのレプリケーション遅延を使用して、RDS for MySQL DB インスタンスのレプリケーションチャネルを設定します。このレプリケーションは、グローバルトランザクション識別子 (GTID) に基づきます。

**重要**  
この手順を実行するには、`autocommit` を有効にする必要があります。これを有効にするには、`autocommit` パラメータを `1` に設定します。パラメータの変更については、「[Amazon RDS の DB パラメータグループのパラメータの変更](USER_WorkingWithParamGroups.Modifying.md)」を参照してください。

### 構文
<a name="mysql_rds_set_external_master_with_auto_position_for_channel-syntax"></a>

 

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

### パラメータ
<a name="mysql_rds_set_external_master_with_auto_position_for_channel-parameters"></a>

 *host\$1name*   
RDS for MySQL ソース DB インスタンスのホスト名または IP アドレス。

 *host\$1port*   
RDS for MySQL ソース DB インスタンスで使用されるポート。ポート番号を変換する Secure Shell (SSH) ポートのレプリケーションがネットワーク設定に含まれる場合、SSH によって発行されるポート番号を指定します。

 *replication\$1user\$1name*   
RDS for MySQL ソース DB インスタンスの `REPLICATION CLIENT` および `REPLICATION SLAVE` アクセス許可を持つユーザーの ID。ソース DB インスタンスのレプリケーション専用のアカウントを使用することをお勧めします。

 *replication\$1user\$1password*   
`replication_user_name` で指定されたユーザー ID のパスワード。

 *ssl\$1encryption*   
レプリケーション接続で Secure Socket Layer (SSL) 暗号化を使用するかどうかを指定する値。1 は SSL 暗号化を使用することを指定し、0 は暗号化を使用しないことを指定します。デフォルトは 0 です。  
`SOURCE_SSL_VERIFY_SERVER_CERT` オプションはサポートされていません。このオプションは 0 に設定されます。つまり、接続は暗号化されますが、証明書は検証されません。

 *delay*   
ソース DB インスタンスからのレプリケーションを遅延させる最小秒数。  
このパラメータの上限は 1 日 (86400 秒) です。

 *channel\$1name*   
レプリケーションチャネルの名前。各レプリケーションチャネルは、特定のホストとポートで実行されているシングルソース RDS for MySQL DB インスタンスからバイナリログイベントを受け取ります。

### 使用に関する注意事項
<a name="mysql_rds_set_external_master_with_auto_position_for_channel-usage-notes"></a>

マスターユーザーが `mysql.rds_set_external_source_with_auto_position_for_channel` を実行する必要があります。このプロシージャは、レプリケーションチャネルを作成するターゲット RDS for MySQL DB インスタンスで実行する必要があります。

`rds_set_external_source_with_auto_position_for_channel` を実行する前に、マルチソースレプリカに必要な権限を持つレプリケーションユーザーをソース DB インスタンスに設定します。マルチソースレプリカをソース DB インスタンスに接続するには、ソース DB インスタンスに対する `REPLICATION CLIENT` および `REPLICATION SLAVE` アクセス許可を持つレプリケーションユーザーの `replication_user_name` および `replication_user_password` の値を指定する必要があります。

**ソース DB インスタンスでレプリケーションユーザーを設定するには**

1. 選択した MySQL クライアントを使用して、ソース DB インスタンスに接続し、レプリケーションに使用するユーザーアカウントを作成します。以下に例を示します。
**重要**  
セキュリティのベストプラクティスとして、次の例に示すプレースホルダー値以外のパスワードを指定します。

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

1. ソース DB インスタンスで、`REPLICATION CLIENT` および `REPLICATION SLAVE` 権限をレプリケーションユーザーに付与します。次の例では、ドメインの 「repl\$1user」ユーザーに、すべてのデータベースの `REPLICATION CLIENT` および `REPLICATION SLAVE` 権限を付与します。

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

暗号化されたレプリケーションを使用するには、SSL 接続を使用するようにソース DB インスタンスを設定します。

`mysql.rds_set_external_source_with_auto_position_for_channel` を呼び出す前に、必ず [mysql.rds\$1set\$1external\$1source\$1gtid\$1purged](mysql-stored-proc-replicating.md#mysql_rds_set_external_source_gtid_purged) を呼び出して、外部ソースから指定された GTID 範囲を持つ `gtid_purged` システム変数を設定します。

`mysql.rds_set_external_source_with_auto_position_for_channel` を呼び出して、Amazon RDS DB インスタンスを特定のチャネルのリードレプリカとして設定した後、このリードレプリカで [mysql.rds\$1start\$1replication\$1for\$1channel](#mysql_rds_start_replication_for_channel) を呼び出して、そのチャネルのレプリケーションプロセスを開始できます。

`mysql.rds_set_external_source_with_auto_position_for_channel` を呼び出し、このレプリケーションチャネルを設定した後、レプリカに対して [mysql.rds\$1start\$1replication\$1for\$1channel](#mysql_rds_start_replication_for_channel) を呼び出してチャネルでレプリケーションプロセスを開始できます。[mysql.rds\$1reset\$1external\$1source\$1for\$1channel](#mysql_rds_reset_external_source_for_channel) を呼び出してチャンネルのレプリケーションを停止し、レプリカからチャンネル設定を削除できます。

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

RDS for MySQL DB インスタンスで実行すると、次の例は、この DB インスタンスで `channel_1` という名前のレプリケーションチャネルを設定して、ホスト `sourcedb.example.com` とポート `3306` で指定されたソースからデータをレプリケートします。最小レプリケーション遅延は 1 時間 (3,600 秒) に設定されます。つまり、ソース RDS for MySQL DB インスタンスからの変更は、少なくとも 1 時間はマルチソースレプリカに適用されません。

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

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

指定されたレプリケーション遅延を使用して、RDS for MySQL DB インスタンスのレプリケーションチャネルを設定します。

**重要**  
この手順を実行するには、`autocommit` を有効にする必要があります。これを有効にするには、`autocommit` パラメータを `1` に設定します。パラメータの変更については、「[Amazon RDS の DB パラメータグループのパラメータの変更](USER_WorkingWithParamGroups.Modifying.md)」を参照してください。

### 構文
<a name="mysql_rds_set_external_source_with_delay_for_channel-syntax"></a>

 

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

### パラメータ
<a name="mysql_rds_set_external_source_with_delay_for_channel-parameters"></a>

 *host\$1name*   
RDS for MySQL ソース DB インスタンスのホスト名または IP アドレス。

 *host\$1port*   
RDS for MySQL ソース DB インスタンスで使用されるポート。ポート番号を変換する Secure Shell (SSH) ポートのレプリケーションがネットワーク設定に含まれる場合、SSH によって発行されるポート番号を指定します。

 *replication\$1user\$1name*   
RDS for MySQL ソース DB インスタンスの `REPLICATION CLIENT` および `REPLICATION SLAVE` アクセス許可を持つユーザーの ID。ソース DB インスタンスのレプリケーション専用のアカウントを使用することをお勧めします。

 *replication\$1user\$1password*   
`replication_user_name` で指定されたユーザー ID のパスワード。

 *mysql\$1binary\$1log\$1file\$1name*   
ソース DB インスタンスのバイナリログの名前には、レプリケーション情報が含まれています。

 *mysql\$1binary\$1log\$1file\$1location*   
`mysql_binary_log_file_name` バイナリログ内の場所。レプリケーションでは、この場所からレプリケーション情報の読み取りをスタートします。  
binlog ファイルの名前と場所は、`SHOW BINARY LOG STATUS`出典データベースインスタンス上で実行することによって決定できます。  
MySQL の旧バージョンは、`SHOW BINARY LOG STATUS` ではなく `SHOW MASTER STATUS` を使用していました。8.4 より前の MySQL バージョンを使用している場合は、`SHOW MASTER STATUS` を使用します。

 *ssl\$1encryption*   
レプリケーション接続で Secure Socket Layer (SSL) 暗号化を使用するかどうかを指定する値。1 は SSL 暗号化を使用することを指定し、0 は暗号化を使用しないことを指定します。デフォルトは 0 です。  
`SOURCE_SSL_VERIFY_SERVER_CERT` オプションはサポートされていません。このオプションは 0 に設定されます。つまり、接続は暗号化されますが、証明書は検証されません。

 *delay*   
ソース DB インスタンスからのレプリケーションを遅延させる最小秒数。  
このパラメータの上限は 1 日 (86400 秒) です。

 *channel\$1name*   
レプリケーションチャネルの名前。各レプリケーションチャネルは、特定のホストとポートで実行されているシングルソース RDS for MySQL DB インスタンスからバイナリログイベントを受け取ります。

### 使用に関する注意事項
<a name="mysql_rds_set_external_source_with_delay_for_channel-usage-notes"></a>

マスターユーザーが `mysql.rds_set_external_source_with_delay_for_channel` を実行する必要があります。このプロシージャは、レプリケーションチャネルを作成するターゲット RDS for MySQL DB インスタンスで実行する必要があります。

`mysql.rds_set_external_source_with_delay_for_channel` を実行する前に、マルチソースレプリカに必要な権限を持つレプリケーションユーザーをソース DB インスタンスに設定します。マルチソースレプリカをソース DB インスタンスに接続するには、ソース DB インスタンスに対する `REPLICATION CLIENT` および `REPLICATION SLAVE` アクセス許可を持つレプリケーションユーザーの `replication_user_name` および `replication_user_password` の値を指定する必要があります。

**ソース DB インスタンスでレプリケーションユーザーを設定するには**

1. 選択した MySQL クライアントを使用して、ソース DB インスタンスに接続し、レプリケーションに使用するユーザーアカウントを作成します。以下に例を示します。
**重要**  
セキュリティのベストプラクティスとして、次の例に示すプレースホルダー値以外のパスワードを指定します。

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

1. ソース DB インスタンスで、`REPLICATION CLIENT` および `REPLICATION SLAVE` 権限をレプリケーションユーザーに付与します。次の例では、ドメインの 「repl\$1user」ユーザーに、すべてのデータベースの `REPLICATION CLIENT` および `REPLICATION SLAVE` 権限を付与します。

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

暗号化されたレプリケーションを使用するには、SSL 接続を使用するようにソース DB インスタンスを設定します。

`mysql.rds_set_external_source_with_delay_for_channel` を呼び出し、このレプリケーションチャネルを設定した後、レプリカに対して [mysql.rds\$1start\$1replication\$1for\$1channel](#mysql_rds_start_replication_for_channel) を呼び出してチャネルでレプリケーションプロセスを開始できます。[mysql.rds\$1reset\$1external\$1source\$1for\$1channel](#mysql_rds_reset_external_source_for_channel) を呼び出してチャンネルのレプリケーションを停止し、レプリカからチャンネル設定を削除できます。

`mysql.rds_set_external_source_with_delay_for_channel` を呼び出すと、Amazon RDS は、`set channel source` の時間、ユーザー、およびアクションをチャネル固有の詳細なしで `mysql.rds_history` テーブルに記録し、`mysql.rds_replication_status` テーブルにチャネル名を記録します。この情報は、内部使用およびモニタリングの目的でのみ記録されます。監査目的で完全なプロシージャ呼び出しを記録するには、アプリケーションの特定の要件に基づいて、監査ログまたは一般ログを有効にすることを検討してください。

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

RDS for MySQL DB インスタンスで実行すると、次の例は、この DB インスタンスで `channel_1` という名前のレプリケーションチャネルを設定して、ホスト `sourcedb.example.com` とポート `3306` で指定されたソースからデータをレプリケートします。最小レプリケーション遅延は 1 時間 (3,600 秒) に設定されます。つまり、ソース RDS for MySQL DB インスタンスからの変更は、少なくとも 1 時間はマルチソースレプリカに適用されません。

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

## mysql.rds\$1set\$1source\$1auto\$1position\$1for\$1channel
<a name="mysql_rds_set_source_auto_position_for_channel"></a>

バイナリログファイルの位置、またはグローバルトランザクション識別子 (GTID) に基づいて、指定されたチャネルのレプリケーションモードを設定します。

### 構文
<a name="mysql_rds_set_source_auto_position_for_channel-syntax"></a>

 

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

### パラメータ
<a name="mysql_rds_set_source_auto_position_for_channel-parameters"></a>

 *auto\$1position\$1mode*   
ファイルの位置に基づくレプリケーション、または GTID ベースのレプリケーションかどうかを示す値:  
+ `0` - バイナリログファイルの位置に基づくレプリケーション方法を使用します。デフォルト: `0`。
+ `1` - GTID ベースのレプリケーション方法を使用します。

 *channel\$1name*   
マルチソースレプリカのレプリケーションチャネルの名前。各レプリケーションチャネルは、特定のホストとポートで実行されているシングルソース RDS for MySQL DB インスタンスからバイナリログイベントを受け取ります。

### 使用に関する注意事項
<a name="mysql_rds_set_source_auto_position_for_channel-usage-notes"></a>

マスターユーザーが `mysql.rds_set_source_auto_position_for_channel` を実行する必要があります。このプロシージャは、指定されたチャネルでレプリケーションを再起動して、指定された自動位置モードを適用します。

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

次の例は、channel\$11 の自動位置モードを、GTID ベースのレプリケーション方法を使用するように設定します。

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

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

指定されたチャネルについて、ソースデータベースインスタンスからマルチソースレプリカへのレプリケーションを遅延させる最小秒数を設定します。

### 構文
<a name="mysql_rds_set_source_delay_for_channel-syntax"></a>

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

### パラメータ
<a name="mysql_rds_set_source_delay_for_channel-parameters"></a>

 *delay*   
ソース DB インスタンスからのレプリケーションを遅延させる最小秒数。  
このパラメータの上限は 1 日 (86400 秒) です。

 *channel\$1name*   
マルチソースレプリカのレプリケーションチャネルの名前。各レプリケーションチャネルは、特定のホストとポートで実行されているシングルソース RDS for MySQL DB インスタンスからバイナリログイベントを受け取ります。

### 使用に関する注意事項
<a name="mysql_rds_set_source_delay_for_channel-usage-notes"></a>

マスターユーザーが `mysql.rds_set_source_delay_for_channel` を実行する必要があります。このプロシージャを使用するには、まず、`mysql.rds_stop_replication_for_channel` を呼び出して、レプリケーションを停止します。次に、このプロシージャを呼び出して、レプリケーションの遅延値を設定します。遅延が設定されたら、`mysql.rds_start_replication_for_channel` を呼び出して、レプリケーションを再開します。

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

次の例は、マルチソースレプリカの `channel_1` のソースデータベースインスタンスからのレプリケーションの遅延を少なくとも 1 時間 (3,600 秒) に設定します。

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

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

バイナリログイベントをスキップし、指定したチャネルの MySQL DB マルチソースレプリカのレプリケーションエラーを削除します。

### 構文
<a name="mysql_rds_skip_repl_error_for_channel-syntax"></a>

 

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

### パラメータ
<a name="mysql_rds_skip_repl_error_for_channel-parameters"></a>

 *channel\$1name*   
マルチソースレプリカのレプリケーションチャネルの名前。各レプリケーションチャネルは、特定のホストとポートで実行されているシングルソース RDS for MySQL DB インスタンスからバイナリログイベントを受け取ります。

### 使用に関する注意事項
<a name="mysql_rds_skip_repl_error_for_channel-usage-notes"></a>

マスターユーザーはリードレプリカに対して `mysql.rds_skip_repl_error_for_channel` プロシージャを実行する必要があります。`mysql.rds_skip_repl_error` を使用してリードレプリカのエラーをスキップする場合と同様の方法で、このプロシージャを使用できます。詳細については、「[mysql.rds\$1skip\$1repl\$1error の手順を呼び出します。](Appendix.MySQL.CommonDBATasks.SkipError.md#Appendix.MySQL.CommonDBATasks.SkipError.procedure)」を参照してください。

**注記**  
GTID ベースのレプリケーションのエラーをスキップするには、代わりにプロシージャ [mysql.rds\$1skip\$1transaction\$1with\$1gtid ](mysql-stored-proc-gtid.md#mysql_rds_skip_transaction_with_gtid) を使用することをお勧めします。

MySQL の `SHOW REPLICA STATUS FOR CHANNEL 'channel_name'\G` コマンドを実行して、エラーがあるかどうかを判断します。レプリケーションエラーが重要ではない場合、`mysql.rds_skip_repl_error_for_channel` を実行して、エラーをスキップすることができます。複数のエラーがある場合、`mysql.rds_skip_repl_error_for_channel` は、指定されたレプリケーションチャネルの最初のエラーを削除してから、他にもエラーが存在することを警告します。その後で `SHOW REPLICA STATUS FOR CHANNEL 'channel_name'\G` を使用して、次のエラーに対処するための適切な対応方法を判断することができます。戻り値の詳細については、MySQL ドキュメントの「[SHOW REPLICA STATUS statement](https://dev.mysql.com/doc/refman/8.0/en/show-replica-status.html)」を参照してください。

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

RDS for MySQL DB インスタンスから指定されたチャネルのマルチソースレプリカへのレプリケーションを開始します。

**注記**  
[mysql.rds\$1start\$1replication\$1until\$1for\$1channel](#mysql_rds_start_replication_until_for_channel)、または [mysql.rds\$1start\$1replication\$1until\$1gtid\$1for\$1channel](#mysql_rds_start_replication_until_gtid_for_channel) ストアドプロシージャを使用して、RDS for MySQL DB インスタンスからレプリケーションをスタートし、指定したバイナリログファイルの場所でレプリケーションを停止できます。

### 構文
<a name="mysql_rds_start_replication_for_channel-syntax"></a>

 

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

### パラメータ
<a name="mysql_rds_start_replication_for_channel-parameters"></a>

 *channel\$1name*   
マルチソースレプリカのレプリケーションチャネルの名前。各レプリケーションチャネルは、特定のホストとポートで実行されているシングルソース RDS for MySQL DB インスタンスからバイナリログイベントを受け取ります。

### 使用に関する注意事項
<a name="mysql_rds_start_replication_for_channel-usage-notes"></a>

マスターユーザーが `mysql.rds_start_replication_for_channel` を実行する必要があります。ソース RDS for MySQL DB インスタンスからデータをインポートした後、マルチソースレプリカでこのコマンドを実行して、指定したチャネルでレプリケーションを開始します。

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

次の例では、マルチソースレプリカの `channel_1` でレプリケーションを開始します。

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

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

指定されたチャネルの RDS for MySQL DB インスタンスからレプリケーションを開始し、指定されたバイナリログファイルの場所でレプリケーションを停止します。

### 構文
<a name="mysql_rds_start_replication_until_for_channel-syntax"></a>

 

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

### パラメータ
<a name="mysql_rds_start_replication_until_for_channel-parameters"></a>

 *replication\$1log\$1file*   
ソース DB インスタンスのバイナリログの名前には、レプリケーション情報が含まれています。

 *replication\$1stop\$1point *   
`replication_log_file` バイナリログ内でレプリケーションが停止する場所。

 *channel\$1name*   
マルチソースレプリカのレプリケーションチャネルの名前。各レプリケーションチャネルは、特定のホストとポートで実行されているシングルソース RDS for MySQL DB インスタンスからバイナリログイベントを受け取ります。

### 使用に関する注意事項
<a name="mysql_rds_start_replication_until_for_channel-usage-notes"></a>

マスターユーザーが `mysql.rds_start_replication_until_for_channel` を実行する必要があります。このプロシージャでは、レプリケーションが開始され、指定されたバイナリログファイルの位置に達すると停止します。このプロシージャでは、`SQL_THREAD` と `IO_THREAD` の両方が停止します。

`replication_log_file` パラメータで指定されたファイル名は、ソース DB インスタンスの binlog ファイル名と一致する必要があります。

`replication_stop_point` パラメータで指定した停止場所が過去の時点である場合、レプリケーションは即座に停止します。

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

次の例では、`channel_1` でレプリケーションを開始し、`mysql-bin-changelog.000777` バイナリログファイルの位置 `120` に達するまで変更をレプリケートします。

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

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

指定されたチャネルで RDS for MySQL DB インスタンスからレプリケーションを開始し、指定されたグローバルトランザクション識別子 (GTID) でレプリケーションを停止します。

### 構文
<a name="mysql_rds_start_replication_until_gtid_for_channel-syntax"></a>

 

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

### パラメータ
<a name="mysql_rds_start_replication_until_gtid_for_channel-parameters"></a>

 *gtid*   
その後でレプリケーションを停止する GTID。

 *channel\$1name*   
マルチソースレプリカのレプリケーションチャネルの名前。各レプリケーションチャネルは、特定のホストとポートで実行されているシングルソース RDS for MySQL DB インスタンスからバイナリログイベントを受け取ります。

### 使用に関する注意事項
<a name="mysql_rds_start_replication_until_gtid_for_channel-usage-notes"></a>

マスターユーザーが `mysql.rds_start_replication_until_gtid_for_channel` を実行する必要があります。このプロシージャは、指定されたチャネルでレプリケーションを開始し、指定された GTID 値までのすべての変更を適用します。その後、チャンネルのレプリケーションを停止します。

`gtid`パラメータで指定したトランザクションがレプリカによって既に実行されている場合、レプリケーションは即座に停止します。

この手順を実行する前に、`replica_parallel_workers` または `slave_parallel_workers` の値を `0` に設定して、マルチスレッドレプリケーションを無効にする必要があります。

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

次の例では、`channel_1` でレプリケーションを開始し、GTID `3E11FA47-71CA-11E1-9E33-C80AA9429562:23` に達するまで変更をレプリケートします。

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

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

指定されたチャネルで MySQL DB インスタンスからのレプリケーションを停止します。

### 構文
<a name="mysql_rds_stop_replication_for_channel-syntax"></a>

 

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

### パラメータ
<a name="mysql_rds_stop_replication_for_channel-parameters"></a>

 *channel\$1name*   
マルチソースレプリカのレプリケーションチャネルの名前。各レプリケーションチャネルは、特定のホストとポートで実行されているシングルソース RDS for MySQL DB インスタンスからバイナリログイベントを受け取ります。

### 使用に関する注意事項
<a name="mysql_rds_stop_replication_for_channel-usage-notes"></a>

マスターユーザーが `mysql.rds_stop_replication_for_channel` を実行する必要があります。

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

次の例では、マルチソースレプリカの `channel_1` でレプリケーションを停止します。

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

# GTID を使用したトランザクションのレプリケーション
<a name="mysql-stored-proc-gtid"></a>

以下のストアドプロシージャは、RDS for MySQL でグローバルトランザクション識別子 (GTID) を使用してトランザクションをレプリケートする方法を制御します。RDS for MySQL での GTID ベースのレプリケーションの詳細については、「[GTID ベースレプリケーションを使用する](mysql-replication-gtid.md)」を参照してください。

`caching_sha2_password` で設定されたレプリケーションユーザーによるレプリケーションを、ストアドプロシージャを使用して管理する場合は、`SOURCE_SSL=1` を指定して TLS を設定する必要があります。`caching_sha2_password` は RDS for MySQL 8.4 のデフォルトの認証プラグインです。

**Topics**
+ [

## mysql.rds\$1skip\$1transaction\$1with\$1gtid
](#mysql_rds_skip_transaction_with_gtid)
+ [

## mysql.rds\$1start\$1replication\$1until\$1gtid
](#mysql_rds_start_replication_until_gtid)

## mysql.rds\$1skip\$1transaction\$1with\$1gtid
<a name="mysql_rds_skip_transaction_with_gtid"></a>

MySQL DB インスタンスで、指定されたグローバルトランザクション識別子 (GTID) のあるトランザクションのレプリケーションをスキップします。

特定の GTID トランザクションが問題の原因となることが知られている場合、障害復旧のためにこのプロシージャを使用できます。このストアドプロシージャを使用して、問題となるトランザクションをスキップします。問題のあるトランザクションの例には、レプリケーションを無効にしたり、重要なデータを削除したり、DB インスタンスを利用不可にするトランザクションが含まれます。

### 構文
<a name="mysql_rds_skip_transaction_with_gtid-syntax"></a>

 

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

### パラメータ
<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` を実行する必要があります。

この手順はすべての RDS for MySQL 5.7 バージョン、すべての RDS for MySQL 8.0 バージョン、すべての RDS for MySQL 8.4 バージョンでサポートされています。

### 例
<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
<a name="mysql_rds_start_replication_until_gtid"></a>

RDS for MySQL DB インスタンスからのレプリケーションを開始し、指定したグローバルトランザクション識別子 (GTID) の後でレプリケーションを停止します。

### 構文
<a name="mysql_rds_start_replication_until_gtid-syntax"></a>

 

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

### パラメータ
<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` を実行する必要があります。

この手順はすべての RDS for MySQL 5.7 バージョン、すべての RDS for MySQL 8.0 バージョン、すべての RDS for MySQL 8.4 バージョンでサポートされています。

このプロシージャは、災害対策用の遅延レプリケーションで使用できます。遅延レプリケーションを設定している場合は、このプロシージャを使用して、遅延したリードレプリカへの変更を災害発生直前の時点までロールフォワードできます。このプロシージャでのレプリケーションが停止したら、「[リードレプリカをスタンドアロン DB インスタンスに昇格させる](USER_ReadRepl.Promote.md)」の手順に従ってリードレプリカを新しいプライマリ DB インスタンスに昇格させることができます。

次のストアドプロシージャを使用して遅延レプリケーションを設定できます。
+ [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-stored-proc-replicating.md#mysql_rds_set_external_master_with_delay)
+ [mysql.rds\$1set\$1external\$1source\$1with\$1delay (RDS for MySQL メジャーバージョン 8.4 以降)](mysql-stored-proc-replicating.md#mysql_rds_set_external_source_with_delay)
+ [mysql.rds\$1set\$1source\$1delay](mysql-stored-proc-replicating.md#mysql_rds_set_source_delay)

`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 ログをバックアップテーブルにローテーションします。詳細については、「[ 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);
```

### パラメータ
<a name="mysql_rds_set_configuration-parameters"></a>

 *.name*   
設定する設定パラメータの名前。

 *値*   
設定パラメータの値。

### 使用に関する注意事項
<a name="mysql_rds_set_configuration-usage-notes"></a>

`mysql.rds_set_configuration` プロシージャは、以下の設定パラメータをサポートしています。
+ [バイナリログの保持時間](#mysql_rds_set_configuration-usage-notes.binlog-retention-hours)
+ [ソース遅延](#mysql_rds_set_configuration-usage-notes.source-delay)
+ [ターゲット遅延](#mysql_rds_set_configuration-usage-notes.target-delay)

設定パラメータは永続的に保存され、DB インスタンスの再起動やフェイルオーバー後も存続します。

#### バイナリログの保持時間
<a name="mysql_rds_set_configuration-usage-notes.binlog-retention-hours"></a>

`binlog retention hours` パラメータは、バイナリログファイルを保持する時間数を指定するために使用されます。Amazon RDS では、通常、バイナリログは可能な限りすみやかに消去されますが、RDS の外部にある MySQL データベースでのレプリケーションのためにバイナリログが必要になる場合があります。

`binlog retention hours` の初期値は `NULL` です。RDS for MySQL の場合、`NULL` はバイナリログが保持されないことを意味します (0 時間)。

DB インスタンスのバイナリログを保持する時間数を指定するには、`mysql.rds_set_configuration` ストアドプロシージャを使用して、次の例のように、レプリケーションを実行するのに十分な期間を指定します。

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

**注記**  
`binlog retention hours` には、値 `0` は使用できません。

MySQL DB インスタンスの場合、`binlog retention hours` の最大値は 168 (7 日) です。

保持期間を設定したら、DB インスタンスのストレージ使用状況をモニタリングして、保持されたバイナリログに必要以上の容量が使用されないようにします。

マルチ AZ DB クラスターデプロイでは、ライター DB インスタンスからのみバイナリログ保持を設定でき、設定はすべてのリーダー DB インスタンスに非同期的に伝播されます。DB クラスターのバイナリログがローカルストレージ領域の合計の半分を超えると、Amazon RDS は自動的に古いログを EBS ボリュームに移動します。ただし、最新のログはローカルストレージに残るため、ホストの交換を必要とする障害が発生した場合、またはデータベースをスケールアップまたはスケールダウンした場合、ログは失われる可能性があります。

#### ソース遅延
<a name="mysql_rds_set_configuration-usage-notes.source-delay"></a>

リードレプリカで `source delay` パラメータを使用して、リードレプリカからソース DB インスタンスへのレプリケーションを遅延させる秒数を指定します。Amazon RDS は、通常、変更をできるだけ早くレプリケートしますが、環境によっては、レプリケーションを遅延させたい場合があります。例えば、レプリケーションを遅延させると、遅延させたリードレプリカを災害発生直前の時点までロールフォワードできます。テーブルを誤って削除した場合は、遅延レプリケーションを使用して早急に復旧できます。`target delay` のデフォルト値は `0` です (レプリケーションを遅延させません)。

このパラメータを使用すると、[mysql.rds\$1set\$1source\$1delay](mysql-stored-proc-replicating.md#mysql_rds_set_source_delay) を実行して、CHANGE primary TO MASTER\$1DELAY = 入力値が適用されます。成功すると、プロシージャは `source delay` パラメータを `mysql.rds_configuration` テーブルに保存します。

Amazon RDS でソース DB インスタンスへのレプリケーションを遅延させる秒数を指定するには、`mysql.rds_set_configuration` ストアドプロシージャを使用して、レプリケーションを遅延させる秒数を指定します。次の例では、レプリケーションは少なくとも 1 時間 (3600 秒) 遅延されます。

`call mysql.rds_set_configuration('source delay', 3600);`

その後、プロシージャは `mysql.rds_set_source_delay(3600)` を実行します。

`source delay` パラメータの上限は 1 日 (86400 秒) です。

#### ターゲット遅延
<a name="mysql_rds_set_configuration-usage-notes.target-delay"></a>

`target delay` パラメータを使用して、DB インスタンスと、このインスタンスから将来作成される RDS 管理リードレプリカとのレプリケーションを遅延させる秒数を指定します。このパラメータは、RDS で管理されていないリードレプリカでは無視されます。Amazon RDS は、通常、変更をできるだけ早くレプリケートしますが、環境によっては、レプリケーションを遅延させたい場合があります。例えば、レプリケーションを遅延させると、遅延させたリードレプリカを災害発生直前の時点までロールフォワードできます。テーブルを誤って削除した場合は、遅延レプリケーションを使用して早急に復旧できます。`target delay` のデフォルト値は `0` です (レプリケーションを遅延させません)。

障害復旧のために、この設定パラメータを [mysql.rds\$1start\$1replication\$1until](mysql-stored-proc-replicating.md#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_configuration` プロシージャを実行して、遅延させたリードレプリカへの変更を災害発生直前の時点までロールフォワードできます。`mysql.rds_start_replication_until`、または `mysql.rds_start_replication_until_gtid` プロシージャによりレプリケーションが停止したら、「[リードレプリカをスタンドアロン DB インスタンスに昇格させる](USER_ReadRepl.Promote.md)」の手順に従ってリードレプリカを新しいプライマリ DB インスタンスに昇格させることができます。

`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)」を参照してください。

Amazon RDS でリードレプリカへのレプリケーションを遅延させる秒数を指定するには、`mysql.rds_set_configuration` ストアドプロシージャを使用し、レプリケーションを遅延させる秒数を指定します。次の例では、レプリケーションを少なくとも 1 時間 (3600 秒) 遅延させることを指定します。

`call mysql.rds_set_configuration('target delay', 3600);`

`target delay` パラメータの上限は 1 日 (86400 秒) です。

## 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.
```

# InnoDB キャッシュのウォームアップ
<a name="mysql-stored-proc-warming"></a>

以下のストアドプロシージャは、RDS for MySQL DB インスタンスの InnoDB バッファープールを保存、ロード、またはロードをキャンセルします。詳細については、「[Amazon RDS の MySQL に対する InnoDB キャッシュウォーミング](MySQL.Concepts.FeatureSupport.md#MySQL.Concepts.InnoDBCacheWarming)」を参照してください。

**Topics**
+ [

## mysql.rds\$1innodb\$1buffer\$1pool\$1dump\$1now
](#mysql_rds_innodb_buffer_pool_dump_now)
+ [

## mysql.rds\$1innodb\$1buffer\$1pool\$1load\$1abort
](#mysql_rds_innodb_buffer_pool_load_abort)
+ [

## mysql.rds\$1innodb\$1buffer\$1pool\$1load\$1now
](#mysql_rds_innodb_buffer_pool_load_now)

## mysql.rds\$1innodb\$1buffer\$1pool\$1dump\$1now
<a name="mysql_rds_innodb_buffer_pool_dump_now"></a>

バッファープールの現在の状態をディスクにダンプします。

### 構文
<a name="mysql_rds_innodb_buffer_pool_dump_now-syntax"></a>

 

```
CALL mysql.rds_innodb_buffer_pool_dump_now();
```

### 使用に関する注意事項
<a name="mysql_rds_innodb_buffer_pool_dump_now-usage"></a>

マスターユーザーが `mysql.rds_innodb_buffer_pool_dump_now` を実行する必要があります。

## mysql.rds\$1innodb\$1buffer\$1pool\$1load\$1abort
<a name="mysql_rds_innodb_buffer_pool_load_abort"></a>

保存したバッファープールの状態のロードを途中でキャンセルします。

### 構文
<a name="mysql_rds_innodb_buffer_pool_load_abort-syntax"></a>

 

```
CALL mysql.rds_innodb_buffer_pool_load_abort();
```

### 使用に関する注意事項
<a name="mysql_rds_innodb_buffer_pool_load_abort-usage"></a>

マスターユーザーが `mysql.rds_innodb_buffer_pool_load_abort` を実行する必要があります。

## mysql.rds\$1innodb\$1buffer\$1pool\$1load\$1now
<a name="mysql_rds_innodb_buffer_pool_load_now"></a>

保存したバッファープールの状態をディスクからロードします。

### 構文
<a name="mysql_rds_innodb_buffer_pool_load_now-syntax"></a>

 

```
CALL mysql.rds_innodb_buffer_pool_load_now();
```

### 使用に関する注意事項
<a name="mysql_rds_innodb_buffer_pool_load_now-usage"></a>

マスターユーザーが `mysql.rds_innodb_buffer_pool_load_now` を実行する必要があります。