Aurora MySQL でのレプリケーションフィルターの設定
レプリケーションフィルターを使用して、リードレプリカでレプリケートするデータベースとテーブルを指定できます。レプリケーションフィルターは、データベースとテーブルをレプリケーションに含めることも、レプリケーションから除外することもできます。
レプリケーションフィルターの使用例は以下のとおりです。
- 
               
リードレプリカのサイズを縮小します。レプリケーションフィルタリングを使用すると、リードレプリカで必要のないデータベースとテーブルを除外できます。
 - 
               
セキュリティ上の理由から、データベースとテーブルをリードレプリカから除外するため。
 - 
               
異なるリードレプリカで、特定のユースケースごとにさまざまなデータベースとテーブルを複製するため。例えば、分析やシャーディングに特定のリードレプリカを使用できます。
 - 
               
異なる AWS リージョン にリードレプリカがある DB クラスターで、異なる AWS リージョン に異なるデータベースまたはテーブルを複製するには。
 - 
                
インバウンドレプリケーショントポロジでレプリカとして設定されている Aurora MySQL DB クラスターでレプリケートするデータベースとテーブルを指定するには。この設定の詳細については、「Aurora と MySQL との間、または Aurora と別の Aurora DB クラスターとの間のレプリケーション (バイナリログレプリケーション)」を参照してください。
 
トピック
Aurora MySQL のレプリケーションフィルターパラメータの設定
レプリケーションフィルターを設定するには、次のパラメータを設定します。
- 
                    
binlog-do-db- 指定されたバイナリログテーブルに変更を複製します。バイナリログソースクラスターに対してこのパラメータを設定すると、パラメータで指定されたバイナリログのみが複製されます。 - 
                    
binlog-ignore-db- 指定されたバイナリログテーブルに変更を複製しません。バイナリログソースクラスターに対してbinlog-do-dbパラメータが設定されている場合、このパラメータは評価されません。 - 
                   
replicate-do-db- 指定したデータベースに変更を複製します。バイナリログソースクラスターに対してこのパラメータを設定すると、パラメータで指定されたデータベースのみが複製されます。 - 
                   
replicate-ignore-db- 指定したデータベースに変更を複製しないでください。バイナリログレプリカスクラスターに対してreplicate-do-dbパラメータが設定されている場合、このパラメータは評価されません。 - 
                   
replicate-do-table-指定されたテーブルに変更を複製します。このパラメータをリードレプリカに設定した場合、パラメータで指定したテーブルのみが複製されます。また、replicate-do-dbまたはreplicate-ignore-dbパラメータが設定されている場合は、指定されたテーブルを含むデータベースを、必ずバイナリログレプリカクラスターのレプリケーションに含めます。 - 
                   
replicate-ignore-table- 指定したテーブルに変更を複製しないでください。バイナリログレプリカスクラスターに対してreplicate-do-tableパラメータが設定されている場合、このパラメータは評価されません。 - 
                   
replicate-wild-do-table- 指定したデータベースおよびテーブル名のパターンに基づいてテーブルを複製します。%および_ワイルドカードの文字がサポート対象となります。replicate-do-dbまたはreplicate-ignore-dbパラメータが設定されている場合は、指定されたテーブルを含むデータベースを、必ずバイナリログレプリカクラスターのレプリケーションに含めます。 - 
                   
replicate-wild-ignore-table- 指定したデータベースおよびテーブル名のパターンに基づいてテーブルを複製しないでください。%および_ワイルドカードの文字がサポート対象となります。バイナリログレプリカスクラスターに対してreplicate-do-tableまたはreplicate-wild-do-tableパラメータが設定されている場合、このパラメータは評価されません。 
パラメータは、記載されている順序に沿って評価されます。これらのパラメータの詳細な仕組みについては、MySQL のドキュメントを参照してください。
- 
                   
一般的な情報については、 Replica Server Options and Variables
を参照してください。  - 
                   
データベースレプリケーションのフィルターパラメータを評価する方法については、 Evaluation of Database-Level Replication and Binary Logging Options
を参照してください。  - 
                   
