PolarDB for MySQL は、Alibaba Cloud によって開発されたオンラインデータベースサービスであり、安定性、信頼性、スケーラビリティに優れ、すぐに使用できる機能を提供します。詳細については、PolarDB for MySQL Enterprise Edition とは を参照してください。
PolarDB for MySQL クラスタを購入する前に、以下の点に注意してください。
OpenSearch は、PolarDB for MySQL 5.6、5.7、および 8.0 のみをサポートしています。
OpenSearch コンソールにログインするために使用する Alibaba Cloud アカウントを使用して、PolarDB for MySQL クラスタを作成する必要があります。そうでない場合、OpenSearch はこのクラスタにアクセスできません。
PolarDB for MySQL クラスタは、データソースを設定する OpenSearch アプリケーションと同じリージョンに存在する必要があります。
デフォルトでは、PolarDB for MySQL クラスタの作成後、バイナリロギング機能は無効になっています。この場合、クラスタ内のデータベースをデータソースとして追加できない可能性があります。したがって、バイナリロギング機能を有効にする必要があります。バイナリロギング機能を有効にするには、デフォルト値が OFF の loose_polar_log_bin パラメータを ON_WITH_GTID に設定し、binlog_row_image パラメータを FULL に設定します。デフォルトでは、binlog_row_image パラメータは FULL に設定されています。
PolarDB for MySQL クラスタは、クローンインスタンスをサポートしています。
PolarDB for MySQL クラスタは、読み取り/書き込み分割をサポートしています。
サポートされている機能
指定されたデータベースまたはテーブル内のすべてのデータを、手動でプルするか、指定された時刻に自動的にプルできます。
1 つ以上のデータソースから複数のテーブルの行をマージできます。行をマージするには、ソーステーブルが同じスキーマを使用し、データソースのデータ処理プラグインの構成が同じであることを確認してください。さらに、主キー値を重複させることはできません。主キー値が重複するデータは上書きされる可能性があります。この機能は、以下のシナリオで使用できます。
データソースの複数のソーステーブルからアプリケーションのテーブルにデータが同期されます。
アプリケーションのテーブルに複数のデータソースが設定されています。各データソースの 1 つ以上のソーステーブルからテーブルにデータが同期されます。
プラグインを使用して、ソースフィールドの値を変換できます。
フィルタ条件を指定して、フルデータまたは増分データをフィルタリングできます。
アスタリスク (
*
) を使用して、名前のプレフィックスが同じテーブルを照合できます。
制限事項
PolarDB for MySQL クラスタでは、binlog_row_image パラメータを FULL に設定する必要があります。バイナリロギング機能を有効にするには、デフォルト値が OFF の loose_polar_log_bin パラメータを ON_WITH_GTID に設定し、binlog_row_image パラメータを FULL に設定します。デフォルトでは、binlog_row_image パラメータは FULL に設定されています。
PolarDB for MySQL 5.6、5.7、および 8.0 のみがサポートされています。
OpenSearch コンソールにログインするために使用する Alibaba Cloud アカウントを使用して、PolarDB for MySQL クラスタを作成する必要があります。
PolarDB for MySQL クラスタは、データソースを設定する OpenSearch アプリケーションと同じリージョンに存在する必要があります。
標準アプリケーション用に PolarDB for MySQL データソースを設定した後、OpenSearch SDK を使用したり、API 操作を呼び出してアプリケーションに増分データをプッシュしたりすることはできません。
標準アプリケーション用に PolarDB for MySQL データソースを設定する場合、データソースのデータをフィルタリングするためにフィルタ条件を指定することはできません。
REPLACE INTO ステートメントはサポートされていません。
TRUNCATE または DROP ステートメントを使用してデータを削除することはできません。データを削除するには、DELETE ステートメントを使用します。
PolarDB for MySQL データソースへのアクセスに使用するパスワードにパーセント記号 (
%
) を含めることはできません。含めると、再インデックス作成に失敗します。スキーマが異なるソーステーブルのフィールド値を連結することはできません。
loose_max_statement_time パラメータと connect_timeout パラメータの両方を 0 に設定することをお勧めします。再インデックス作成またはオフライン変更が実行され、すべてのデータが同期された後、ビジネス要件に基づいて値を変更できます。
使用上の注意
ApsaraDB RDS for MySQL または PolarDB データソースが PolarDB-X インスタンスに接続されている場合、データソースを設定するときに、PolarDB-X インスタンスで実際に使用されているデータベースシャードの名前を指定する必要があります。データベースシャーディング後、PolarDB-X インスタンス上のデータベースには、1 つのシャドウデータベースと 8 つのデータベースシャードがあります。データはデータベースシャードにランダムに書き込まれます。
PolarDB for MySQL クラスタの内部エンドポイントとパブリックエンドポイントを切り替えることができます。OpenSearch が PolarDB for MySQL クラスタのデータにアクセスする場合、トラフィック料金は発生しません。
OpenSearch では、プライマリデータベースからのみすべてのデータをプルできます。オフピーク時にすべてのデータをインポートし、インデックスを再構築することをお勧めします。
PolarDB for MySQL クラスタのソーステーブルに DATETIME または TIMESTAMP 形式のフィールドが含まれている場合、これらのフィールドの値はミリ秒数に変換されます。アプリケーションの宛先フィールドのタイプを TIMESTAMP に設定する必要があります。
すべてのデータが同期されると、フィルタ条件を満たさないドキュメントは除外されます。特定のドキュメントの主キー値がアプリケーションの宛先テーブルの主キー値と同じ場合、これらのドキュメントも除外されます。
データソースで 15 日以上増分データが生成されない場合、データ同期が失敗する可能性があります。この場合、手動でオフライン変更を実行できます。詳細については、オフライン変更を実行する を参照してください。
PolarDB for MySQL で SSL 暗号化が有効になっている場合、SSL 証明書が有効であることを確認してください。SSL 証明書の有効期限が切れていると、接続エラーが発生する可能性があります。SSL 証明書の有効期間を適宜更新する必要があります。
OpenSearch を使用して PolarDB for MySQL クラスタからデータを同期する場合、OpenSearch が存在するリージョンのサーバーの IP アドレスと CIDR ブロックを PolarDB for MySQL クラスタの IP アドレスホワイトリストに追加する必要があります。次の表に、さまざまなリージョンの IP アドレスホワイトリストを示します。
リージョン
IP アドレス
中国 (杭州)
100.104.190.128/26,100.104.241.128/26
中国 (北京)
100.104.16.192/26,100.104.179.0/26
中国 (上海)
100.104.37.0/26,100.104.46.0/26
中国 (深圳)
100.104.87.192/26,1100.104.132.192/26
中国 (青島)
100.104.240.128/26,1100.104.111.128/26
中国 (張家口)
100.104.155.192/26,100.104.238.64/26
ドイツ (フランクフルト)
100.104.127.0/26,100.104.35.192/26
米国 (シリコンバレー) および米国 (バージニア)
100.104.193.128/26,100.104.119.128/26
シンガポール
100.104.58.192/26,100.104.74.192/26
アカウント認証
PolarDB for MySQL クラスタに接続するには、クラスタにアクセスするために必要な権限を取得する必要があります。初めて特定のアカウントとパスワードを入力してデータソースに接続する場合は、注意してください。
アカウントに、Data Transmission Service (DTS) のソースデータベース内のすべてのテーブルを照会する権限があることを確認してください。さらに、SHOW CREATE TABLE
*. *
ステートメントを予期どおりに実行できることを確認してください。アカウントに権限がない場合、リアルタイム同期が失敗する可能性があります。アカウントと権限は、必要がない限り変更しないでください。アカウントを変更すると、リアルタイム同期が失敗する可能性があります。さらに、アカウントに変更が加えられた場合、新しいバージョンのアプリケーションを作成できない可能性があります。アカウントとパスワードが変更された場合は、既存のデータソースを削除し、宛先データベースを新しいデータソースとして追加する必要があります。
トラブルシューティング
PolarDB for MySQL データソースが設定された後、再インデックス作成が中断される場合があります。この場合、ソーステーブルが存在するデータベースにテストテーブルを作成します。次に、テストテーブルに 1 ~ 2 件のデータエントリを書き込むか、1 分ごとに 1 ~ 2 件のデータエントリを更新します。これにより、データの再インデックス作成時に連続バイナリログが生成されます。
PolarDB for MySQL データベースソースが設定されている高度なアプリケーションの支払いが滞納している場合、滞納料金を支払った後に手動で再インデックス作成をトリガーできます。
PolarDB for MySQL クラスタへのアクセスに使用するパスワードにパーセント記号 (
%
) を含めることはできません。含めると、再インデックス作成に失敗し、「エスケープ (%) パターンに不正な 16 進文字が含まれています」というエラーメッセージが表示されます。アプリケーションのテーブルの主キー値は一意である必要があります。同じテーブルスキーマを持つ複数のテーブルからデータが同期される場合、主キー値が重複する可能性があります。この場合、データが上書きされる可能性があります。この問題を防ぐには、StringCatenateExtractor プラグインを使用して複数のフィールドの値を連結します。ソースフィールドは
pk と $table
です。pk を PolarDB for MySQL クラスタのテーブルの主キーフィールドに置き換えます。$table はデフォルトのシステム変数で、テーブル名を示します。ハイフン (-
) またはカスタム文字を使用してソースフィールドを接続します。
たとえば、PolarDB for MySQL クラスタのテーブルの名前が my_table_0
で、主キー値が 123456
であるとします。この場合、連結後に取得される新しい主キー値は 123456-my_table_0
です。
ソーステーブルの DATE または DATETIME タイプのフィールドはフィルタリングされます。たとえば、データベーステーブルのソースフィールドの名前が createtime の場合、データソースのデータをフィルタリングするためにフィルタ条件で指定される時間形式は
createtime>'2018-03-01 00:00:00'
である必要があります。フィールドの値がcreatetime>'2018-3-1 00:00:00'
形式の場合、エラーが報告されます。
PolarDB for MySQL データソースを設定する
新しいアプリケーションを設定する ときに、PolarDB for MySQL データソースを設定できます。
既存のアプリケーション用に PolarDB for MySQL データソースを設定する場合は、アプリケーションの詳細ページに移動し、オフライン変更を実行する ことができます。
手順と使用上の注意
1. [データソースの選択] パネルで、[PolarDB] を選択し、[データベースに接続] をクリックします。
2. PolarDB for MySQL データソースのパラメータを設定し、[接続] をクリックします。
パラメータ | 説明 |
クラスタ ID | PolarDB for MySQL クラスタの ID。ID は PolarDB コンソールで取得できます。ID では大文字と小文字が区別されます。例: pc-uf6c056ny9tiaj1l7。 |
データベース名 | PolarDB for MySQL クラスタで接続するデータベースの名前。名前では大文字と小文字は区別されません。 |
ユーザー名 | データベースのテーブルスキーマとすべてのデータを取得するために使用するデータベースアカウント。ユーザー名では大文字と小文字が区別されます。 |
パスワード | データベースアカウントのパスワード。 |
次に、OpenSearch はデータソースへの接続を試み、接続に失敗した場合にエラーメッセージを返します。
エラーメッセージ | 解決策 |
PolarDB for MySQL クラスタが OpenSearch アプリケーションと同じリージョンに存在しません。 | クラスタ ID が正しいかどうかを確認し、PolarDB for MySQL クラスタが OpenSearch アプリケーションと同じリージョンに存在することを確認してください。PolarDB for MySQL クラスタと OpenSearch アプリケーションが同じリージョンに存在するにもかかわらずエラーメッセージが返される場合は、チケットを送信してください。 |
PolarDB for MySQL データソースへの接続に失敗しました。 | データソースへの接続に使用する接続文字列のクラスタ ID、データベース名、ユーザー名、およびパスワードが有効かどうかを確認してください。 |
現在の PolarDB for MySQL クラスタにテーブルが存在しません。 | テーブル名が有効かどうか、および PolarDB for MySQL クラスタにテーブルが含まれているかどうかを確認してください。 |
PolarDB for MySQL クラスタの構成が無効です。 | PolarDB コンソールのこのクラスタのパラメータ設定ページに移動して、構成を変更します。その後、もう一度お試しください。 |
3. データソースが接続されたら、テーブルを選択します。次の図は、接続が確立された後に表示されるページを示しています。テーブルを選択したら、[OK] をクリックします。
アクセスするテーブルの名前を選択または入力します。名前では大文字と小文字が区別されます。
アスタリスク (*) を使用して、データベース内の同じテーブルスキーマを持つ複数のテーブルを照合できます。これらのテーブルの名前には同じプレフィックスが付いています。たとえば、table_* と入力すると、table_a や table_b などのテーブルが照合されます。
4. 接続が成功したら、フィールドマッピングを設定します。OpenSearch は、テーブルからソースフィールドを自動的に同期します。データ処理プラグインの詳細については、データ処理プラグイン を参照してください。
5. ソースデータをフィルタリングするためのフィルタ条件を指定します。標準アプリケーションのフィルタ条件は指定できません。[データソース] ステップの設定が完了したら、[送信] をクリックします。アプリケーションスキーマが設定されます。
ソーステーブルのスキーマと構成が同じであれば、OpenSearch のテーブルに複数のデータソースを設定できます。
フィルタ条件を満たすデータエントリのみを PolarDB for MySQL データソースからプルできます。詳細については、ApsaraDB RDS および PolarDB データソースのフィールドをフィルタリングするための条件を設定する を参照してください。