PolarDB for MySQL から AnalyticDB for MySQL にデータを移動する ETL パイプラインの構築と維持は、運用オーバーヘッドが増加し、分析が遅延します。ゼロ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 (elastic mode): ACU = コンピューティングリソースコア + エラスティック I/O リソースコア。
Data Warehouse Edition (reserved mode): 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) コンソールにログインします。左側のナビゲーションペインで、Zero-ETL タスクの作成 > [ロール] を選択します。
-
AliyunServiceRoleForAnalyticDBForMySQL という名前のサービスリンクロールが存在するかどうかを確認します。存在しない場合は、作成します。
-
[Create Role] をクリックします。
-
[Select role type] ステップで、[Alibaba Cloud Service] を選択し、[Next] をクリックします。
-
[Configure role] ステップで、[Role type] を [Service linked role] に設定し、[Select service] ドロップダウンリストから [AnalyticDB for MySQL] を選択します。
-
[OK] をクリックし、ロールがリストに表示されることを確認します。
-
RAM ユーザーへのゼロETLタスク管理権限の付与
RAM ユーザーがゼロETL タスクを作成および管理するには、2種類の権限が必要です。
ステップ1: AnalyticDB for MySQL のフルアクセスポリシーのアタッチ
AliyunADBFullAccess ポリシーを RAM ユーザーにアタッチします。手順については、「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 コンソールにログインします。左上のコーナーで、リージョンを選択します。左側のナビゲーションペインで、[Clusters] をクリックします。[Clusters] ページで、お使いのクラスターのエディションに対応するタブをクリックし、対象のクラスターを見つけて、その ID をクリックします。
-
ゼロETL設定ページに移動します。
-
Enterprise Edition、Basic Edition、または Data Lakehouse Edition: 左側のナビゲーションペインで、[Data Ingestion] > [Database Data Synchronization] を選択します。
-
Data Warehouse Edition: 左側のナビゲーションペインで、[Data Transmission Service] > [Zero-ETL] を選択します。
-
-
[Create Zero-ETL Task] をクリックします。[Create Zero-ETL Task] ページで、ソースクラスターとターゲットクラスターのパラメーターを設定します。
[SSL-encrypted] を選択した場合は、まず PolarDB for MySQL クラスターで SSL 暗号化を有効にします。「SSL暗号化の設定」をご参照ください。
パラメーター 説明 タスク名 ゼロETL タスクの名前。 データベースタイプ ソースデータベースエンジン。 [PolarDB for MySQL] を選択します。 アクセス方法 自動的に [Alibaba Cloud Instance] に設定されます。 インスタンスリージョン PolarDB for MySQL クラスターが存在するリージョン。 PolarDBクラスターID PolarDB for MySQL クラスターの ID。 データベースアカウント PolarDB for MySQL クラスターのデータベースアカウント。 データベースのパスワード データベースアカウントのパスワード。 暗号化 接続の暗号化方式。[Non-encrypted] または [SSL-encrypted] を選択します。 パラメーター 説明 データベースタイプ 自動的に [AnalyticDB for MySQL V3.0] に設定されます。 アクセス方法 自動的に [Alibaba Cloud Instance] に設定されます。 インスタンスリージョン AnalyticDB for MySQL クラスターが存在するリージョン。 インスタンスID AnalyticDB for MySQL クラスターの ID。 データベースアカウント AnalyticDB for MySQL クラスターのデータベースアカウント。 データベースのパスワード データベースアカウントのパスワード。 -
[Test Connectivity and Proceed] をクリックします。次に、同期設定を行います。
パラメーター 説明 同期するDDLおよびDML操作 同期する DML 操作 (INSERT、UPDATE、DELETE) と DDL 操作 (CREATE、ALTER、DROP、TRUNCATE)。すべての操作はデフォルトで選択されています。 ソースオブジェクトと選択したオブジェクト 同期対象のデータベースとテーブル。 詳細設定 (オプション) ソースクラスターとターゲットクラスターで接続障害やその他のエラーが発生した場合のリトライ間隔。 -
[Next: Configure Database and Table Fields] をクリックします。テーブルマッピングのパラメーターを設定します。
パラメーター 説明 データベース名 選択したデータベースの名前。 テーブル名 選択したテーブルの名前。 プライマリキー列 テーブルのプライマリキー列。 分散キー テーブルの分散キー列。 タイプ テーブルのタイプ (パーティションテーブルまたはレプリケートされたテーブル)。 定義ステータス テーブルの設定ステータス。テーブルフィールドを設定すると、[Undefined] から [Defined] に変わります。 -
[Next: Save Task Settings and Precheck] をクリックします。
-
事前チェックが正常に完了したら、[Start] をクリックします。
事前チェックが失敗した場合は、エラーの詳細を確認し、すべての前提条件 (PolarDB for MySQL クラスターでバイナリロギングが有効になっていること、両方のクラスターにデータベースアカウントが存在すること、RAM ユーザーが必要な権限を持っていること) が満たされていることを確認してください。
ゼロETL タスクが [zero-ETL configuration] ページに表示され、タスクの [Name]、[Source/Destination]、[Status] を確認できます。
ゼロETL タスクのモニタリングとアラートルール設定
ゼロETL タスクを開始したら、CloudMonitor でモニタリングとアラートを設定します。
モニタリングデータの表示:
-
CloudMonitor コンソールにログインします。
-
左側のナビゲーションペインで、[Cloud Service Monitoring] > [Cloud Service Monitoring] を選択します。
-
[AnalyticDB for MySQL] カードにカーソルを合わせ、[AnalyticDB for MySQL V3.0 - ZeroETL Latency] をクリックします。
-
クラスター ID をクリックして、ゼロETL タスクのモニタリング詳細を表示します。
アラートルールの作成:
-
左側のナビゲーションペインで、[Alerts] > [Alert Rules] を選択します。
-
[Create Alert Rule] をクリックし、アラートパラメーターを設定します。[Product] を [AnalyticDB for MySQL V3.0 - ZeroETL Latency] に設定します。詳細は、「アラートルールの作成」をご参照ください。
サブスクリプションポリシーの作成:
-
左側のナビゲーションペインで、[Event Center] > [Event Subscription] を選択します。
-
[Create Subscription Policy] をクリックし、サブスクリプションパラメーターを設定します。詳細は、「イベントサブスクリプションポリシーの管理 (推奨)」をご参照ください。
-
製品: [AnalyticDB for MySQL V3.0] を選択します。
-
イベントタイプ: [Abnormal] または [Restore] を選択します。
-
イベント名: [zero_etl_job_abnormal] または [zero_etl_job_restore] を選択します。
-
次のステップ
ApsaraDB RDS for MySQL から AnalyticDB for MySQL にデータを同期するには、「ゼロETLによるデータ同期」をご参照ください。