Alibaba Cloud DTS 増分データ移行ベストプラクティス (Function)¶
前提条件¶
Datakit のインストール¶
1、 [統合] モジュール、 [Datakit] をクリックし、お使いの OS とシステムタイプに応じて適切なインストールコマンドを選択します。
2、 Datakit のインストールコマンドをコピーし、監視対象のサーバー上で直接実行します。 - インストールディレクトリ /usr/local/datakit/ - ログディレクトリ /var/log/datakit/ - メイン設定ファイル /usr/local/datakit/conf.d/datakit.conf - プラグイン設定ディレクトリ /usr/local/datakit/conf.d/
Function のインストール¶
1、 [統合] モジュール、 [Funciton] をクリックし、インストールパッケージをダウンロードしてインストールコマンドを実行します。
2、 インストール完了後、ブラウザで http://サーバーIPアドレス:8088 にアクセスし、初期設定画面を開きます。
3、 デフォルトのユーザー名/パスワード admin でシステムにログインします。
RAM アクセス制御¶
1、 RAM コンソール https://ram.console.aliyun.com/users にログインします。
2、 新規ユーザー作成:人員管理 - ユーザー - ユーザーの作成
3、 AccessKey ID と AccessKey Secret の CSV ファイルを保存またはダウンロードします(設定ファイルで使用します)。
4、 ユーザー認可(データ転送サービス(DTS)への読み取り専用アクセス権限)
スクリプト開発¶
Alibaba Cloud DTS 増分データ移行¶
1、 [Alibaba Cloud DTS 製品ドキュメント - 新バージョン API - DTS タスクの詳細を照会] にアクセスし、デバッグモードに入ります。
2、 SDK 依存情報 - 新バージョン SDK を見つけ、SDK インストールコマンドをコピーします。
3、 管理 - 実験的機能 - PIP ツールモジュールを有効にする
4、 Alibaba Cloud SDK 依存パッケージをインストールします。
5、 新しいスクリプトセットを作成し、スクリプトを追加します。
6、 コードを作成します。AccessKey ID、AccessKey Secret、Region を入力する必要があります。
参考ドキュメント:
# -*- coding: utf-8 -*-
import sys
import json
from typing import List
from alibabacloud_dts20200101.client import Client as Dts20200101Client
from alibabacloud_tea_openapi import models as open_api_models
from alibabacloud_dts20200101 import models as dts_20200101_models
# Alibaba Cloud SDK
class Sample:
def __init__(self):
pass
@staticmethod
def create_client(
access_key_id: str,
access_key_secret: str,
) -> Dts20200101Client:
"""
AK&SK を使用してアカウント Client を初期化します。
@param access_key_id:
@param access_key_secret:
@return: Client
@throws Exception
"""
config = open_api_models.Config(
# ご利用の AccessKey ID
access_key_id=access_key_id,
# ご利用の AccessKey Secret
access_key_secret=access_key_secret
)
# アクセスするドメイン名
config.endpoint = 'dts.cn-hangzhou.aliyuncs.com'
return Dts20200101Client(config)
@staticmethod
def main(
args: List[str],
) -> None:
client = Sample.create_client('accessKeyId', 'accessKeySecret')
describe_dts_jobs_request = dts_20200101_models.DescribeDtsJobsRequest(region='cn-hangzhou')
client.describe_dts_jobs(describe_dts_jobs_request)
@DFF.API('dts_demo', timeout=300)
def dts_demo():
# sample をインスタンス化
sample = Sample()
client = sample.create_client(
access_key_id="AccessKey ID",
access_key_secret="AccessKey Secret"
)
describe_dts_jobs_request = dts_20200101_models.DescribeDtsJobsRequest(
# DTS インスタンスのタスクタイプ。MIGRATION、SYNC、SUBSCRIBE。
region='region',job_type='MIGRATION'
)
response = client.describe_dts_jobs(describe_dts_jobs_request).to_map()
dtsjoblist = response['body']['DtsJobList'][0]
dts_instanceid = dtsjoblist['DtsInstanceID']
dts_jobname = dtsjoblist['DtsJobName']
# 増分データ移行または同期のステータス指標
datasynchronization = response['body']['DtsJobList'][0]['DataSynchronizationStatus']
dts_status = datasynchronization['Status']
dts_percent = datasynchronization['Percent']
# 行プロトコルデータ
points = [
{'measurement': 'aliyun_api_dts',
'tags': {'instanceId': dts_instanceid,'jobname': dts_jobname},
'fields': {'dts_status': dts_status,'dts_percent':dts_percent}
}
]
write_metrics(points)
def write_metrics(points: list):
datakit = DFF.SRC('datakit')
res = datakit.write_metric_many(points)
- メイン関数の前にデコレータを追加します(関数を HTTP API インターフェースとしてエクスポート)。
8、 スクリプトを公開します。
9、 定期実行タスクを追加します(データ収集頻度)。管理 - 自動トリガー設定 - 定期実行時間を選択します。
10、 追加が完了すると、すべての定期実行タスクを確認できます。
11、 データ指標を確認します - DataFlux - [メトリクス]
12、 [異常検出ライブラリ] を追加します - DTS 移行異常ルール
13、 Alibaba Cloud DTS 増分データ移行失敗時に異常イベントがトリガーされます。















