AnalyticDB for MySQL は、ApsaraDB for MongoDB から AnalyticDB for MySQL へのデータ同期タスクを作成できるゼロ ETL 機能を提供します。 これにより、エンドツーエンドでデータを同期および管理し、トランザクション処理とデータ分析を統合することができます。
概要
ビッグデータの時代において、企業は、さまざまなシステムやプラットフォームに分散している大量のビジネスデータを効率的に管理および使用するために、抽出、変換、ロード (ETL) ツールを使用する必要があります。
ETL ツールは、上位の業務システムからデータを抽出し、データを変換してから、データウェアハウスにロードします。 このプロセスでは、分散データがデータウェアハウスに組み込まれ、さらなる計算、分析、ビジネス上の意思決定が行われます。
従来の ETL プロセスには、次の課題があります。
リソースコストの増加: データソースが異なると、異なる ETL ツールが必要になる場合があり、ETL タスクの作成に追加料金が発生します。
システムの複雑さの増加: ETL ツールのメンテナンスにより、O&M の難易度が上がり、ビジネスアプリケーションの開発に集中できなくなります。
データ適時性の低下: 特定の ETL プロセスには、定期的な一括更新が含まれます。 ほぼリアルタイムのシナリオでは、分析結果を迅速に生成できません。
前述の問題を解決するために、Alibaba Cloud ApsaraDB は、オンライントランザクション処理 (OLTP) システムとオンライン分析処理 (OLAP) システムの間にデータ同期タスクを作成できるゼロ ETL 機能を提供します。 ゼロ ETL 機能は、OLTP システムからデータを抽出し、データを変換してから、OLAP システムにロードします。これにより、エンドツーエンドでデータを同期および管理し、トランザクション処理とデータ分析を統合し、データ分析に集中することができます。
メリット
使いやすさ: ETL 操作を実行するために、複雑なデータパイプラインを作成または維持する必要はありません。 ソースインスタンスまたはクラスターと宛先インスタンスまたはクラスターを選択するだけで、リアルタイムのデータ同期タスクを作成できます。 これにより、データパイプラインの構築と管理の課題が軽減され、アプリケーション開発に集中できます。
ゼロコスト: ゼロ ETL タスクに追加料金は発生しません。 ゼロ ETL 機能を使用すると、AnalyticDB for MySQL に同期されたデータを無料で分析できます。
マルチソース集約: ゼロ ETL 機能を使用すると、複数のソースインスタンスまたはクラスターから AnalyticDB for MySQL クラスターにデータをリアルタイムで同期して、グローバル分析を行うことができます。
サポートされているデータ同期タスク
ApsaraDB RDS for MySQL から AnalyticDB for MySQL へのデータ同期タスク。 詳細については、「ゼロ ETL を使用したデータの同期」をご参照ください。
PolarDB for MySQL から AnalyticDB for MySQL へのデータ同期タスク。 詳細については、「ゼロ ETL を使用したデータの同期」をご参照ください。
ApsaraDB for MongoDB から AnalyticDB for MySQL へのデータ同期タスク。
前提条件
AnalyticDB for MySQL クラスターと ApsaraDB for MongoDB インスタンスが同じリージョンに作成されている。
AnalyticDB for MySQL クラスターと ApsaraDB for MongoDB インスタンス用にデータベースアカウントが作成されている。
課金ルール
データ同期タスクに対して課金されることはありません。
使用上の注意
ゼロ ETL 機能は、中国 (北京)、中国 (杭州)、中国 (上海)、中国 (深圳)、中国 (張家口)、中国 (青島)、中国 (広州)、中国 (香港)、シンガポール、米国 (シリコンバレー)、米国 (バージニア) のリージョンでのみサポートされています。
AnalyticDB for MySQL クラスターに作成されたゼロ ETL タスクの数が上限に達した場合、AnalyticDB for MySQL コンソールでゼロ ETL タスクを作成することはできません。 DTS コンソールで追加のデータ同期タスクを作成するか、AnalyticDB for MySQL コンソールで不要になったゼロ ETL タスクを削除できます。 AnalyticDB for MySQL コンソールで AnalyticDB for MySQL クラスターに作成できるゼロ ETL タスクの最大数には、次の制限が課せられます。
AnalyticDB for MySQL クラスターのリザーブド リソースの合計量が 24 AnalyticDB コンピュート ユニット (ACU) 未満の場合、作成できるゼロ ETL タスクは 1 つだけです。
AnalyticDB for MySQL クラスターのリザーブド リソースの合計量が 24 ACU 以上の場合、作成できるゼロ ETL タスクの最大数は、次の式を使用して計算されます。
3 + 3 × [(ACU の合計数 - 24)/50]。この式では、
[(ACU の合計数 - 24)/50]の結果は切り捨てなければなりません。 たとえば、クラスター内の ACU の合計数が 48 の場合、[(ACU の合計数 - 24)/50] の結果は、元の結果 0.48 を切り捨てると 0 になります。 この場合、最大 3 つのゼロ ETL タスクを作成できます。
説明Data Lakehouse Edition クラスターのリザーブド リソースの ACU の合計数は、リザーブド コンピューティング リソースとリザーブド ストレージ リソースの ACU の合計です。
Data Warehouse Edition クラスターの場合、各 ACU は 1 コアに相当します。 エラスティックモード の Data Warehouse Edition クラスターのリザーブド リソースの ACU の合計数は、コンピューティング リソース コアとエラスティック I/O リソース コアの合計です。 リザーブドモード の Data Warehouse Edition クラスターのリザーブド リソースの ACU の合計数は、コンピューティング リソース コアの数です。
準備
サービスリンクロールAnalyticDB for MySQL 用の を作成する
Resource Access Management (RAM) コンソール にログオンします。 左側のナビゲーションウィンドウで、[ID > ロール] を選択します。
ロールリストに AliyunServiceRoleForAnalyticDBForMySQL という名前のサービスロールが存在するかどうかを確認します。 サービスロールが存在しない場合は、ロールを作成します。
[ロールの作成] ページの左上隅にある [ロールの作成] をクリックします。
[ロールの種類を選択] ステップで、[Alibaba Cloud サービス] を選択し、[次へ] をクリックします。
[ロールの構成] ステップで、[ロールタイプ] パラメーターに [サービスロール] を選択し、[サービスの選択] ドロップダウンリストから AnalyticDB for MySQL を選択します。
[OK] をクリックします。 [ロール] ページに戻り、サービスロールが作成されていることを確認します。
RAM ユーザーに管理権限を付与する
RAM ユーザーがゼロ ETL タスクを作成および管理できるようにするには、次の操作を実行する必要があります。
RAM ユーザーに AnalyticDB for MySQL を管理する権限を付与する
RAM ユーザーが AnalyticDB for MySQL のゼロ ETL タスクを作成および管理できるようにするには、AnalyticDB for MySQL の AliyunADBFullAccess ポリシーを RAM ユーザーにアタッチする必要があります。 詳細については、「RAM ユーザーに権限を付与する」をご参照ください。
RAM ユーザーにゼロ ETL 機能を管理する権限を付与する
RAM ユーザーがゼロ ETL タスクを作成および管理できるようにするには、RAM ユーザーは、データソースと AnalyticDB for MySQL の間にデータ同期タスクを作成する権限を持っている必要があります。 RAM ユーザーがデータソースと AnalyticDB for MySQL のすべてのインスタンスまたはクラスターのデータ同期タスクを作成できるようにするカスタムポリシーを構成できます。 また、RAM ユーザーが特定のインスタンスまたはクラスターのデータ同期タスクを作成できるようにするカスタムポリシーを構成することもできます。 その後、カスタムポリシーを RAM ユーザーにアタッチできます。 詳細については、「カスタムポリシーの作成」をご参照ください。
次のセクションでは、カスタムポリシーのスクリプトについて説明します。
すべての ApsaraDB for MongoDB インスタンスと AnalyticDB for MySQL クラスターに権限を付与する
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": "dts:*", // DTS のすべてのアクションを許可
"Resource": [
"acs:adb:*:*:*", // すべての AnalyticDB for MySQL クラスター
"acs:dds:*:*:*" // すべての ApsaraDB for MongoDB インスタンス
]
},
{
"Effect": "Allow",
"Action": [
"dts:DescribeRegions", // リージョンの記述
"dts:DescribeConfigRelations", // 構成関係の記述
"dts:DescribeSrcLinkConfig", // ソースリンク構成の記述
"dts:DescribeDestLinkConfig", // 宛先リンク構成の記述
"dts:DescribeLinkConfig" // リンク構成の記述
],
"Resource": [
"acs:dts:*:*:*" // すべての DTS リソース
]
}
]
}特定の ApsaraDB for MongoDB インスタンスと特定の AnalyticDB for MySQL クラスターに権限を付与する
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": "dts:*", // DTS のすべてのアクションを許可
"Resource": [
"acs:adb:*:*:dbcluster/am-2zeod8ax4b9a****", // 特定の AnalyticDB for MySQL クラスター
"acs:dds:*:*:dbinstance/dds-t4n8aaa4dcdb****" // 特定の ApsaraDB for MongoDB インスタンス
]
},
{
"Effect": "Allow",
"Action": [
"dts:DescribeRegions", // リージョンの記述
"dts:DescribeConfigRelations", // 構成関係の記述
"dts:DescribeSrcLinkConfig", // ソースリンク構成の記述
"dts:DescribeDestLinkConfig", // 宛先リンク構成の記述
"dts:DescribeLinkConfig" // リンク構成の記述
],
"Resource": "acs:dts:*:*:*" // すべての DTS リソース
}
]
}手順
AnalyticDB for MySQL コンソール にログオンします。コンソールの左上隅で、リージョンを選択します。左側のナビゲーションウィンドウで、クラスターリスト をクリックします。クラスターリスト ページで、エディションタブをクリックします。管理するクラスターを見つけ、クラスター ID をクリックします。
クラスターのエディションに基づいて、ゼロ ETL 構成ページに移動します。
Enterprise Edition、Basic Edition、または Data Lakehouse Edition クラスターの場合: 左側のナビゲーションウィンドウで、 を選択します。
Data Warehouse Edition クラスターの場合: 左側のナビゲーションウィンドウで、 を選択します。
クリック [Zero-ETL タスクの作成] をクリックします。 ページのソースデータベースと宛先クラスタの設定ステップで、ソースインスタンスと宛先クラスタのパラメーターを設定します。[Zero-ETL タスクの作成] ページ
次の表に、ソースインスタンスのパラメーターを示します。
パラメーター
説明
タスク名
Zero-ETL タスクの名前。
データベースの種類
ソースインスタンスのデータベースエンジン。選択MongoDB。
アクセス方法
ソースインスタンスのアクセス方法。値は自動的に に設定されます。Alibaba Cloud インスタンス。
インスタンスリージョン
ApsaraDB for MongoDB インスタンスが存在するリージョン。
アーキテクチャ
ApsaraDB for MongoDB インスタンスのアーキテクチャ。 [レプリカセット] のみがサポートされています。
移行方法
増分データ同期を実行するために使用するメソッド。有効な値:
[Oplog] (推奨):
このオプションは、ソースインスタンスで oplog 機能が有効になっている場合に使用できます。
説明Oplog は、自主管理 MongoDB データベースと ApsaraDB for MongoDB インスタンスではデフォルトで有効になっています。このメソッドを使用して増分データを同期する場合、ログは高速でプルされるため、増分同期タスクのレイテンシは低くなります。そのため、ApsaraDB for MongoDB[Oplog] を選択することをお勧めします。
[ChangeStream]:
このオプションは、ソースインスタンスで変更ストリームが有効になっている場合に使用できます。
説明ソースインスタンスが Amazon DocumentDB (非エラスティッククラスター) の場合、[ChangeStream] のみを選択できます。
インスタンス ID
ApsaraDB for MongoDB インスタンスの ID です。
認証データベース
ApsaraDB for MongoDB インスタンスのデータベースアカウントが属するデータベースの名前です。データベースを変更していない場合は、admin が使用されます。
データベースアカウント
ApsaraDB for MongoDB インスタンスのデータベースアカウント名です。
データベースパスワード
ApsaraDB for MongoDB インスタンスのデータベースアカウントのパスワード。MongoDB
暗号化
MongoDB インスタンスに接続するために使用する暗号化方式。 [非暗号化] または [SSL 暗号化] を選択します。
説明SSL で暗号化 を選択した場合、最初に ApsaraDB for MongoDB インスタンスの SSL 暗号化 機能を有効にする必要があります。
次の表に、宛先クラスタのパラメーターを示します。
パラメーター
説明
データベースの種類
宛先クラスタのデータベースエンジン。値は自動的に [AnalyticDB For MySQL 3.0] に設定されます。
アクセス方法
宛先クラスタのアクセス方法。値は自動的に [Alibaba Cloud インスタンス] に設定されます。
インスタンスリージョン
AnalyticDB for MySQL クラスタが存在するリージョン。 AnalyticDB for MySQL
インスタンス ID
AnalyticDB for MySQL クラスタの ID です。
データベースアカウント
AnalyticDB for MySQL クラスターのデータベースアカウントの名前。
データベースパスワード
AnalyticDB for MySQL クラスターのデータベースアカウントのパスワード。
上記のパラメーターを構成した後、[接続テストと続行] をクリックします。ゼロ ETL の構成ステップで、次の表に示すパラメーターを構成します。
パラメータ
説明
同期する DDL 操作と DML 操作
同期する DML 操作([挿入]、[更新]、[削除])。デフォルトでは、すべての操作が選択されています。
ソースオブジェクトと選択済みオブジェクト
ソース オブジェクトと同期するオブジェクト。
詳細設定(オプション)
ソース インスタンスと宛先インスタンスおよびクラスター間の接続に失敗した場合のリトライ時間、およびソース インスタンスと宛先インスタンスおよびクラスターで発生するその他の問題のリトライ時間。
上記のパラメーターを構成した後、[次へ: タスク設定の保存と事前チェック] をクリックします。
事前チェックが成功した場合は、[開始] をクリックしてゼロ ETL タスクを開始します。
[ゼロ ETL 構成] ページで、ゼロ ETL タスクの [名前]、[ソース/変換先]、および [ステータス] パラメーターを表示できます。
ゼロ ETL タスクの監視とアラート
ゼロ ETL タスクを作成して開始した後、タスクのアラートルールを設定し、CloudMonitor コンソールでタスクの実行ステータスを監視できます。次の手順を実行します。
CloudMonitor コンソール にログインします。
監視情報を表示します。
左側のナビゲーションウィンドウで、 を選択します。
[AnalyticDB For MySQL] カードにポインターを移動し、[AnalyticDB For Mysql 3.0 - ZeroETL Latency] をクリックします。
管理するクラスターを見つけ、クラスター ID をクリックして、ゼロ ETL タスクに関する監視情報を表示します。
アラートルールを作成します。
左側のナビゲーションウィンドウで、 を選択します。
[アラートルールの作成] をクリックします。[アラートルールの作成] パネルで、ゼロ ETL タスクのアラートルールパラメーターを設定します。詳細については、「アラートルールを作成する」をご参照ください。
説明[製品] パラメーターで [AnalyticDB For Mysql 3.0 - ZeroETL Latency] を選択する必要があります。
サブスクリプションポリシーを作成します。
左側のナビゲーションウィンドウで、 を選択します。
[サブスクリプションポリシーの作成] をクリックします。[サブスクリプションポリシーの作成] ページで、ゼロ ETL タスクのサブスクリプションポリシーパラメーターを設定します。詳細については、「イベントサブスクリプションポリシーを管理する(推奨)」トピックの「サブスクリプションポリシーを作成する」セクションをご参照ください。
説明[製品]: [AnalyticDB For MySQL V3.0] を選択します。
[イベントタイプ]: [異常] または [復旧] を選択します。
[イベント名]: [zero_etl_job_abnormal] または [zero_etl_job_restore] を選択します。