Aurora MySQL での並列クエリ DB クラスターの作成 - Amazon Aurora

Aurora MySQL での並列クエリ DB クラスターの作成

パラレルクエリを使用した Aurora MySQL クラスターの作成や、そのクラスターへの新しいインスタンスの追加、あるいは他の管理操作の実行には、他の Aurora MySQL クラスターと同様な、AWS Management Console や AWS CLI のテクニックを使用します。パラレルクエリを処理するための新しいクラスターを作成できます。また、パラレルクエリを使用する DB クラスターは、MySQL と互換性がある Aurora DB クラスターのスナップショットから復元することによって作成することもできます。新しい Aurora MySQL クラスターを作成するプロセスに詳しくない場合は、「Amazon Aurora DB クラスターの作成」の背景情報と前提条件を参照してください。

Aurora MySQL のエンジンのバージョンを選択する場合は、利用可能な最新のバージョンを選択することをお勧めします。現在、Aurora MySQL バージョン 2.09 以降はパラレルクエリをサポートしています。Aurora MySQL 2.09 以上を使用している場合、パラレルクエリの有効と無効を切り替えたり、既存のクラスターでパラレルクエリを使用したりできるため、柔軟性が増します。

新しいクラスターを作成する場合でも、スナップショットから復元する場合でも、同じテクニックを使用して、他の Aurora MySQL クラスターで行う新しい DB インスタンスを追加できます。

Amazon RDS コンソールまたは AWS CLI を使用して、並列クエリクラスターを作成できます。

コンソールを使用したパラレルクエリクラスターの作成

次のように、コンソールで新しいパラレルクエリクラスターを作成できます。

AWS Management Console コンソールでパラレルクエリクラスターを作成するには
  1. 「AWS Management Console」一般的な Amazon Aurora DB クラスターの作成 の手順に従います。

  2. [Select engine (エンジンの選択)] 画面で、Aurora MySQL を選択します。

    [エンジンバージョン] で、Aurora MySQL 2.09 以降を選択します。これらのバージョンでは、パラレルクエリの使用に関する制限が最も少なくなります。また、これらのバージョンは、いつでもパラレルクエリを有効または無効にできる最も高い柔軟性を備えています。

    クラスターで Aurora MySQL の最新のバージョンを使用するのが現実的でない場合は、[Show versions that support the parallel query feature (パラレルクエリ機能がサポートされているバージョンを表示)] をオンにします。これにより、[Version (バージョン)] メニューがフィルタリングされ、パラレルクエリと互換性がある特定の Aurora MySQL のバージョンのみが表示されます。

  3. [追加設定] で、[DB クラスターパラメータグループ] のために作成したパラメータグループを選択します。Aurora MySQL 2.09 以上では、このようなカスタムパラメータグループを使用する必要があります。DB クラスターパラメータグループで、パラメータ設定の aurora_parallel_query=ONaurora_disable_hash_join=OFF を指定します。これにより、クラスターでパラレルクエリが有効になり、パラレルクエリと組み合わせて使用するハッシュ結合の最適化が有効になります。

新しいクラスターがパラレルクエリを使用できることを確認するには
  1. 上記の方法を使用してクラスターを作成します。

  2. (Aurora MySQL バージョン 2 または 3 の場合) aurora_parallel_query の設定が true であることを確認します。

    mysql> select @@aurora_parallel_query; +-------------------------+ | @@aurora_parallel_query | +-------------------------+ | 1 | +-------------------------+
  3. (Aurora MySQL バージョン 2 の場合) aurora_disable_hash_join 設定が false になっていることを確認します。

    mysql> select @@aurora_disable_hash_join; +----------------------------+ | @@aurora_disable_hash_join | +----------------------------+ | 0 | +----------------------------+
  4. いくつかの大きなテーブルとデータ集約型のクエリについて、クエリの計画を確認して、一部のクエリでパラレルクエリの最適化を使用していることを確認します。これを行うには、「Aurora MySQL の並列クエリを使用しているステートメントの確認」の手順に従います。

CLI を使用したパラレルクエリクラスターの作成

次のように、CLI で新しいパラレルクエリクラスターを作成できます。