テーブルレプリケーションのフィルターパラメータを評価する方法については、Evaluation of Table-Level Replication Options
を参照してください。  
デフォルトでは、これらの各パラメータの値は空です。各バイナリログクラスターで、これらのパラメータを使用してレプリケーションフィルターを設定、変更、削除することができます。これらのパラメータの 1 つを設定する場合は、各フィルターを他のフィルターとコンマで区切ります。
% および _ パラメータで replicate-wild-do-table および replicate-wild-ignore-table ワイルドカードの文字を使用できます。% ワイルドカードは任意の文字数と一致し、_ ワイルドカードは 1 文字のみと一致します。
ソース DB インスタンスのバイナリログ形式は、データ変更のレコードを決定するため、レプリケーションでは重要です。binlog_format パラメータの設定により、レプリケーションが行ベースかステートメントベースかが決まります。詳細については、「Single-AZ データベースの Aurora MySQL バイナリログの設定」を参照してください。
注記
ソース DB インスタンスの binlog_format 設定に関係なく、すべてのデータ定義言語 (DDL) ステートメントはステートメントとして複製されます。
Aurora MySQL のレプリケーションフィルターの制限
Aurora MySQL のレプリケーションフィルターには、次の制限が適用されます。
- 
                    
レプリケーションフィルターは、Aurora MySQL バージョン 3 でのみサポートされます。
 - 
                   
各レプリケーションフィルターのパラメータには、2,000 文字といった制限があります。
 - 
                   
レプリケーションフィルターでは、カンマはサポートされていません。
 - 
                   
