コンテンツにスキップ

Alibaba Cloud DTS 増分データ移行ベストプラクティス (Function)


前提条件

Datakit のインストール

1、 [統合] モジュール、 [Datakit] をクリックし、お使いの OS とシステムタイプに応じて適切なインストールコマンドを選択します。

image.png

2、 Datakit のインストールコマンドをコピーし、監視対象のサーバー上で直接実行します。 - インストールディレクトリ /usr/local/datakit/ - ログディレクトリ /var/log/datakit/ - メイン設定ファイル /usr/local/datakit/conf.d/datakit.conf - プラグイン設定ディレクトリ /usr/local/datakit/conf.d/

Function のインストール

1、 [統合] モジュール、 [Funciton] をクリックし、インストールパッケージをダウンロードしてインストールコマンドを実行します。

image.png

2、 インストール完了後、ブラウザで http://サーバーIPアドレス:8088 にアクセスし、初期設定画面を開きます。

image.png

3、 デフォルトのユーザー名/パスワード admin でシステムにログインします。

image.png

RAM アクセス制御

1、 RAM コンソール https://ram.console.aliyun.com/users にログインします。

2、 新規ユーザー作成:人員管理 - ユーザー - ユーザーの作成

image.png

3、 AccessKey ID と AccessKey Secret の CSV ファイルを保存またはダウンロードします(設定ファイルで使用します)。

4、 ユーザー認可(データ転送サービス(DTS)への読み取り専用アクセス権限)

image.png

スクリプト開発

Alibaba Cloud DTS 増分データ移行

1、 [Alibaba Cloud DTS 製品ドキュメント - 新バージョン API - DTS タスクの詳細を照会] にアクセスし、デバッグモードに入ります。

2、 SDK 依存情報 - 新バージョン SDK を見つけ、SDK インストールコマンドをコピーします。

image.png

3、 管理 - 実験的機能 - PIP ツールモジュールを有効にする

image.png

4、 Alibaba Cloud SDK 依存パッケージをインストールします。

image.png

5、 新しいスクリプトセットを作成し、スクリプトを追加します。

image.png

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)
  1. メイン関数の前にデコレータを追加します(関数を HTTP API インターフェースとしてエクスポート)。
@DFF.API('名称', timeout=300)

8、 スクリプトを公開します。

image.png

9、 定期実行タスクを追加します(データ収集頻度)。管理 - 自動トリガー設定 - 定期実行時間を選択します。

image.png

10、 追加が完了すると、すべての定期実行タスクを確認できます。

image.png

11、 データ指標を確認します - DataFlux - [メトリクス]

image.png

12、 [異常検出ライブラリ] を追加します - DTS 移行異常ルール

image.png

13、 Alibaba Cloud DTS 増分データ移行失敗時に異常イベントがトリガーされます。

image.png

フィードバック

このページは役に立ちましたか?