AWS CLI コンソールでパラレルクエリクラスターを作成するには
  1. (オプション) パラレルクエリを使用するクラスターと互換性のある Aurora MySQL のバージョンを確認します。これを行うには、describe-db-engine-versions コマンドを使用して、SupportsParallelQuery フィールドの値を確認します。例については、「パラレルクエリと Aurora MySQL のバージョンの互換性の確認」を参照してください。

  2. (オプション) aurora_parallel_query=ON 設定と aurora_disable_hash_join=OFF 設定を使用して、カスタム DB クラスターパラメータグループを作成します。以下のようなコマンドを使用します。

    aws rds create-db-cluster-parameter-group --db-parameter-group-family aurora-mysql5.7 --db-cluster-parameter-group-name pq-enabled-57-compatible aws rds modify-db-cluster-parameter-group --db-cluster-parameter-group-name pq-enabled-57-compatible \ --parameters ParameterName=aurora_parallel_query,ParameterValue=ON,ApplyMethod=pending-reboot aws rds modify-db-cluster-parameter-group --db-cluster-parameter-group-name pq-enabled-57-compatible \ --parameters ParameterName=aurora_disable_hash_join,ParameterValue=OFF,ApplyMethod=pending-reboot

    このステップを行う場合は、後続の --db-cluster-parameter-group-name my_cluster_parameter_group ステートメントで create-db-cluster オプションを指定します。パラメータグループの名前は、使用するものに置き換えてください。このステップを省略する場合は、「Aurora MySQL での並列クエリのオン/オフの切り替え」の説明に従って、後でパラメータグループを作成してクラスターに関連付けます。

  3. 「AWS CLI」一般的な Amazon Aurora DB クラスターの作成 の手順に従います。

  4. 以下のオプションのセットを指定します。

    • --engine オプションでは、aurora-mysql を使用します。これらの値は、MySQL 5.7 または 8.0 と互換性があるパラレルクエリクラスターを生成します。

    • --db-cluster-parameter-group-name オプションには、作成してパラメータの値に aurora_parallel_query=ON を指定した DB クラスターパラメータグループの名前を指定します。このオプションを省略すると、デフォルトのパラメータグループを使用してクラスターを作成してから、後でこのようなカスタムパラメータグループを使用するように変更できます。

    • --engine-version オプションには、パラレルクエリと互換性がある Aurora MySQL のバージョンを使用します。必要に応じて、「Aurora MySQL での並列クエリの最適化」の手順に従ってバージョンの一覧を取得します。少なくとも、バージョン 2.09.0 を使用します。これらのバージョンでは、パラレルクエリが大幅に強化されています。

      次のサンプルはその方法を示しています。$CLUSTER_ID などの環境可変は、それぞれ使用する値に置き換えてください。この例では、--manage-master-user-password オプションも指定して、マスターユーザーパスワードを生成し、Secrets Manager で管理します。詳細については、「Amazon Aurora および AWS Secrets Manager によるパスワード管理」を参照してください。または、--master-password オプションを使用して、自分でパスワードを指定して管理することもできます。

      aws rds create-db-cluster --db-cluster-identifier $CLUSTER_ID \ --engine aurora-mysql --engine-version 5.7.mysql_aurora.2.11.1 \ --master-username $MASTER_USER_ID --manage-master-user-password \ --db-cluster-parameter-group-name $CUSTOM_CLUSTER_PARAM_GROUP aws rds create-db-instance --db-instance-identifier ${INSTANCE_ID}-1 \ --engine same_value_as_in_create_cluster_command \ --db-cluster-identifier $CLUSTER_ID --db-instance-class $INSTANCE_CLASS
  5. 作成または復元したクラスターにパラレルクエリ機能が使用可能であることを確認します。

    aurora_parallel_query 設定が存在することを確認します。この設定の値が 1 の場合は、パラレルクエリを使用する準備ができています。この設定の値が 0 の場合は、パラレルクエリを使用するために 1 に設定します。どちらの場合も、クラスターでパラレルクエリを実行できます。

    mysql> select @@aurora_parallel_query; +------------------------+ | @@aurora_parallel_query| +------------------------+ | 1 | +------------------------+
AWS CLI を使用してスナップショットをパラレルクエリクラスターに復元するには。
  1. パラレルクエリを使用するクラスターと互換性のある Aurora MySQL のバージョンを確認します。これを行うには、describe-db-engine-versions コマンドを使用して、SupportsParallelQuery フィールドの値を確認します。例については、「パラレルクエリと Aurora MySQL のバージョンの互換性の確認」を参照してください。復元したクラスターで使用するバージョンを決定します。MySQL 5.7 互換クラスターの場合、Aurora MySQL 2.09.0 を選択します。

  2. Aurora MySQL 互換クラスターのスナップショットの位置を特定します。

  3. 「AWS CLI」一般的な DB クラスターのスナップショットからの復元 の手順に従います。

    aws rds restore-db-cluster-from-snapshot \ --db-cluster-identifier mynewdbcluster \ --snapshot-identifier mydbclustersnapshot \ --engine aurora-mysql
  4. 作成または復元したクラスターにパラレルクエリ機能が使用可能であることを確認します。CLI を使用したパラレルクエリクラスターの作成 と同じ確認手順を使用してください。