レプリケーションフィルタリングは、XA トランザクションをサポートしていません。
詳細については、MySQL ドキュメントの「Restrictions on XA Transactions
」を参照してください。  
Aurora MySQL のレプリケーションフィルターの例
リードレプリカのレプリケーションフィルタリングを設定するには、リードレプリカに関連付けられている DB クラスターパラメータグループのレプリケーションフィルタリングパラメータを変更します。
注記
デフォルトの DB クラスターパラメータグループを変更することはできません。リードレプリカがデフォルトのパラメータグループを使用している場合は、新しいパラメータグループを作成してリードレプリカに関連付けます。DB クラスターパラメータグループの詳細については、「Amazon Aurora のパラメータグループ」を参照してください。
AWS Management Console、AWS CLI、または RDS API を使用して、DB クラスターパラメータグループのパラメータを設定できます。パラメータの設定の詳細については、「Amazon Aurora の DB パラメータグループのパラメータの変更」を参照してください。DB クラスターパラメータグループのパラメータを設定すると、そのパラメータグループに関連付けられているすべての DB クラスターがパラメータ設定を使用します。DB クラスターパラメータグループでレプリケーションフィルタリングパラメータを設定する場合は、パラメータグループがリードレプリカクラスターにのみ関連付けられていることを確認してください。ソース DB インスタンスのレプリケーションフィルターのパラメータは空のままにします。
次の例では、AWS CLI を使用してパラメータを設定します。これらの例では、CLI コマンドが完了した直後にパラメータの変更が行われるように ApplyMethod を immediate に設定しています。リードレプリカの再起動後に保留中の変更を適用する場合は、ApplyMethod を pending-reboot に設定します。
以下の例では、レプリケーションフィルターを設定します。
例 レプリケーションにデータベースを含める
次の例では、レプリケーションに mydb1 データベースと mydb2 データベースを含めています。
Linux、macOS、Unix の場合:
aws rds modify-db-cluster-parameter-group \ --db-cluster-parameter-group-name myparametergroup \ --parameters "ParameterName=replicate-do-db,ParameterValue='mydb1,mydb2',ApplyMethod=immediate"
Windows の場合:
aws rds modify-db-cluster-parameter-group ^ --db-cluster-parameter-group-name myparametergroup ^ --parameters "ParameterName=replicate-do-db,ParameterValue='mydb1,mydb2',ApplyMethod=immediate"
例 レプリケーションにテーブルを含める
次の例では、データベース mydb1 の table1 テーブルと table2 テーブルをレプリケーションに含めています。
Linux、macOS、Unix の場合:
aws rds modify-db-cluster-parameter-group \ --db-cluster-parameter-group-name myparametergroup \ --parameters "ParameterName=replicate-do-table,ParameterValue='mydb1.table1,mydb1.table2',ApplyMethod=immediate"
Windows の場合:
aws rds modify-db-cluster-parameter-group ^ --db-cluster-parameter-group-name myparametergroup ^ --parameters "ParameterName=replicate-do-table,ParameterValue='mydb1.table1,mydb1.table2',ApplyMethod=immediate"
例 ワイルドカードの文字を使用してレプリケーションにテーブルを含める
次の例では、データベース mydb の order および return で始まる名前のテーブルをレプリケーションに含めています。
Linux、macOS、Unix の場合:
aws rds modify-db-cluster-parameter-group \ --db-cluster-parameter-group-name myparametergroup \ --parameters "ParameterName=replicate-wild-do-table,ParameterValue='mydb.order%,mydb.return%',ApplyMethod=immediate"
Windows の場合:
aws rds modify-db-cluster-parameter-group ^ --db-cluster-parameter-group-name myparametergroup ^ --parameters "ParameterName=replicate-wild-do-table,ParameterValue='mydb.order%,mydb.return%',ApplyMethod=immediate"
例 レプリケーションからデータベースを除外する
次の例では、mydb5 データベースと mydb6 データベースをレプリケーションから除外しています。
Linux、macOS、Unix の場合:
aws rds modify-db-cluster-parameter-group \ --db-cluster-parameter-group-name myparametergroup \ --parameters "ParameterName=replicate-ignore-db,ParameterValue='mydb5,mydb6',ApplyMethod=immediate"
Windows の場合:
aws rds modify-db-cluster-parameter-group ^ --db-cluster-parameter-group-name myparametergroup ^ --parameters "ParameterName=replicate-ignore-db,ParameterValue='mydb5,mydb6,ApplyMethod=immediate"
例 レプリケーションからテーブルを除外する
次の例では、データベース mydb5 のテーブル table1 とデータベース mydb6 の table2  をレプリケーションから除外しています。
Linux、macOS、Unix の場合:
aws rds modify-db-cluster-parameter-group \ --db-cluster-parameter-group-name myparametergroup \ --parameters "ParameterName=replicate-ignore-table,ParameterValue='mydb5.table1,mydb6.table2',ApplyMethod=immediate"
Windows の場合:
aws rds modify-db-cluster-parameter-group ^ --db-cluster-parameter-group-name myparametergroup ^ --parameters "ParameterName=replicate-ignore-table,ParameterValue='mydb5.table1,mydb6.table2',ApplyMethod=immediate"
例 ワイルドカードの文字を使用したレプリケーションからテーブルを除外する
次の例では、データベース mydb7 の order および return で始まる名前のテーブルをレプリケーションから除外しています。
Linux、macOS、Unix の場合:
aws rds modify-db-cluster-parameter-group \ --db-cluster-parameter-group-name myparametergroup \ --parameters "ParameterName=replicate-wild-ignore-table,ParameterValue='mydb7.order%,mydb7.return%',ApplyMethod=immediate"
Windows の場合:
aws rds modify-db-cluster-parameter-group ^ --db-cluster-parameter-group-name myparametergroup ^ --parameters "ParameterName=replicate-wild-ignore-table,ParameterValue='mydb7.order%,mydb7.return%',ApplyMethod=immediate"
リードレプリカのレプリケーションフィルターを表示する
リードレプリカのレプリケーションフィルターは、次の方法で表示できます。
- 
                   
リードレプリカに関連付けられているパラメータグループのレプリケーションフィルタリングパラメータの設定を確認してください。
手順については、「Amazon Aurora のDB パラメータグループのパラメータ値の表示」を参照してください。
 - 
                   
MySQL クライアントで、リードレプリカに接続し、
SHOW REPLICA STATUSステートメントを実行します。出力の次のフィールドには、リードレプリカのレプリケーションフィルターが表示されます。
- 
                            
Binlog_Do_DB - 
                            
Binlog_Ignore_DB - 
                           
Replicate_Do_DB - 
                           
Replicate_Ignore_DB - 
                           
Replicate_Do_Table - 
                           
Replicate_Ignore_Table - 
                           
Replicate_Wild_Do_Table - 
                           
Replicate_Wild_Ignore_Table 
これらのフィールドの詳細については、MySQL のドキュメントの Checking Replication Status
を参照してください。  -