AnalyticDB for MySQL は、ApsaraDB RDS for MySQL から 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 へのデータ同期タスク。
PolarDB for MySQL から AnalyticDB for MySQL へのデータ同期タスク。 詳細については、「ゼロ ETL を使用したデータの同期」をご参照ください。
前提条件
同じリージョンに AnalyticDB for MySQL クラスタと ApsaraDB RDS for MySQL インスタンスが作成されています。 ApsaraDB RDS for MySQL インスタンスの作成方法については、「ApsaraDB RDS for MySQL インスタンスの作成」をご参照ください。
AnalyticDB for MySQL クラスタと ApsaraDB RDS for MySQL インスタンス用にデータベースアカウントが作成されています。 詳細については、「データベースアカウントの作成」および「アカウントの作成」をご参照ください。
課金ルール
データ同期タスクには課金されません。
使用上の注意
ゼロ 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 compute units(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 と予約済みストレージリソースの 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 RDS for MySQL インスタンスと AnalyticDB for MySQL クラスタに権限を付与する
{
"Version": "1",
"Statement": [
{
"Effect": "Allow", // 許可
"Action": "dts:*", // DTS のすべてのアクション
"Resource": [
"acs:adb:*:*:*", // すべての AnalyticDB for MySQL リソース
"acs:rds:*:*:*", // すべての RDS リソース
]
},
{
"Effect": "Allow", // 許可
"Action": [
"dts:DescribeRegions", // リージョンの取得
"dts:DescribeConfigRelations", // 構成関係の取得
"dts:DescribeSrcLinkConfig", // ソースリンク構成の取得
"dts:DescribeDestLinkConfig", // 宛先リンク構成の取得
"dts:DescribeLinkConfig" // リンク構成の取得
],
"Resource": [
"acs:dts:*:*:*" // すべての DTS リソース
]
}
]
}
特定の ApsaraDB RDS for MySQL インスタンスと特定の AnalyticDB for MySQL クラスタに権限を付与する
{
"Version": "1",
"Statement": [
{
"Effect": "Allow", // 許可
"Action": "dts:*", // DTS のすべてのアクション
"Resource": [
"acs:adb:*:*:dbcluster/am-2zeod8ax4b9a****", // 特定の AnalyticDB for MySQL クラスタ
"acs:rds:*:*:dbinstance/rm-2ze6fs8ouh43****", // 特定の RDS インスタンス
]
},
{
"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 クラスタの場合: 左側のナビゲーションウィンドウで、< を選択します。
[ゼロ ETL タスクの作成] をクリックします。 [ゼロ ETL タスクの作成] ページの [ソースデータベースと宛先データベースの設定] ステップで、ソースインスタンスと宛先クラスタのパラメータを設定します。
次の表に、ソースインスタンスのパラメータを示します。
パラメータ
説明
タスク名
ゼロ ETL タスクの名前。
データベースタイプ
ソースインスタンスのデータベースエンジン。 [RDS For MySQL] を選択します。
アクセス方法
ソースインスタンスのアクセス方法。 値は自動的に [Alibaba Cloud インスタンス] に設定されます。
インスタンスリージョン
ApsaraDB RDS for MySQL インスタンスが存在するリージョン。
RDS インスタンス ID
ApsaraDB RDS for MySQL インスタンスの ID。
データベースアカウント
ApsaraDB RDS for MySQL インスタンスのデータベースアカウントの名前。
データベースパスワード
ApsaraDB RDS for MySQL インスタンスのデータベースアカウントのパスワード。
暗号化
ApsaraDB RDS for MySQL インスタンスへの接続に使用する暗号化方式。 [非暗号化] または [SSL 暗号化] を選択します。
説明[SSL 暗号化] を選択した場合は、最初に ApsaraDB RDS for MySQL インスタンスの SSL 暗号化機能を有効にする必要があります。 詳細については、「クラウド証明書を使用して SSL 暗号化を有効にする」をご参照ください。
次の表に、宛先クラスタのパラメータを示します。
パラメータ
説明
データベースタイプ
宛先クラスタのデータベースエンジン。 値は自動的に [AnalyticDB For MySQL 3.0] に設定されます。
アクセス方法
宛先クラスタのアクセス方法。 値は自動的に [Alibaba Cloud インスタンス] に設定されます。Alibaba Cloud インスタンス
インスタンスリージョン
AnalyticDB for MySQL クラスタが存在するリージョン。
インスタンス ID
AnalyticDB for MySQL クラスタの ID。
データベースアカウント
AnalyticDB for MySQL クラスタのデータベースアカウントの名前。
データベースパスワード
AnalyticDB for MySQL クラスタのデータベースアカウントのパスワード。
上記のパラメータを設定した後、[接続テストと続行] をクリックします。 [ゼロ ETL の設定] ステップで、次の表に示すパラメータを設定します。
パラメータ
説明
同期する DDL 操作と DML 操作
同期する DML 操作([挿入]、[更新]、[削除])と DDL 操作([作成]、[変更]、[削除]、[切り捨て])。 デフォルトでは、すべての操作が選択されています。
ソースオブジェクトと選択済みオブジェクト
ソースオブジェクトと同期するオブジェクト。
詳細設定(オプション)
ソースインスタンスと宛先インスタンスおよびクラスタ間の接続失敗の再試行時間、およびソースインスタンスと宛先インスタンスおよびクラスタで発生するその他の問題の再試行時間。
上記のパラメーターを構成した後、[次へ: データベースとテーブルのフィールドを構成する] をクリックします。 [データベース、テーブル、および列の構成] ステップで、次の表に示すパラメーターを構成します。
パラメータ
説明
データベース名
選択したデータベースの名前。
テーブル名
選択したテーブルの名前。
プライマリキー列
選択したテーブルのプライマリキー列。
分散キー
選択したテーブルの分散キー列。
タイプ
選択したテーブルのタイプ。パーティションテーブルまたはレプリケートされたテーブルです。
定義ステータス
選択したテーブルのステータス。 テーブルフィールドを設定すると、テーブルのステータスが [未定義] から [定義済み] に変わります。
上記のパラメータを設定した後、[次へ: タスク設定の保存と事前チェック] をクリックします。
事前チェックが成功したら、[開始] をクリックしてゼロ 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] を選択します。