AnalyticDB for MySQL は、ApsaraDB for MongoDB から AnalyticDB for MySQL へのデータ同期タスクを作成するためのゼロ ETL 機能を提供します。これにより、エンドツーエンドでデータを同期および管理し、トランザクション処理とデータ分析を統合できます。
概要
ビッグデータ時代において、企業の業務データはさまざまなシステムやプラットフォームに散在しています。これらのデータを効果的に管理・活用するために、企業は多くの場合、ETL ツールを利用して一元的なデータ管理を行います。
ETL とは、上流の業務システムからデータを抽出し、変換 (データクレンジング) し、データウェアハウスにロードするプロセスです。その目的は、上流ソースに散在するデータをターゲットのデータウェアハウスに統合し、さらに計算と分析を行うことで、効果的なビジネス上の意思決定をサポートすることです。
従来の ETL プロセスは、通常、以下の課題に直面します。
-
リソースコストの増加:データソースが異なれば、異なる ETL ツールが必要になる場合があり、ETL パイプラインの構築には追加のリソースコストが発生します。
-
システム複雑性の増大:ユーザーは ETL ツールを自身で保守する必要があり、これにより O&M の難易度が上がり、ビジネスアプリケーション開発に集中できなくなります。
-
データの適時性の低下:一部の ETL プロセスには定期的なバッチ更新が含まれており、ニアリアルタイムのアプリケーションシナリオでは分析結果を迅速に生成できません。
これらの課題に対処するため、Alibaba Cloud Database はゼロ ETL 機能を提供しています。この機能により、業務システム (OLTP) とデータウェアハウス (OLAP) の間にデータ同期パイプラインを迅速に構築できます。業務システム (OLTP) のデータは自動的に抽出、変換、クレンジングされ、データウェアハウス (OLAP) にロードされます。これにより、データ同期と管理をワンストップで完了でき、トランザクション処理とデータ分析を統合し、お客様がデータ分析業務に集中できるよう支援します。
メリット
-
使いやすさ:ETL (抽出、変換、ロード) 操作を実行する複雑なデータパイプラインを作成・維持する必要はありません。ソースデータとターゲットインスタンスを選択するだけで、リアルタイムのデータ同期パイプラインを自動的に作成できます。これにより、データパイプラインの構築と管理の課題が軽減され、上位層のアプリケーション開発に集中できます。
-
ゼロコスト:ゼロ ETL パイプラインでは追加料金は発生しません。AnalyticDB for MySQL で上流データを無料で分析できます。
-
複数ソースの集約:ゼロ ETL パイプラインを使用して、複数のインスタンスから AnalyticDB for MySQL クラスターにデータをリアルタイムで同期し、グローバルな分析視点を構築できます。
サポートされるデータ同期タスク
-
RDS for MySQL から AnalyticDB for MySQL への同期パス。詳細については、「ゼロ ETL を使用したデータ同期」をご参照ください。
-
DTS から AnalyticDB for MySQL への同期パス。
-
ApsaraDB for MongoDB から AnalyticDB for MySQL へのデータ同期タスク。
前提条件
-
AnalyticDB for MySQL クラスターと ApsaraDB for MongoDB インスタンスが同じリージョンに作成されていること。
-
AnalyticDB for MySQL クラスターと ApsaraDB for MongoDB インスタンスのデータベースアカウントが作成されていること。
注意事項
-
ゼロ ETL 機能は、中国 (北京)、中国 (杭州)、中国 (上海)、中国 (深圳)、中国 (張家口)、中国 (青島)、中国 (広州)、香港 (中国)、シンガポール、米国 (シリコンバレー)、および米国 (バージニア) のリージョンでのみ利用可能です。
-
AnalyticDB for MySQL クラスターのゼロ ETL パイプラインの数が上限を超えた場合、新しいゼロ ETL パイプラインを作成することはできません。DTS を使用して新しい同期パイプラインを作成するか、未使用のゼロ ETL パイプラインを削除して新しいパイプラインを作成できます。ゼロ ETL パイプラインの上限は以下のとおりです。
-
クラスター内の予約済みリソースの合計 ACU 数が 24 ACU 未満の場合、1 つのゼロ ETL パイプラインを作成できます。
-
クラスター内の予約済みリソースの合計 ACU 数が 24 ACU 以上の場合、3+3*[(合計 ACU-24)/50] 個のゼロ ETL パイプラインを作成できます。
[(合計 ACU-24)/50] の計算結果は切り捨てられます。たとえば、合計 ACU 数が 48 の場合、結果は 0.48 となり、切り捨てられて 0 になります。この場合、3 つのゼロ ETL パイプラインを作成できます。
説明-
Lakehouse Edition の場合、予約済みリソースの合計 ACU 数は、予約済みのコンピューティングリソースと予約済みのストレージリソースの ACU の合計です。
-
Data Warehouse Edition の場合、1 コアは 1 ACU に相当します。エラスティックモードの場合、予約済みリソースの合計 ACU 数は、コンピューティングリソースとエラスティック I/O リソースのコア数の合計です。予約モードの場合、予約済みリソースの合計 ACU 数は、コンピューティングリソースのコア数です。
-
事前準備
AnalyticDB for MySQL のサービスリンクロールの作成
-
RAM コンソールの [Roles] (ロール) ページに移動します。
-
サービスリンクロール [AliyunServiceRoleForAnalyticDBForMySQL] がロールの一覧にすでに存在するかどうかを確認します。存在しない場合は、ロールを作成します。
-
[Create Role] をクリックします。
-
[Create Role] ダイアログボックスで、[Alibaba Cloud Service] を選択し、[Next] をクリックします。
-
ロールタイプを [Alibaba Cloud Service] に設定し、AnalyticDB for MySQL を選択します。
-
[Complete] をクリックします。ロールの一覧に戻り、サービスリンクロールが作成されたことを確認します。
RAM ユーザーへの管理権限の付与
RAM ユーザーがゼロ ETL パイプラインを作成および管理するには、以下の 2 種類の権限が必要です。
以下に、カスタムポリシーのスクリプトを示します。
すべての ApsaraDB for MongoDB インスタンスと AnalyticDB for MySQL クラスターに対する権限の付与
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": "dts:*",
"Resource": [
"acs:adb:*:*:*",
"acs:dds:*:*:*"
]
},
{
"Effect": "Allow",
"Action": [
"dts:DescribeRegions",
"dts:DescribeConfigRelations",
"dts:DescribeSrcLinkConfig",
"dts:DescribeDestLinkConfig",
"dts:DescribeLinkConfig"
],
"Resource": [
"acs:dts:*:*:*"
]
}
]
}
特定の ApsaraDB for MongoDB インスタンスと特定の AnalyticDB for MySQL クラスターに対する権限の付与
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": "dts:*",
"Resource": [
"acs:adb:*:*:dbcluster/am-2zeod8ax4b9a****",
"acs:dds:*:*:dbinstance/dds-t4n8aaa4dcdb****"
]
},
{
"Effect": "Allow",
"Action": [
"dts:DescribeRegions",
"dts:DescribeConfigRelations",
"dts:DescribeSrcLinkConfig",
"dts:DescribeDestLinkConfig",
"dts:DescribeLinkConfig"
],
"Resource": "acs:dts:*:*:*"
}
]
}
手順
-
AnalyticDB for MySQL コンソールにログインします。左上のコーナーで、クラスターが存在するリージョンを選択します。左側メニューで [Clusters] をクリックし、対象クラスターの ID をクリックします。
-
左側メニューで、 を選択します。
-
[Create Zero-ETL Task] をクリックします。 [Create Zero-ETL Task] ページの「ソースデータベースと宛先データベースの設定」ステップで、ソースインスタンスと宛先クラスターのパラメーターを設定します。
-
次の表に、ソースインスタンスのパラメータを示します。
パラメータ
説明
タスク名
ゼロ ETL タスクの名前です。
データベースタイプ
ソースインスタンスのデータベースエンジン。選択: [MongoDB]。
アクセス方法
ソースインスタンスのアクセス方法です。値は自動的に [Alibaba Cloud Instance] に設定されます。
インスタンスリージョン
ApsaraDB for MongoDB インスタンスが存在するリージョンです。
アーキテクチャ
ApsaraDB for MongoDB インスタンスのアーキテクチャです。[ReplicaSet] のみがサポートされます。
移行方法
増分データ同期に使用する方法です。有効な値は次のとおりです。
-
[Oplog] (推奨)
このオプションは、ソースインスタンスで Oplog 機能が有効な場合に利用できます。
説明Oplog は、セルフマネージドの MongoDB データベースおよび ApsaraDB for MongoDB インスタンスでデフォルトで有効になっています。この方法で増分データを同期する場合、ログのプル速度が速いため、増分同期タスクのレイテンシーが低くなります。したがって、[Oplog] を選択することを推奨します。
-
[ChangeStream]
このオプションは、ソースインスタンスで変更ストリーム が有効な場合に利用できます。
説明ソースインスタンスが Amazon DocumentDB (非エラスティッククラスター) の場合、[ChangeStream] のみを選択できます。
インスタンス ID
ApsaraDB for MongoDB インスタンスの ID です。
認証データベース
ApsaraDB for MongoDB インスタンスのデータベースアカウントが属するデータベースの名前です。データベースを変更していない場合、
adminが使用されます。データベースアカウント
ApsaraDB for MongoDB インスタンスのデータベースアカウントの名前です。
データベースパスワード
ApsaraDB for MongoDB インスタンスのデータベースアカウントのパスワードです。
暗号化
ApsaraDB for MongoDB インスタンスへの接続に使用される暗号化方式です。[Non-encrypted] または [SSL-encrypted] を選択します。
説明[SSL-encrypted] を選択した場合は、まず ApsaraDB for MongoDB インスタンスの SSL 暗号化機能を有効にする必要があります。
-
-
ターゲットデータベースを設定します。
ターゲットデータベース
説明
データベースタイプ
ターゲットデータベースは、[AnalyticDB for MySQL] のみがサポートされます。
アクセス方法
[Alibaba Cloud Instance] のみがサポートされます。
インスタンスリージョン
AnalyticDB for MySQL クラスターが存在するリージョンです。
インスタンス ID
AnalyticDB for MySQL クラスターの ID です。
データベースアカウント
AnalyticDB for MySQL クラスターのデータベースアカウントです。
データベースパスワード
AnalyticDB for MySQL クラスターのデータベースアカウントのパスワードです。
-
-
上記のパラメータを設定した後、[Test Connectivity and Proceed] をクリックします。[Configure Zero-ETL] ステップで、次の表に示すパラメータを設定します。
パラメータ
説明
同期するDML操作
同期するDML操作 ([INSERT]、[UPDATE]、[DELETE]) です。デフォルトでは、すべての操作が選択されています。
ソースオブジェクトと選択されたオブジェクト
同期対象のソースオブジェクトです。
詳細設定 (オプション)
ソースインスタンスとターゲットインスタンス/クラスター間の接続失敗時や、その他の問題が発生した場合の再試行時間です。
-
上記のすべてのパラメータを設定した後、[Next: Save Task and Precheck] をクリックします。
-
事前チェックに合格したら、[Start] をクリックしてゼロ ETL タスクを開始します。
[Free Data Sync] ページでは、対象のゼロ ETL タスクの [Name]、[Source/Target]、[Status]、およびその他の情報を表示できます。
ゼロ ETL タスクの監視とアラート
ゼロ ETL タスクを作成して開始した後、CloudMonitor コンソールでタスクのアラートルールを設定することで、実行ステータスをリアルタイムで監視できます。手順は以下のとおりです。
-
CloudMonitor コンソールにログインします。
-
監視情報を表示します。
-
左側メニューで、 を選択します。
-
[AnalyticDB for MySQL] カードにマウスポインターを合わせ、[AnalyticDB for MySQL 3.0 - ZeroETL Latency] をクリックします。
-
[Clusters] ページで、クラスター ID をクリックして、クラスター配下のゼロ ETL タスクの監視情報を表示します。
-
-
アラートルールを作成します。
-
左側メニューで、 を選択します。
-
[Create Alert Rule] をクリックします。[Create Alert Rule] パネルで、ゼロ ETL タスクのアラートルールを設定します。詳細については、「しきい値トリガーのアラートルールの作成」をご参照ください。
説明[Product] を [AnalyticDB for MySQL 3.0 - ZeroETL Latency] に設定します。
-
-
サブスクリプションを作成します。
-
左側メニューで、 を選択します。
-
[Create Subscription] をクリックします。[Create Subscription] ページで、ゼロ ETL タスクのサブスクリプションを設定します。詳細については、「イベントサブスクリプションの作成」をご参照ください。
説明-
[Product]:[AnalyticDB for MySQL 3.0] を選択します。
-
[Event Type]:[Exception] または [Restore] を選択します。
-
[Event Name]:[ZeroETL Task Exception] または [ZeroETL Task Recovery] を選択します。
-
-