PolarDB は、Alibaba Cloud が提供する完全マネージド型で高可用性を備えたクラウドデータベースサービスであり、エラスティックスケーリングをサポートしています。詳細については、「PolarDB とは」をご参照ください。
PolarDB クラスターを購入する前に
OpenSearch は、PolarDB for MySQL 5.6、5.7、および 8.0 をサポートしています。
PolarDB クラスターは、ご利用の Alibaba Cloud アカウントに属している必要があります。
PolarDB クラスターは、OpenSearch アプリケーションと同じリージョンに配置されている必要があります。
新規の PolarDB クラスターでは、バイナリログ(binlog)がデフォルトで無効になっており、これによりデータソースの登録が失敗します。loose_polar_log_bin パラメーターを ON_WITH_GTID に設定して binlog を有効にする必要があります。binlog_row_image パラメーターはデフォルトで FULL に設定されており、変更不要です。
クローンインスタンスはサポートされています。
PolarDB クラスターは、読み取り/書き込みクラスターである必要があります。
サポートされる機能
指定されたデータベーステーブルから完全データを手動またはスケジュールに基づいてプルします。
複数のソーステーブルからデータをマージします。ソーステーブルは同じスキーマおよびデータソースプラグイン構成を共有している必要があります。プライマリキーの値は一意である必要があり、重複した値があると新しいデータが既存のデータを上書きします。この機能は以下のシナリオをサポートしています。
アプリケーションテーブルがデータソースで構成されており、複数のソーステーブルを含んでいる場合。
アプリケーショントーブルは複数のデータソースで構成されており、各データソースには 1 つ以上のソーステーブルが含まれます。
データソースプラグインを使用してフィールド値を変換します。
サポートされるデータ同期方法:
自動同期
自己購入型 DTS(リアルタイム同期用)
自動同期なし
完全データに対してフィルター条件を指定します。
ワイルドカード文字
*を使用してデータベーステーブル名を一致させます。
「自動同期」を選択した場合、OpenSearch の内部サービスがデータベースの binlog をサブスクライブして増分データ同期を実行します。データベーステーブルの削除、アクセス権限の変更、binlog ファイルのクリア、データベースパスワードの変更などの操作により、同期が失敗する可能性があります。このようなユーザー側の操作によって発生する同期失敗について、OpenSearch は責任を負いません。これらの操作を実行する前に、潜在的な影響を十分に理解し、必要な予防措置を講じてください。
自動同期を選択した場合、OpenSearch は同期サービスの安定性を保証しますが、低遅延を保証するものではありません。ビジネス要件として低遅延同期が必要な場合は、DTS インスタンス(リアルタイム同期用)(DTS リアルタイム同期)をご利用ください。
制限事項
PolarDB クラスターの binlog モードはフルに設定されている必要があります。loose_polar_log_bin パラメーターを ON_WITH_GTID に設定してください。binlog_row_image パラメーターはデフォルトで FULL に設定されており、変更不要です。
PolarDB for MySQL 5.6、5.7、および 8.0 のみがサポートされています。
PolarDB クラスターは、OpenSearch コンソールにアクセスするために使用している Alibaba Cloud アカウントと同じアカウントに属している必要があります。
PolarDB クラスターは、OpenSearch アプリケーションと同じリージョンに配置されている必要があります。
Standard Edition アプリケーションに対して PolarDB データソースを設定した後は、SDK または API を使用して増分データをプッシュできません。
Standard Edition アプリケーションの PolarDB データソースでは、フィルター条件はサポートされていません。
REPLACE INTO 構文はサポートされていません。
TRUNCATE コマンドおよび DROP コマンドはサポートされていません。DELETE コマンドを使用してデータを削除してください。
PolarDB クラスターのアクセスパスワードに
%文字を含めることはできません。含まれている場合、インデックスの再作成が失敗します。スキーマが異なるソーステーブルから列をマージすることはできません。
インデックスの再作成またはオフライン変更中に、loose_max_statement_time パラメーターおよび connect_timeout パラメーターの両方を 0 に設定できます。完全データ同期が完了した後、これらの値を元に戻すことができます。
注意事項
RDS や PolarDB などのデータソースが DRDS インスタンスにアタッチされている場合、データソースを設定する際に DRDS インスタンス内の実際のデータベースシャード名を指定してください。DRDS データベースは 1 つのシャドウデータベースと 8 つのシャードに分割され、データはこれらのシャードにランダムに書き込まれます。
PolarDB クラスターの内部エンドポイントとパブリックエンドポイントを切り替えることができます。OpenSearch は、PolarDB からのデータ取得に対してトラフィック料金を請求しません。
OpenSearch はプライマリデータベースからのみ完全データをプルします。インデックスの再作成および完全データのインポートは、オフピーク時間帯に実行することを推奨します。
システムは、PolarDB テーブル内の datetime および timestamp 値を自動的にミリ秒単位に変換します。アプリケーションスキーマ内の対応するフィールドタイプを TIMESTAMP に設定してください。
完全データ同期中に、フィルター条件を満たさないドキュメントは除外されます。アプリケーションテーブル内のドキュメントに重複するプライマリキー値が存在する場合、それらも削除されます。
データソースで 15 日以上増分データが生成されない場合、データ同期が異常になる可能性があります。この問題を解決するには、手動でインデックスの再作成またはオフライン変更を実行してください。
PolarDB クラスターで SSL 暗号化が有効になっている場合、SSL 証明書が有効であることを確認してください。証明書の有効期限が切れると接続エラーが発生します。有効期限が切れる前に証明書を更新してください。
PolarDB データソースは、中国 (青島) リージョンでは利用できません。
PolarDB データソースからデータを同期するには、OpenSearch サーバーの IP アドレス CIDR ブロックを PolarDB インスタンスのホワイトリストに追加する必要があります。以下の表に、各リージョンで必要な 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,100.104.132.192/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 クラスターに接続するには、必要なアクセス権限を持つアカウントおよびパスワードを提供する必要があります。データソースの初期接続には慎重にアカウントを選択してください。
アカウント権限を確保してください。アカウントには、ソースデータベース内のすべてのテーブルをクエリする権限(アップストリーム DTS サービスで必要)および SHOW CREATE TABLE
*.* を正しく実行する権限が必要です。権限が不十分な場合、リアルタイム同期が失敗します。権限の変更を最小限に抑えてください。アカウントを変更すると、実行中のリアルタイムタスクが中断され、新しいアプリケーションバージョンの作成に影響を与える可能性があります。アカウントパスワードを変更した場合は、インスタンスを削除してデータベースに再接続する必要があります。
よくある質問
PolarDB データソースを設定した後にインデックスの再作成が停止した場合は、ソーステーブルを含むデータベース内にテストテーブルを作成し、毎分 1~2 件のレコードを書き込むか更新してください。これにより、インデックスの再作成中に継続的に binlog が生成されます。
PolarDB データソースを持つ Premium Edition アプリケーションで支払い遅延が発生した場合、残高を精算した後に手動でインデックスの再作成をトリガーできます。
PolarDB クラスターのアクセスパスワードに
%文字を含めることはできません。含まれている場合、`Illegal hex characters in escape (%) pattern` というエラーメッセージとともにインデックスの再作成が失敗します。アプリケーションテーブルのプライマリキー値は一意である必要があります。テーブルシャーディングを使用する場合、重複するプライマリキー値によりデータが上書きされる可能性があります。これを防ぐには、StringCatenateExtractor プラグインを使用して複数のフィールドをマージしてください。ソースフィールドを
pk,$tableに設定します。ここで、`pk` は PolarDB テーブルのプライマリキーフィールド、`$table` はテーブル名を表すシステム変数(ワイルドカードを使用したテーブルシャーディングでのみ利用可能)です。区切り文字としてハイフン(-)または任意の文字を使用します。
たとえば、PolarDB テーブル名が 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 データソースの設定
アプリケーションを作成する際に、PolarDB データソースを設定できます。
既存のアプリケーションの場合、製品ページに移動してオフライン変更を実行し、データソースを変更します。
コンソールでの操作手順
1. アプリケーションの作成または変更時に、データソースステップに進みます。データソースを追加または編集し、PolarDB を選択してから [新規データベース] をクリックします。

