PolarDB for MySQL は、Alibaba Cloud によって開発されたオンラインデータベースサービスです。PolarDB for MySQL は安定性、信頼性、スケーラビリティに優れており、すぐに使える機能を提供します。詳細については、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 クラスタの作成後、バイナリロギング機能は無効になっています。この場合、クラスタ内のデータベースをデータソースとして追加できない可能性があります。したがって、バイナリロギング機能を有効にする必要があります。バイナリロギング機能を有効にするには、loose_polar_log_bin パラメータを ON_WITH_GTID に設定し、binlog_row_image パラメータのデフォルト値 FULL を保持します。デフォルトでは、binlog_row_image パラメータは FULL に設定されています。 loose_polar_log_bin パラメータのデフォルト値は OFF です。
PolarDB for MySQL クラスタは、クローンインスタンスをサポートしています。
PolarDB for MySQL クラスタは、読み取り/書き込み分割をサポートしています。
サポートされている機能
指定されたデータベースまたはテーブル内のすべてのデータを、手動でプルするか、指定された時間に自動的にプルできます。
1 つ以上のデータソースから複数のテーブルの行をマージできます。行をマージするには、ソーステーブルが同じスキーマを使用し、データ処理プラグインの構成がデータソースで同じであることを確認してください。さらに、主キー値を重複させることはできません。主キー値が重複するデータは上書きされる可能性があります。この機能は、以下のシナリオで使用できます。
データソース内の複数のソーステーブルからアプリケーション内のテーブルにデータが同期されます。
アプリケーション内のテーブルに複数のデータソースが設定されています。各データソースの 1 つ以上のソーステーブルからアプリケーション内のテーブルにデータが同期されます。
プラグインを使用して、データソースフィールドの値を変換できます。
フィルター条件を指定して、すべてのデータをフィルターできます。
アスタリスク(
*
)を使用して、名前のプレフィックスが同じテーブルを照合できます。
制限事項
PolarDB for MySQL クラスタでは、binlog_row_image パラメータを FULL に設定する必要があります。バイナリロギング機能を有効にするには、loose_polar_log_bin パラメータを ON_WITH_GTID に設定し、binlog_row_image パラメータのデフォルト値 FULL を保持します。loose_polar_log_bin パラメータのデフォルト値は OFF です。
PolarDB for MySQL 5.6、5.7、および 8.0 のみがサポートされています。
OpenSearch コンソールにログインするために使用する Alibaba Cloud アカウントを使用して、PolarDB for MySQL クラスタを作成する必要があります。
PolarDB for MySQL クラスタは、データソースを設定する OpenSearch アプリケーションと同じリージョンに存在する必要があります。
標準アプリケーション用に PolarDB for MySQL データソースを設定した後、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 アドレスホワイトリストに追加する必要があります。次の表に、OpenSearch が存在するさまざまなリージョンのサーバーの 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 クラスタに接続するには、クラスタにアクセスするために必要な権限を取得し、アカウントとパスワードを入力する必要があります。初めて特定のアカウントとパスワードを入力してデータソースに接続する場合は、注意してください。
アカウントに、データ伝送サービス (DTS) のソースデータベース内のすべてのテーブルを照会する権限があることを確認してください。さらに、SHOW CREATE TABLE
*. *
ステートメントが想定どおりに実行できることを確認してください。アカウントに権限がない場合、リアルタイム同期が失敗する可能性があります。アカウントと権限は、必要がない限り変更しないでください。アカウントの変更は、リアルタイム同期の失敗につながる可能性があります。さらに、アカウントに変更が加えられた場合、新しいバージョンのアプリケーションが作成に失敗する可能性があります。アカウントとパスワードが変更された場合は、既存のデータソースを削除し、PolarDB for MySQL クラスタを新しいデータソースとして再度追加する必要があります。
トラブルシューティング
PolarDB for MySQL データソースが設定された後、再インデックス作成が中断される場合があります。この場合、ソーステーブルが存在するデータベースにテストテーブルを作成します。次に、テストテーブルに 1 ~ 2 個のデータエントリを書き込むか、1 分ごとに 1 ~ 2 個のデータエントリを更新します。これにより、データの再インデックス作成時に連続バイナリログが生成されます。
PolarDB for MySQL データベースソースが設定されている高度なアプリケーションの支払いが延滞している場合、延滞料金を支払った後に手動で再インデックス作成をトリガーできます。
PolarDB for MySQL クラスタへのアクセスに使用するパスワードにパーセント記号(
%
)を含めることはできません。そうしないと、再インデックス作成に失敗し、「エスケープ (%) パターンに不正な 16 進文字が含まれています」というエラーメッセージが表示されます。アプリケーションのテーブルの主キー値は一意である必要があります。同じテーブルスキーマを持つ複数のテーブルからデータが同期される場合、重複する主キー値が存在する可能性があります。この場合、データが上書きされる可能性があります。この問題を防ぐには、StringCatenateExtractor プラグインを使用して、複数のフィールドの値を連結します。ソースフィールドは
pk と $table
です。 pk を PolarDB for MySQL クラスタのテーブルの主キーフィールドに置き換えます。 $table はデフォルトのシステム変数で、テーブル名を示します。 $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。PolarDB コンソールで ID を取得できます。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 データソースのフィールドをフィルターする条件を設定する を参照してください。