ETL パイプラインを構築・維持して PolarDB for MySQL から AnalyticDB for MySQL へデータを移行するには、運用上のオーバーヘッドが発生し、分析に遅れが生じます。ゼロ ETL は、PolarDB for MySQL から AnalyticDB for MySQL へデータを継続的にレプリケーションすることで、この問題を解消します。パイプラインコード、サードパーティツール、追加コストは一切不要です。
基本概念
| 用語 | 定義 |
|---|---|
| ゼロ ETL タスク | PolarDB for MySQL のソースクラスターから AnalyticDB for MySQL の送信先クラスターへ、DML および DDL の変更を継続的にレプリケーションするマネージド同期ジョブです。 |
| ソースクラスター | トランザクションデータの発生元である PolarDB for MySQL クラスターです。 |
| 送信先クラスター | レプリケーションされたデータが分析に利用できる AnalyticDB for MySQL クラスターです。 |
| ACU | AnalyticDB コンピュートユニット。クラスターが同時に実行できるゼロ ETL タスクの数を計算するために使用されるリソースユニットです。 |
サポートされるソース
ゼロ ETL は、以下のデータ同期パスをサポートしています:
PolarDB for MySQL から AnalyticDB for MySQL (本ガイド)
ApsaraDB RDS for MySQL から AnalyticDB for MySQL。詳細については、「ゼロ ETL を使用したデータ同期」をご参照ください。
メリット
パイプライン設定が不要: ソースと送信先のクラスターを選択するだけで、同期が自動的に開始されます。ETL コードやサードパーティツールは必要ありません。
追加コストが不要: ゼロ ETL タスクは無料です。AnalyticDB for MySQL で同期されたデータを分析しても、追加料金は発生しません。
複数ソースの集約: 複数の PolarDB for MySQL クラスターから単一の AnalyticDB for MySQL クラスターにデータを同期し、統合分析を実現します。
サポートされるリージョン
ゼロ ETL は、中国 (北京)、中国 (杭州)、中国 (上海)、中国 (深セン)、中国 (張家口)、中国 (青島)、中国 (広州)、中国 (香港)、シンガポール、米国 (シリコンバレー)、米国 (バージニア) の各リージョンで利用できます。
タスクの制限
AnalyticDB for MySQL クラスターあたりのゼロ ETL タスクの最大数は、クラスターの予約済みリソースの合計によって決まります:
| 予約済み ACU の合計 | ゼロ ETL タスクの最大数 |
|---|---|
| 24 ACU 未満 | 1 |
| 24 ACU 以上 | 3 + 3 × [(合計 ACU − 24) ÷ 50] (小数点以下切り捨て) |
例: 48 ACU のクラスターの場合、3 + 3 × [(48 − 24) ÷ 50] = 3 + 3 × 0 = 3 タスクとなります。
ACU の計算方法は、クラスターのエディションによって異なります:
Data Lakehouse Edition:ACU = 予約済みコンピューティングリソース ACU + 予約済みストレージリソース ACU。
Data Warehouse Edition (エラスティックモード):ACU = コンピューティングリソースコア数 + エラスティック I/O リソースコア数。
Data Warehouse Edition (予約モード):ACU = コンピューティングリソースコア数。
クラスターがタスク数の上限に達した場合は、AnalyticDB for MySQL コンソールで未使用のゼロ ETL タスクを削除するか、Data Transmission Service (DTS) コンソールで直接追加のタスクを作成してください。
前提条件
開始する前に、以下が準備できていることを確認してください:
同一リージョンにある AnalyticDB for MySQL クラスターと PolarDB for MySQL クラスター。PolarDB for MySQL クラスターを作成するには、「クラスターの購入」をご参照ください。
両方のクラスターのデータベースアカウント:
AnalyticDB for MySQL: データベースアカウントの作成
PolarDB for MySQL: データベースアカウントの作成と管理
PolarDB for MySQL クラスターでバイナリロギングが有効になっていること。詳細については、「バイナリロギングの有効化」をご参照ください。
権限の設定
AnalyticDB for MySQL のサービスリンクロールの作成
Resource Access Management (RAM) コンソールにログインします。左側のナビゲーションウィンドウで、[ID] > [ロール] を選択します。
AliyunServiceRoleForAnalyticDBForMySQL という名前のサービスリンクロールが存在するかどうかを確認します。存在しない場合は、作成します:
[ロールの作成] をクリックします。
[ロールタイプの選択] ステップで、[Alibaba Cloud サービス] を選択し、[次へ] をクリックします。
「ロールの設定」ステップで、[ロールの種類] を [サービス関連ロール] に設定し、[サービスの選択] ドロップダウンリストから AnalyticDB for MySQL を選択します。
[OK] をクリックし、ロールがリストに表示されることを確認します。
RAM ユーザーへのゼロ ETL タスク管理権限の付与
RAM ユーザーがゼロ ETL タスクを作成および管理するには、2 種類の権限が必要です。
ステップ 1:AnalyticDB for MySQL のフルアクセス権限ポリシーをアタッチする
RAM ユーザーに AliyunADBFullAccess ポリシーをアタッチします。手順については、「RAM ユーザーへの権限付与」をご参照ください。
ステップ 2:ゼロ ETL 用のカスタムポリシーを作成してアタッチする
カスタムポリシーを作成して、ソースおよび送信先クラスターに対する DTS 権限を付与し、それを RAM ユーザーにアタッチします。カスタムポリシーの作成手順については、「カスタムポリシーの作成」をご参照ください。
以下のいずれかのポリシーテンプレートを使用します:
すべての PolarDB for MySQL インスタンスと AnalyticDB for MySQL クラスターに対する権限の付与
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": "dts:*",
"Resource": [
"acs:adb:*:*:*",
"acs:polardb:*:*:*"
]
},
{
"Effect": "Allow",
"Action": [
"dts:DescribeRegions",
"dts:DescribeConfigRelations",
"dts:DescribeSrcLinkConfig",
"dts:DescribeDestLinkConfig",
"dts:DescribeLinkConfig"
],
"Resource": [
"acs:dts:*:*:*"
]
}
]
}特定の PolarDB for MySQL インスタンスと AnalyticDB for MySQL クラスターに対する権限の付与
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": "dts:*",
"Resource": [
"acs:adb:*:*:dbcluster/am-2zeod8ax4b9a****",
"acs:polardb:*:*:dbcluster/pc-bp13jqn4a26b0****"
]
},
{
"Effect": "Allow",
"Action": [
"dts:DescribeRegions",
"dts:DescribeConfigRelations",
"dts:DescribeSrcLinkConfig",
"dts:DescribeDestLinkConfig",
"dts:DescribeLinkConfig"
],
"Resource": "acs:dts:*:*:*"
}
]
}am-2zeod8ax4b9a**` をご利用の AnalyticDB for MySQL クラスター ID に、`pc-bp13jqn4a26b0** をご利用の PolarDB for MySQL クラスター ID に置き換えてください。
ゼロ ETL タスクの作成
AnalyticDB for MySQL コンソールにログインします。左上の隅で、ご利用のリージョンを選択します。左側のナビゲーションウィンドウで、[クラスター] をクリックします。[クラスター] ページで、ご利用のクラスターのエディションタブをクリックし、クラスターを見つけてその ID をクリックします。
ゼロ ETL の設定ページに移動します:
Enterprise Edition、Basic Edition、または Data Lakehouse Edition: 左側のナビゲーションウィンドウで、[データ取り込み] > [データベースデータ同期] を選択します。
Data Warehouse エディション: 左側のナビゲーションウィンドウで、[Data Transmission Service] > [Zero-ETL] を選択します。
「ゼロETLタスクの作成」をクリックします。「ゼロETLタスクの作成」ページで、ソースクラスターパラメーターを設定します:送信先クラスターパラメーターを設定します:
[SSL 暗号化] を選択する場合は、まず PolarDB for MySQL クラスターで SSL 暗号化を有効にする必要があります。詳細については、「SSL 暗号化の設定」をご参照ください。
パラメーター 説明 タスク名 ゼロ ETL タスクの名前です。 データベースタイプ ソースデータベースエンジンです。PolarDB for MySQL を選択します。 アクセス方法 自動的に Alibaba Cloud インスタンス に設定されます。 インスタンスリージョン PolarDB for MySQL クラスターが配置されているリージョンです。 PolarDB クラスター ID PolarDB for MySQL クラスターの ID です。 データベースアカウント PolarDB for MySQL クラスター用のデータベースアカウントです。 データベースパスワード データベースアカウントのパスワードです。 暗号化 接続時の暗号化方式です。非暗号化 または SSL 暗号化 を選択します。 パラメーター 説明 データベースタイプ 自動的に [AnalyticDB for MySQL 3.0] に設定されます。 アクセス方法 自動的に [Alibaba Cloud インスタンス] に設定されます。 インスタンスリージョン AnalyticDB for MySQL クラスターが存在するリージョンです。 インスタンス ID AnalyticDB for MySQL クラスターの ID です。 データベースアカウント AnalyticDB for MySQL クラスターのデータベースアカウントです。 データベースパスワード データベースアカウントのパスワードです。 [接続をテストして続行] をクリックします。同期設定を構成します:
パラメーター 説明 同期する DDL および DML 操作 同期する DML 操作 (INSERT、UPDATE、DELETE) と DDL 操作 (CREATE、ALTER、DROP、TRUNCATE) です。デフォルトではすべての操作が選択されています。 ソースオブジェクトと選択されたオブジェクト 同期するデータベースとテーブルです。 詳細設定 (オプション) ソースおよび送信先クラスターでの接続障害やその他のエラーに対する再試行間隔です。 [次へ:データベースとテーブルフィールドの設定] をクリックします。テーブルマッピングのパラメーターを設定します:
パラメーター 説明 データベース名 選択されたデータベースの名前です。 テーブル名 選択されたテーブルの名前です。 プライマリキー列 テーブルのプライマリキー列です。 分散キー テーブルの分散キー列です。 タイプ テーブルタイプ:パーティションテーブルまたはレプリケートテーブル。 定義ステータス テーブルの構成ステータスです。テーブルフィールドを設定すると、[未定義] から [定義済み] に変わります。 [次へ:タスク設定の保存と事前チェック] をクリックします。
事前チェックが正常に完了したら、[開始] をクリックします。
事前チェックに失敗した場合は、エラー詳細を確認し、PolarDB for MySQL クラスターでバイナリロギングが有効になっていること、両方のクラスターにデータベースアカウントが存在すること、RAM ユーザーが必要な権限を持っていることなど、すべての前提条件が満たされていることを確認してください。
ゼロ ETL タスクは [ゼロ ETL 設定] ページに表示され、タスクの [名前]、[ソース/送信先]、[ステータス] を確認できます。
ゼロ ETL タスクのモニタリングとアラートルールの設定
ゼロ ETL タスクを開始した後、CloudMonitor でモニタリングとアラートを設定します。
モニタリングデータの表示:
CloudMonitor コンソールにログインします。
左側のナビゲーションウィンドウで、[クラウドサービスモニタリング] > [クラウドサービスモニタリング] を選択します。
[AnalyticDB for MySQL] カードにカーソルを合わせ、[AnalyticDB for mysql 3.0 - ZeroETL Latency] をクリックします。
クラスター ID をクリックして、ゼロ ETL タスクのモニタリング詳細を表示します。
アラートルールの作成:
左側のナビゲーションウィンドウで、[アラート] > [アラートルール] を選択します。
[アラートルールの作成] をクリックし、アラートパラメーターを設定します。[製品] を [AnalyticDB For Mysql 3.0 - ZeroETL Latency] に設定します。詳細については、「アラートルールを作成する」をご参照ください。
サブスクリプションポリシーの作成:
左側のナビゲーションウィンドウで、[イベントセンター] > [イベントサブスクリプション] を選択します。
[サブスクリプションポリシーの作成] をクリックし、サブスクリプションパラメーターを設定します。詳細については、「イベントサブスクリプションポリシーの管理(推奨)」をご参照ください。
[プロダクト]: [AnalyticDB for MySQL V3.0] を選択します。
[イベントタイプ]: [異常] または [回復] を選択します。
[イベント名]: [zero_etl_job_abnormal] または [zero_etl_job_restore] を選択します。
次のステップ
ApsaraDB RDS for MySQL から AnalyticDB for MySQL へデータを同期するには、「ゼロ ETL を使用したデータ同期」をご参照ください。