MySQL 用 ApsaraDB RDS データソースを設定する
MySQL 用 ApsaraDB RDS は、Alibaba Cloud が提供するオンラインリレーショナルデータベースサービス (RDS) です。MySQL 用 ApsaraDB RDS は、安定性、信頼性、スケーラビリティに優れており、すぐに使える機能を提供します。詳細については、製品ページをご覧ください。
MySQL 用 ApsaraDB RDS インスタンスを購入する前の考慮事項
OpenSearch は、MySQL エンジンバージョンが 5.2 から 8.0 の MySQL 用 ApsaraDB RDS インスタンスをサポートしています。
High-availability Edition の通常の MySQL 用 ApsaraDB RDS インスタンスを購入する必要があります。Basic Edition または Enterprise Edition の MySQL 用 ApsaraDB RDS インスタンスはサポートされていません。
OpenSearch コンソールにログオンするために使用する Alibaba Cloud アカウントを使用して、MySQL 用 ApsaraDB RDS インスタンスを購入する必要があります。そうでない場合、OpenSearch は購入した MySQL 用 ApsaraDB RDS インスタンスにアクセスできません。
購入した MySQL 用 ApsaraDB RDS インスタンスは、データソースを設定する OpenSearch アプリケーションと同じリージョンに存在する必要があります。
OpenSearch アプリケーションに複製された MySQL 用 ApsaraDB RDS インスタンスを設定することはできません。設定した場合、アプリケーションはアクティブ化後も初期化状態のままになります。
サポートされていない、または制限に準拠していない MySQL 用 ApsaraDB RDS インスタンスを設定すると、OpenSearch アプリケーションの再インデックスが失敗します。
OpenSearch アプリケーションの MySQL 用 ApsaraDB RDS データソースは、仮想プライベートクラウド (VPC) にデプロイする必要があります。
注:
PolarDB-X データソースはサポートされていません。
MySQL 用 ApsaraDB RDS インスタンスからデータを取得するために OpenSearch を承認する必要があります。MySQL 用 ApsaraDB RDS インスタンスに IP アドレスホワイトリストを設定している場合は、OpenSearch の IP アドレスがホワイトリストに追加されます。そうでない場合、MySQL 用 ApsaraDB RDS インスタンスに接続できません。
サポートされている機能
ソーステーブルのすべてのデータがアプリケーションに同期されると、再インデックスを手動でトリガーするか、スケジュールされた時間にトリガーできます。詳細については、手動およびスケジュールされた再インデックスを参照してください。
1 つ以上のデータソースから複数のテーブルの行をマージできます。行をマージするには、ソーステーブルで同じスキーマを使用し、データソースのデータ処理プラグインの設定が同じであることを確認してください。また、主キー値を重複させることはできません。主キー値が重複するデータは上書きされます。この機能は、次のシナリオで使用できます。
データソースの複数のソーステーブルからアプリケーションのテーブルにデータが同期されます。
アプリケーションのテーブルに複数のデータソースが設定されています。各データソースの 1 つ以上のソーステーブルからアプリケーションのテーブルにデータが同期されます。
プラグインを使用して、データソースフィールドの値を変換できます。
フィルター条件を指定して、全データをフィルタリングできます。
アスタリスク (
*
) を使用して、名前のプレフィックスが同じテーブルを照合できます。
制限事項
MySQL 用 ApsaraDB RDS インスタンスの binlog_row_image パラメータを FULL に設定する必要があります。
High-availability Edition の通常の MySQL 用 ApsaraDB RDS インスタンスのみがサポートされています。
MySQL 用 ApsaraDB RDS インスタンスの MySQL エンジンのバージョンは 5.2 から 8.0 である必要があります。
MySQL エンジンバージョンが 5.6 の MySQL 用 ApsaraDB RDS インスタンスの場合、loose_max_execution_time パラメータと loose_max_statement_time パラメータのしきい値を大きい値に変更することをお勧めします。そうでない場合、再インデックス中に「Query execution was interrupted, max_statement_time exceeded」のようなエラーメッセージが表示されます。 /* クエリの実行が中断されました。max_statement_time を超過しました。 */
OpenSearch コンソールにログオンするために使用する Alibaba Cloud アカウントを使用して、MySQL 用 ApsaraDB RDS インスタンスを購入する必要があります。そうでない場合、OpenSearch は購入した MySQL 用 ApsaraDB RDS インスタンスにアクセスできません。
購入した MySQL 用 ApsaraDB RDS インスタンスは、データソースを設定する OpenSearch アプリケーションと同じリージョンに存在する必要があります。
標準アプリケーションの MySQL 用 ApsaraDB RDS データソースを設定した後、SDK を使用したり、API 操作を呼び出してアプリケーションに増分データをプッシュすることはできません。
標準アプリケーションの MySQL 用 ApsaraDB RDS データソースを設定する場合、フィルター条件を指定してデータソースのデータをフィルタリングすることはできません。
REPLACE INTO ステートメントはサポートされていません。
TRUNCATE または DROP ステートメントを使用してデータを削除することはできません。データを削除するには、DELETE ステートメントを使用します。
OpenSearch アプリケーションに複製された MySQL 用 ApsaraDB RDS インスタンスを設定することはできません。設定した場合、アプリケーションはアクティブ化後も初期化状態のままになります。
MySQL 用 ApsaraDB RDS データソースへの接続に使用するパスワードにパーセント記号 (
%
) を含めることはできません。含めた場合、再インデックスが失敗します。特権アカウントを使用して MySQL 用 ApsaraDB RDS データソースに接続することはできません。使用した場合、OpenSearch は MySQL 用 ApsaraDB RDS データソースに接続できません。
異なるデータベースのソーステーブルの列をマージすることはできません。
バイナリロギングが無効になっているレプリカクライアントモードとレプリカスレーブモードはサポートされていません。詳細については、ソースデータベースのバイナリロギングの事前チェックを参照してください。
使用上の注意
MySQL 用 ApsaraDB RDS データソースの内部エンドポイントとパブリックエンドポイントを切り替えることができます。OpenSearch が MySQL 用 ApsaraDB RDS インスタンスのデータにアクセスする場合、トラフィック料金は発生しません。
OpenSearch では、プライマリデータベースからのみ全データをプルできます。ビジネス要件に基づいて、オフピーク時に再インデックスを実行し、全データをインポートすることをお勧めします。
MySQL 用 ApsaraDB RDS インスタンスのソーステーブルに DATETIME 型または TIMESTAMP 型のフィールドが含まれている場合、これらのフィールドの値はミリ秒単位の値に変換されます。アプリケーションの宛先フィールドの型を TIMESTAMP に設定する必要があります。
OpenSearch が ApsaraDB RDS for MySQL インスタンスにアクセスできるようにするには、インスタンスの内部エンドポイントを申請する必要があります。そうしないと、RDS サービスへの接続に失敗しました。後でもう一度お試しください というエラーメッセージが表示されます。
全データが同期されると、フィルター条件を満たさないドキュメントは除外されます。特定のドキュメントの主キー値がアプリケーションの宛先テーブルの主キー値と同じ場合、これらのドキュメントも除外されます。
長期間 (15 日以上) 増分データが生成されない場合、データ同期エラーが発生する可能性があります。この場合、オフライン変更を手動で実行できます。
OpenSearch を使用して MySQL 用 ApsaraDB RDS インスタンスからデータを同期する場合、OpenSearch が存在するリージョンのサーバーの IP アドレスと CIDR ブロックを MySQL 用 ApsaraDB RDS インスタンスの 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.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 以降の MySQL 用 ApsaraDB RDS データソースを OpenSearch アプリケーションに設定する場合は、次の項目に注意してください。
データソースに接続するには、データソースにアクセスするために必要な権限を取得し、アカウントとパスワードを入力する必要があります。初めてデータソースに接続するためにアカウントとパスワードを選択する際は、注意してください。
データ伝送サービス (DTS) を使用してデータを同期する場合は、アカウントにソースデータベースのすべてのテーブルを照会する権限があることを確認してください。また、SHOW CREATE TABLE
*. *
ステートメントが想定どおりに実行できることを確認してください。アカウントに権限がない場合、リアルタイム同期が失敗する可能性があります。必要な場合を除き、アカウント権限を変更しないでください。リアルタイム OpenSearch タスクは MySQL クライアントと見なされます。アカウントの変更により、リアルタイム同期が失敗する可能性があります。また、現在のアカウントに変更が加えられた場合、新しいバージョンのアプリケーションの作成に失敗する可能性があります。アカウントとパスワードが変更された場合は、既存のデータソースを削除し、MySQL 用 ApsaraDB RDS インスタンスを新しいデータソースとして再度追加する必要があります。
OpenSearch が MySQL 用 ApsaraDB RDS データソースにアクセスできるようにするには、次の最小要件が満たされていることを確認してください。1. SHOW CREATE TABLE ステートメントを実行する権限が OpenSearch に付与されている。2. REPLICATION SLAVE または REPLICATION CLIENT ステートメントを実行する権限が OpenSearch に付与されている。3. binlog_row_image パラメータの値が FULL に設定されている。4. binlog_format パラメータの値が ROW に設定されている。
MySQL 用 ApsaraDB RDS インスタンスで SSL 暗号化が有効になっている場合は、SSL 証明書が有効であることを確認してください。SSL 証明書の期限が切れていると、接続エラーが発生する可能性があります。SSL 証明書の有効期間を適宜更新する必要があります。
トラブルシューティング
OpenSearch コンソールで ApsaraDB RDS for MySQL データソースを RAM ユーザーとしてアプリケーション用に構成するには、最初に RAM ユーザーを承認する必要があります。承認しない場合、RDS サービスへの接続に失敗しました。後でもう一度お試しください というエラーメッセージが表示されます。詳細については、RAM ユーザーの作成をご参照ください。AliyunServiceRoleForOpenSearch ロールは、Alibaba Cloud アカウントを使用して作成する必要があります。
MySQL 用 ApsaraDB RDS インスタンスへの接続に使用するパスワードにパーセント記号 (
%
) を含めることはできません。含めた場合、再インデックスが失敗し、「エスケープ (%) パターンに不正な 16 進文字が含まれています」というエラーメッセージが表示されます。 /* Illegal hex characters in escape (%) pattern */アプリケーションのテーブルの主キー値は一意である必要があります。同じテーブルスキーマを持つ複数のテーブルからデータを同期する場合、主キー値が重複する可能性があります。この場合、データが上書きされる可能性があります。この問題を防ぐには、StringCatenateExtractor プラグインを使用して複数のフィールドの値を連結します。ソースフィールドは
pk と $table
です。pk は MySQL 用 ApsaraDB RDS インスタンスのテーブルの主キーフィールドに置き換えます。$table はデフォルトのシステム変数で、テーブル名を示します。$table を使用するには、ワイルドカードを使用して同じテーブルスキーマを持つ複数のテーブルを照合する必要があります。ハイフン (-
) またはカスタム文字を使用して、複数のソースフィールドの値を連結します。たとえば、MySQL 用 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'
の場合、エラーが返されます。
MySQL 用 ApsaraDB RDS データソースを設定する方法
アプリケーションを設定する際に、MySQL 用 ApsaraDB RDS データソースを設定できます。
既存のアプリケーションの MySQL 用 ApsaraDB RDS データソースを設定する場合は、アプリケーションの詳細ページに移動し、オフライン変更を実行できます。
手順と使用上の注意
1. [データソースの選択] パネルで、[MySQL 用 ApsaraDB RDS] を選択し、データベースに接続をクリックします。
2. [データベースに接続] ダイアログボックスで、必要に応じてパラメータを設定し、[接続] をクリックします。
パラメータ | 説明 |
ApsaraDB RDS インスタンス ID | MySQL 用 ApsaraDB RDS インスタンスの ID。ID は MySQL 用 ApsaraDB RDS コンソールで取得できます。ID では大文字と小文字が区別されます。読み取り専用インスタンスはサポートされていません。ID の例: rm-bp19b4g5n11111111。 |
データベース名 | MySQL 用 ApsaraDB RDS インスタンスで接続するデータベースの名前。名前では大文字と小文字は区別されません。 |
ユーザー名 | データベースへの接続に使用するアカウントのユーザー名。アカウントを使用して、データベースのテーブルスキーマと全データを取得できます。ユーザー名では大文字と小文字が区別され、アカウントには読み取り専用権限があります。 |
パスワード | データベースへの接続に使用するアカウントのパスワード。 |
次に、OpenSearch はデータソースへの接続を試み、接続に失敗した場合にエラーメッセージを返します。
エラーメッセージ | 解決策 |
MySQL 用 ApsaraDB RDS インスタンスが OpenSearch アプリケーションと同じリージョンに存在しません。 | インスタンス ID が正しいかどうか、および MySQL 用 ApsaraDB RDS インスタンスがデータソースを設定する OpenSearch アプリケーションと同じリージョンに存在するかどうかを確認します。インスタンス ID が正しく、MySQL 用 ApsaraDB RDS インスタンスが OpenSearch アプリケーションと同じリージョンに存在するにもかかわらずエラーメッセージが引き続き表示される場合は、チケットを送信してください。 |
RDS サービスに接続できませんでした。 | MySQL 用 ApsaraDB RDS インスタンスへの接続に使用する接続文字列のインスタンス ID、データベース名、ユーザー名、およびパスワードが有効かどうかを確認します。 |
現在の MySQL 用 ApsaraDB RDS インスタンスにテーブルが存在しません。 | テーブル名が有効かどうか、およびテーブルが MySQL 用 ApsaraDB RDS データソースに存在するかどうかを確認します。 |
3. 接続が確立されると、次の図に示すパネルが表示されます。[テーブルの選択] セクションで、左側の [テーブル] ボックスでテーブルを選択し、右矢印をクリックして右側の [選択済み] ボックスにテーブルを追加し、[OK] をクリックします。
アクセスするテーブルの名前を選択または入力します。名前では大文字と小文字が区別されます。
アスタリスク (*) を使用して、データベース内の同じテーブルスキーマを持つ複数のテーブルを照合できます。これらのテーブルの名前のプレフィックスは同じです。たとえば、table_* と入力すると、table_a や table_b などのテーブルが照合されます。
4. [フィールドマッピング] ステップで、データベースからプルするフィールドを選択し、[OK] をクリックします。
[フィールドマッピング] ステップでは、OpenSearch に同期するデータベースフィールドを追加できます。
[コンテンツ変換] 列のフィールドのプラス記号 (+) をクリックして、データ処理プラグインを追加し、フィールドを処理できます。データ処理プラグインの使用方法の詳細については、データ処理プラグインの使用を参照してください。
5. フィルター条件を指定して、MySQL 用 ApsaraDB RDS データソースのデータをフィルタリングします。
OpenSearch アプリケーションのテーブルに複数のデータソースを設定できます。データソースのソーステーブルのスキーマと設定は同じである必要があります。
指定したフィルター条件が有効になると、フィルター条件を満たすデータエントリのみがプルされます。詳細については、ApsaraDB RDS および PolarDB データソースのフィールドをフィルタリングする条件の設定を参照してください。