PolarDB は、Alibaba Cloud が提供する、すぐに利用でき、安定性、信頼性、拡張性に優れたオンラインデータベースサービスです (PolarDB の詳細)。
始める前に
-
OpenSearch は、PolarDB for MySQL 5.6、5.7、および 8.0 をサポートしています。
-
PolarDB クラスターは、OpenSearch コンソールで使用している Alibaba Cloud アカウントと同じアカウントのものである必要があります。
-
PolarDB クラスターは、OpenSearch アプリケーションと同じリージョンにある必要があります。
-
新しい PolarDB クラスターでは、デフォルトでバイナリロギング (バイナリログ) が無効になっているため、データソースの登録ができません。登録するには、バイナリログを有効にする必要があります。そのためには、
loose_polar_log_binパラメータをON_WITH_GTIDに設定します。binlog_row_imageパラメータはデフォルトでFULLに設定されており、変更する必要はありません。 -
OpenSearch はクローンインスタンスをサポートしています。
-
PolarDB クラスターは、読み取り/書き込みクラスター である必要があります。
機能
-
指定されたデータベーステーブルから、手動またはスケジュールに基づいて全量データを取得します。
-
複数のソーステーブルからデータを水平方向にマージします。ソーステーブルは、スキーマとデータソースプラグインの設定が同一であり、プライマリキーの値が一意である必要があります。プライマリキーの値が重複すると、既存のレコードが上書きされます。この機能は、主に次の 2 つのシナリオをサポートします。
-
1 つのアプリケーションテーブルに、複数のソーステーブルを含む単一のデータソースが設定されています。
-
1 つのアプリケーションテーブルに、それぞれが 1 つ以上のソーステーブルを含む複数のデータソースが設定されています。
-
-
OpenSearch は、データソースのフィールド変換プラグインをサポートしています。
-
サポートされているデータ同期方式:
-
自動同期
-
自動同期なし
-
-
全量データの同期にフィルター条件を使用できます。
-
データベーステーブル名にワイルドカード文字 (
*) を使用してマッチングさせることができます。
-
自動同期 を選択すると、OpenSearch は内部サービスを使用してデータベースのバイナリログをサブスクライブし、増分データを同期します。データベーステーブルの削除、アクセス権限の変更、バイナリログファイルのクリア、データベースパスワードの変更などのユーザー操作は、このサブスクリプションプロセスを中断させる可能性があります。この中断により OpenSearch が増分データを同期できなくなる可能性があり、結果として生じるデータの不整合について OpenSearch は責任を負いません。このような操作を実行する前に、潜在的な影響を十分に理解し、必要な予防措置を講じてください。
-
自動同期 を選択した場合、OpenSearch は同期サービスの安定性を保証しますが、特定のレイテンシーは保証しません。同期のレイテンシーが重視されるビジネスの場合は、DTS データサブスクリプションインスタンス (DTS リアルタイム同期) の使用を推奨します。
制限事項
-
PolarDB クラスターは、
fullバイナリログモードのみをサポートします。このモードを有効にするには、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 アプリケーションと同じリージョンにある必要があります。
-
PolarDB データソースを使用する Standard Edition アプリケーションには、SDK または API を使用して増分データをプッシュすることはできません。
-
Standard Edition アプリケーションの場合、PolarDB データソースではフィルター条件はサポートされていません。
-
REPLACE INTO構文はサポートされていません。 -
TRUNCATEおよびDROPコマンドはサポートされていません。データを削除するには、DELETEコマンドを使用してください。 -
PolarDB のアクセスパスワードに
%文字を含めることはできません。含めた場合、再インデックスのタスクが失敗します。 -
OpenSearch は、異なるスキーマを持つソーステーブルからの列のマージをサポートしていません。
-
loose_max_statement_timeとconnect_timeoutの両方を0に設定します。再インデックスまたはオフライン変更によってトリガーされた全量データ同期が完了した後、これらのパラメータを以前の値に戻すことができます。
注意事項
-
RDS や PolarDB インスタンスなどのデータソースが、OpenSearch に接続する Distributed Relational Database Service (DRDS) インスタンスにアタッチされている場合、データソースの設定で実際のシャードデータベース名を指定する必要があります。DRDS データベースは、1 つのシャドウデータベースと 8 つのシャードに分割され、データはシャード全体にランダムに書き込まれます。
-
PolarDB クラスターは、内部エンドポイントとパブリックエンドポイントの切り替えをサポートしています。OpenSearch は、PolarDB からのデータ取得に対するトラフィック料金を請求しません。
-
OpenSearch は、プライマリデータベースからのみ全量データを取得します。再インデックスと全量データのインポートは、オフピーク時にスケジュールすることを推奨します。
-
システムは、PolarDB テーブルの
datetime型およびtimestamp型の値を自動的にミリ秒に変換します。アプリケーションテーブルの対応するフィールドタイプをTIMESTAMPに設定してください。 -
同期プロセスでは、全量データのフィルター条件を満たさないドキュメントは除外されます。アプリケーションテーブルに同じプライマリキー値を持つドキュメントが存在する場合、そのドキュメントも削除されます。
-
データソースから 15 日以上連続して増分データが生成されない場合、データ同期が失敗することがあります。この問題を解決するには、手動で 再インデックス または オフライン変更 を実行してください。
-
PolarDB クラスターで SSL 暗号化が有効になっている場合、SSL 証明書が有効であることを確認してください。証明書の有効期限が切れていると、接続エラーが発生します。有効期限が切れる前に証明書を更新してください。
-
Qingdao リージョンでは PolarDB データソースを設定できません。
-
PolarDB データソースからデータを同期するには、RDS または PolarDB インスタンスの IP ホワイトリストに OpenSearch サーバーの 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, 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 分あたり 1〜2 件のレコードを書き込むか更新します。
-
Advanced 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 クラスターの ID。ID は PolarDB コンソールから取得できます。このパラメータは大文字と小文字を区別します。例: |
|
データベース名 |
インスタンス内で接続するデータベースの名前。このパラメータは大文字と小文字を区別しません。 |
|
ユーザー名 |
テーブルスキーマと全量データを取得するために使用されるデータベースアカウント。このパラメータは大文字と小文字を区別します。 |
|
パスワード |
指定されたアカウントのパスワード。 |
OpenSearch は接続を試み、結果に基づいてフィードバックを提供します。
|
メッセージ |
対処法 |
|
This PolarDB cluster does not exist in the current region for the current user. |
クラスター ID が正しいことを確認し、PolarDB クラスターが OpenSearch アプリケーションと同じリージョンにあることを確認してください。問題が解決しない場合は、チケットを送信してください。 |
|
Failed to connect to the database service. |
クラスター ID、データベース名、ユーザー名、パスワードなど、PolarDB の接続情報が正しいことを確認してください。 |
|
This table does not exist in the current PolarDB cluster. |
テーブル名が正しいことを確認し、そのテーブルが PolarDB データベースに存在することを確認してください。 |
|
Issue with PolarDB cluster configuration items. |
PolarDB コンソールの [パラメータ設定] ページに移動し、関連する設定項目を変更してから、再試行してください。 |
3. PolarDB データソースに接続した後、データテーブルを選択します。
左側の [データテーブル] リストで、目的のテーブルのチェックボックスを選択し、[>>] ボタンをクリックして右側の [選択済み] リストに追加します。
-
データベースでアクセスするテーブルの名前を選択または入力します。名前は大文字と小文字を区別します。
-
シャード化されたテーブルのワイルドカードマッチングがサポートされています。たとえば、
table_*はtable_a、table_bなどにマッチします。
4. 接続に成功したら、フィールドを設定します。OpenSearch はテーブルフィールドを自動的に取得します。データソースプラグインの詳細については、「データ処理プラグインの使用」をご参照ください。
データソースプラグインを追加するには、対応するフィールドマッピングの [コンテンツ変換] 列にある [+] ボタンをクリックします。フィールドマッピングが完了したら、[OK] をクリックします。
5. PolarDB データソースのフィルター条件を設定し (Standard Edition ではサポートされていません)、データ同期方式 を設定してから、[完了] をクリックしてアプリケーション構造の設定を完了します。
データ同期方式 には、[自動同期]、[DTS データサブスクリプションインスタンス]、[自動同期なし] の 3 つのオプションがあります。
-
1 つの OpenSearch アプリケーションに複数のデータソースを設定できますが、それらのテーブル構造と設定は同一である必要があります。
-
コンソールで自動同期がサポートされていないと表示された場合は、DTS リアルタイム同期 を使用してください。
-
PolarDB データソースのフィルター条件を使用すると、指定された基準を満たすレコードのみが同期されます。設定の詳細については、「データソースのフィルター条件」をご参照ください。