

# バイナリログレプリケーションの設定、開始、停止
<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)」を参照してください。