2. PolarDB データソース情報を入力し、[接続] をクリックします。

パラメーター | 説明 |
クラスター ID | PolarDB コンソールから取得可能な PolarDB クラスターの ID です。大文字と小文字は区別されます。例:pc-uf6c056ny9tiaj1l7 |
データベース名 | 接続先のデータベース名です。大文字と小文字は区別されません。 |
ユーザー名 | テーブルスキーマおよび完全データを取得するために使用するデータベースアカウントです。ユーザー名の大文字と小文字は区別されます。 |
パスワード | アカウントのパスワードです。 |
OpenSearch は接続を試行し、結果に基づいてメッセージを表示します。
メッセージ | 対処方法 |
現在のユーザーの現在のリージョンにこの PolarDB クラスターは存在しません。 | クラスター ID を確認してください。PolarDB クラスターと OpenSearch アプリケーションが同じリージョンにあることを確認してください。エラーが解消しない場合は、チケットを送信してください。 |
データベースサービスへの接続に失敗しました。 | クラスター ID、データベース名、ユーザー名、パスワードなど、接続詳細を確認してください。 |
現在の PolarDB クラスターにこのテーブルは存在しません。 | テーブル名を確認し、PolarDB データベース内に存在することを確認してください。 |
PolarDB クラスターの設定項目に問題があります。 | PolarDB コンソールでクラスターのパラメーター設定ページに移動し、設定を変更してから再度試行してください。 |
3. 接続が確立されたら、リストからテーブルを選択して [OK] をクリックします。

アクセスするテーブルの名前を選択または入力できます。大文字と小文字は区別されます。
table_* などのテーブルシャーディングルールがサポートされています。たとえば、table_* は table_a や table_b などのテーブルに一致します。
4. 接続が成功した後、フィールドを設定します。OpenSearch は自動的にテーブルフィールドを取得します。データソースプラグインの詳細については、「このドキュメント」をご参照ください。

5. PolarDB データソースのフィルター条件を設定します(Standard Edition アプリケーションではサポートされていません)。データ同期方法を設定した後、[完了] をクリックしてアプリケーションスキーマの設定を完了します。

OpenSearch アプリケーションのテーブルに対して複数のデータソースを設定できますが、テーブルスキーマおよび構成は同一である必要があります。
自動同期がサポートされていない旨のメッセージが表示された場合は、DTS(リアルタイム同期用)をご利用ください。
フィルター条件は、指定された条件を満たすレコードのみをプルします。詳細については、「データソースのフィルター条件」をご参照ください。