本トピックでは、ApsaraDB RDS データソースの設定方法と、設定に関する重要な注意事項について説明します。
ApsaraDB RDS の構成
ApsaraDB RDS (Relational Database Service) は、Alibaba Cloud が提供する、安定性、信頼性、拡張性に優れたオンラインデータベースサービスです ( ApsaraDB RDS の詳細はこちら )。
事前準備
-
OpenSearch は、MySQL 5.5、5.6、5.7、または 8.0 を実行する ApsaraDB RDS for MySQL インスタンスをサポートしています。
-
ApsaraDB RDS の High-availability Edition の通常インスタンスを購入する必要があります。Basic Edition および 3 ノードの Enterprise Edition インスタンスは High-availability Edition ではないため、サポートされていません。
-
ApsaraDB RDS インスタンスは、ご利用の OpenSearch アプリケーションと同じ Alibaba Cloud アカウント、同じリージョンにある必要があります。
-
クローンされた ApsaraDB RDS インスタンスは、ソースインスタンスが High-availability Edition の場合にのみサポートされます。
-
サポートされていない ApsaraDB RDS インスタンス、または要件を満たさないインスタンスを使用すると、インデックスの再作成に失敗します。
-
ApsaraDB RDS データソースは、Virtual Private Cloud (VPC) 内にある必要があります。
-
PolarDB-X データソースはサポートされていません。
-
権限付与:OpenSearch が ApsaraDB RDS のデータにアクセスできるようにするには、必要な権限を付与する必要があります。インスタンスに IP アドレスホワイトリストを設定している場合、OpenSearch はそのサーバーの IP アドレスをリストに追加します。権限が付与されていない場合、[データベースに接続] ボタンは無効になります。
サポートされる機能
-
手動およびスケジュールによるインデックスの再作成を利用して、指定したデータベーステーブルから完全データをプルできます。
-
複数のソーステーブルからデータをマージできます。ソーステーブルは、スキーマとデータソースプラグインの構成が完全に同一である必要があります。ソーステーブルのプライマリキーの値は一意である必要があります。プライマリキーの値が重複している場合、データは上書きされます。この機能は、次の 2 つのシナリオをサポートしています:
-
1 つのアプリケーションテーブルに、複数のソーステーブルを含む単一のデータソースが設定されている。
-
1 つのアプリケーションテーブルに複数のデータソースが設定されており、各データソースに 1 つ以上のソーステーブルが含まれている。
-
-
データソースのフィールド変換プラグインがサポートされています。
-
以下のデータ同期メソッドがサポートされています:
-
自動同期。
-
購入した Data Transmission Service (DTS) インスタンスを使用したリアルタイム同期。
-
自動同期なし。
-
-
完全データ同期のフィルター条件を指定できます。
-
ワイルドカード文字 (
*) を使用して、データベーステーブル名を照合できます。
-
自動同期を選択すると、OpenSearch は内部サービスを使用してデータベースのバイナリログ (binlog) をサブスクライブし、増分データを取得します。データベーステーブルの削除、アクセス権限の変更、binlog ファイルのクリア、データベースのパスワード変更など、ユーザーが開始した操作によって、このサブスクリプションが中断される可能性があります。OpenSearch は、このような変更によって引き起こされたデータ同期の失敗について責任を負いません。これらの操作を実行する前に、潜在的な影響を認識し、予防措置を講じてください。
-
[自動同期] を選択した場合、OpenSearch はベストエフォートで同期サービスを提供し、同期遅延を保証しません。遅延の影響を受けやすいアプリケーションの場合は、Data Transmission Service (DTS) インスタンス (リアルタイム同期) を使用してください。
制限事項
-
ApsaraDB RDS インスタンスの
binlog_row_imageパラメーターは FULL に設定する必要があります。 -
ApsaraDB RDS の High-availability Edition および Cluster Edition インスタンスのみがサポートされています。
-
サポートされている ApsaraDB RDS for MySQL のバージョン:5.5、5.6、5.7、8.0。
-
MySQL 5.6 を実行する ApsaraDB RDS インスタンスでは、
loose_max_execution_timeおよびloose_max_statement_timeパラメーターの値を大きくしてください。これにより、インデックスの再作成中にQuery execution was interrupted, max_statement_time exceededのようなエラーが発生するのを防ぎます。 -
ApsaraDB RDS インスタンスは、ご利用の OpenSearch アプリケーションと同じ Alibaba Cloud アカウント、同じリージョンにある必要があります。
-
Standard Edition アプリケーションに ApsaraDB RDS データソースを設定した後、SDK の使用や API の呼び出しによる増分データのプッシュはできません。
-
中国本土以外のリージョンにある Standard Edition アプリケーションでは、ApsaraDB RDS データソースのフィルター条件を指定できません。
-
REPLACE INTO 文はサポートされていません。
-
TRUNCATE 文および DROP 文はサポートされていません。データを削除するには DELETE 文を使用してください。
-
クローンされた ApsaraDB RDS インスタンスは、ソースインスタンスが High-availability Edition の場合にのみサポートされます。
-
ApsaraDB RDS インスタンスのパスワードにパーセント記号 (
%) を含めることはできません。含めると、インデックスの再作成タスクが失敗します。 -
特権アカウントを使用して ApsaraDB RDS インスタンスにアクセスすることはできません。アクセスしようとすると、接続に失敗します。
-
データベーススキーマが異なるソーステーブルのフィールド列をマージすることはできません。
-
バイナリロギングが無効になっている
replica clientモードおよびreplica slaveモードはサポートされていません。バイナリロギングの確認方法と有効化方法については、ドキュメントをご参照ください。
注意事項
-
ApsaraDB RDS には、内部ネットワークまたはパブリックネットワーク経由でアクセスできます。OpenSearch が ApsaraDB RDS からデータを取得する際に、Alibaba Cloud はデータ転送料金を請求しません。
-
OpenSearch はプライマリデータベースからのみ完全データをプルできます。完全データのインポートとインデックスの再作成は、オフピーク時に実行してください。
-
システムは、ApsaraDB RDS テーブルの datetime 値と timestamp 値を自動的にミリ秒に変換します。アプリケーションスキーマで対応するフィールドタイプを TIMESTAMP に設定する必要があります。
-
ApsaraDB RDS インスタンスの内部エンドポイントはデフォルトで有効になっています。インターネット経由でインスタンスにアクセスするには、パブリックエンドポイントを手動で申請する必要があります。
-
データソースのフィルター条件を満たさないドキュメントは、完全データ同期中に除外されます。送信先アプリケーションテーブルに同じプライマリキーの値を持つドキュメントが存在する場合、それらも削除されます。
-
データソースで長期間 (15 日以上) にわたって増分データが生成されない場合、データ同期が中断されることがあります。この問題は、手動でインデックスの再作成またはオフライン変更を実行することで解決できます。
-
ApsaraDB RDS データソースからデータを同期するには、OpenSearch サーバーの CIDR ブロックを ApsaraDB RDS インスタンスの IP アドレスホワイトリストに追加する必要があります。次の表に、各リージョンの CIDR ブロックを示します。
リージョン
CIDR ブロック
中国 (杭州)
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.240.128/26,100.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
アカウントの権限付与
MySQL 5.7 および 8.0 への接続に関する以下の推奨事項にご注意ください:
-
MySQL 5.7 以降のインスタンスに接続する際は、ApsaraDB RDS インスタンスへのアクセスを権限付与し、アカウントとパスワードを提供する必要があります。初めて認証情報を入力する際はご注意ください。
-
アカウント権限の確認:アカウントには、データベース内のすべてのテーブルを表示する権限が必要です。これは、上流の DTS の要件です。
show create table *.*文が正しく実行できることを確認してください。そうでない場合、リアルタイムデータ同期が失敗する可能性があります。 -
アカウント権限の変更を最小限に:OpenSearch のリアルタイムタスクは MySQL クライアントとして機能します。アカウントを変更すると、リアルタイムタスクが中断され、新しいアプリケーションバージョンの作成に影響する可能性があります。アカウントのパスワードを変更した場合は、データベースに再接続してデータソースの構成を更新する必要があります。
-
OpenSearch がご利用の ApsaraDB RDS インスタンスにアクセスするために必要な最小権限は次のとおりです:
-
show create table権限。 -
REPLICATION SLAVEまたはREPLICATION CLIENT権限。 -
binlog_row_imageはFULLに設定する必要があります。 -
binlog_formatはROWに設定する必要があります。
-
よくある質問
-
RAM ユーザーを使用してコンソールで ApsaraDB RDS データソースを設定する場合、その RAM ユーザーに必要な権限を付与する必要があります。そうでない場合、「Failed to connect to RDS service. Try again later.」というエラーメッセージが表示されます。詳細については、「RAM ユーザーの作成と権限付与」をご参照ください。ご利用の Alibaba Cloud アカウントに AliyunServiceRoleForOpenSearch ロールが存在することを確認してください。
-
ApsaraDB RDS インスタンスのパスワードにパーセント記号 (
%) を含めることはできません。含めると、インデックスの再作成タスクが失敗し、「Illegal hex characters in escape (%) pattern」というエラーメッセージが返されます。 -
アプリケーションテーブルのプライマリキーの値は一意である必要があります。複数のテーブルからデータを同期する場合、プライマリキーの値が重複し、データが上書きされる可能性があります。この問題を回避するには、StringCatenateExtractor プラグインを使用して複数のフィールド値を結合します。ソースフィールドを
pk,$tableに設定します。pkは ApsaraDB RDS テーブルのプライマリキーフィールドに置き換えてください。$tableはテーブル名を表すデフォルトのシステム変数です。$tableは、ワイルドカードを使用して複数のテーブルを照合する場合にのみ使用できます。デリミタは-またはカスタム文字に設定します。たとえば、ApsaraDB RDS テーブル名が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'のようなフォーマットを使用するとエラーが発生します。
設定プロセス
-
アプリケーションのクイックビルド時に ApsaraDB RDS データソースを設定できます。
-
既存のアプリケーションの場合は、アプリケーション詳細ページに移動し、オフライン変更を実行して構成を修正します。
操作手順
-
データソースとして ApsaraDB RDS を選択し、データベースの作成 をクリックします。
-
ApsaraDB RDS インスタンスの情報を入力し、[接続] をクリックします。
パラメーター
説明
インスタンス ID
ApsaraDB RDS データベースインスタンスの ID であり、名前ではありません。インスタンス ID は ApsaraDB RDS コンソールで確認できます。ID は大文字と小文字を区別します。読み取り専用インスタンスはサポートされていません。インスタンス ID の形式例:rm-bp19b4g5n11111111
データベース名
インスタンス内のデータベースの名前。名前は、大文字と小文字を区別しません。
ユーザー名
データベーススキーマと完全データを取得するために使用される、読み取り専用データベースアカウントのユーザー名。大文字と小文字を区別します。
パスワード
読み取り専用アカウントのパスワード。
OpenSearch は接続を試み、結果に基づいてメッセージを表示します:
メッセージ
ソリューション
現在のリージョンでは、現在のユーザーが ApsaraDB RDS インスタンスを利用できません。
インスタンス ID が正しいことを確認し、ApsaraDB RDS インスタンスが OpenSearch アプリケーションと同じリージョンにあることを確認してください。問題が解決しない場合は、チケットを送信してください。
RDS サービスへの接続に失敗しました。
インスタンス ID、データベース名、ユーザー名、パスワードなど、接続の詳細が正しいことを確認してください。
現在の ApsaraDB RDS データベースにテーブルが存在しません。
テーブル名が正しいか、また ApsaraDB RDS データベースにテーブルが存在するかどうかを確認してください。
-
データソース接続が確立されたら、ソーステーブルを選択し、右矢印をクリックして選択済みリストに移動し、[OK] をクリックします。
[データソースの選択] ダイアログボックスで、[RDS]、[MaxCompute]、[PolarDB]、または [PolarDB-X] タブをクリックしてデータソースタイプを指定します。次に、[データベースの選択] セクションで、ターゲットデータベースを関連付け、テーブルを選択して [OK] をクリックします。
-
データベース内でアクセスするテーブルの名前を選択または入力します。名前は、大文字と小文字を区別します。
-
table_*のようなパターンを使用して、table_aやtable_bなどの複数のテーブルを照合できます。
-
-
フィールドをマッピングします。プルするデータベースフィールドを選択し、[OK] をクリックしてアプリケーションの作成を完了します。
OpenSearch は、ソースフィールドを同じ名前のアプリケーションフィールドに自動的にマッピングします。名前が異なる場合は、手動でマッピングを作成する必要があります。
-
このページでは、同期のためにマッピングするデータベースフィールドを追加できます。
-
[コンテンツ変換] セクションでは、データソースプラグインを追加できます。これらのプラグインの使用方法の詳細については、こちらをクリックしてください。

-
-
ApsaraDB RDS データソースのフィルター条件を設定します。
データテーブル
test_table_1について、同期メソッドとして [Data Transmission Service (DTS) インスタンス] を選択します。[操作] 列で、[編集] または [削除] をクリックして、追加したデータソースを管理できます。[+ データの追加] をクリックしてさらにデータテーブルを追加し、[フィルター条件] エリアで条件を設定します。-
1 つのアプリケーションテーブルに複数のデータソースを設定できますが、それらのテーブル構造と構成は同一である必要があります。
-
ApsaraDB RDS データソースに設定されたフィルター条件は、指定された条件を満たすレコードのみをプルします。詳細については、「データソースのフィルター条件」をご参照ください。
-