次の方法で共有


Azure Data Factory または Synapse Analytics を使用して MySQL からデータをコピーする

適用対象: Azure Data Factory Azure Synapse Analytics

ヒント

企業向けのオールインワン分析ソリューション、Microsoft Fabric の Data Factory をお試しください。 Microsoft Fabric は、データ移動からデータ サイエンス、リアルタイム分析、ビジネス インテリジェンス、レポートまで、あらゆるものをカバーしています。 無料で新たに試用を開始する方法については、こちらをご覧ください。

この記事では、Azure Data Factory および Synapse Analytics パイプラインでコピー アクティビティを使用して、MySQL データベースからデータをコピーする方法について説明します。 この記事は、コピー アクティビティの概要を示しているコピー アクティビティの概要に関する記事に基づいています。

Note

Azure Database for MySQL サービスとの間でデータをコピーするには、専用の Azure Database for MySQL コネクタを使用します。

重要

推奨されるドライバー バージョンを使用する MySQL コネクタでは、ネイティブ MySQL のサポートが強化されています。 従来のドライバー バージョンでコネクタを使用している場合は、2024 年 10 月 31 日より前にアップグレードしてください。 レガシ バージョンと推奨バージョンの違いの詳細については、このセクションを参照してください。

サポートされる機能

この MySQL コネクタでは、次の機能がサポートされます。

サポートされる機能 IR
Copy アクティビティ (ソース/-) ① ②
Lookup アクティビティ ① ②

① Azure 統合ランタイム ② セルフホステッド統合ランタイム

コピー アクティビティによってソースまたはシンクとしてサポートされているデータ ストアの一覧については、サポートされているデータ ストアに関する記事の表をご覧ください。

このコネクタは、推奨される新しいドライバー バージョン v2 と、レガシ ドライバー バージョンの 5.6、5.7、8.0 で、MySQL バージョン 5.5、5.6、5.7、8.0、8.1、8.2 をサポートしています。

前提条件

データ ストアがオンプレ ミスネットワーク、Azure 仮想ネットワーク、または Amazon Virtual Private Cloud 内にある場合は、それに接続するようセルフホステッド統合ランタイムを構成する必要があります。

データ ストアがマネージド クラウド データ サービスである場合は、Azure Integration Runtime を使用できます。 ファイアウォール規則で承認されている IP にアクセスが制限されている場合は、Azure Integration Runtime の IP を許可リストに追加できます。

また、Azure Data Factory のマネージド仮想ネットワーク統合ランタイム機能を使用すれば、セルフホステッド統合ランタイムをインストールして構成しなくても、オンプレミス ネットワークにアクセスすることができます。

Data Factory によってサポートされるネットワーク セキュリティ メカニズムやオプションの詳細については、「データ アクセス戦略」を参照してください。

Integration Runtime のバージョン 3.7 以降には MySQL ドライバーが組み込まれているため、ドライバーを手動でインストールする必要はありません。

作業の開始

パイプラインでコピー アクティビティを実行するには、次のいずれかのツールまたは SDK を使用します。

UI を使用して MySQL のリンク サービスを作成する

次の手順を使用して、Azure portal UI で MySQL へのリンク サービスを作成します。

  1. Azure Data Factory または Synapse ワークスペースの [管理] タブに移動し、[リンクされたサービス] を選択して、[新規] をクリックします。

  2. MySQL を検索し、MySQL コネクタを選択します。

    MySQL コネクタを選択します。

  3. サービスの詳細を構成し、接続をテストして、新しいリンク サービスを作成します。

    MySQL のリンク サービスを構成します。

コネクタの構成の詳細

次のセクションでは、MySQL コネクタに固有の Data Factory エンティティを定義するために使用されるプロパティについて詳しく説明します。

リンクされたサービスのプロパティ

推奨されるドライバー バージョンを使った場合、MySQL のリンク サービスで次のプロパティがサポートされます。

プロパティ 内容 必須
type type プロパティは、次のように設定する必要があります:MySql はい
driverVersion 推奨されるドライバー バージョンを選んだときのドライバーのバージョン。 値は v2 です。 はい
サーバー MySQL サーバーの名前。 はい
port MySQL サーバーに接続するためのポート番号。 いいえ
database MySQL データベースの名前。 はい
username ユーザー名。 はい
password 該当するユーザー名のパスワード。 安全に保存するには、このフィールドを SecureString としてマークします。 また、Azure Key Vault に格納されているシークレットを参照することもできます。 はい
sslMode このオプションは、MySQL に接続するときにドライバーで TLS 暗号化および検証を使用するかどうかを指定します。 例: SSLMode=<0/1/2/3/4>
オプション: DISABLED (0) / PREFERRED (1) (既定値) / REQUIRED (2) / VERIFY_CA (3) / VERIFY_IDENTITY (4)
はい
useSystemTrustStore このオプションは、システムの信頼ストアと指定した PEM ファイルのどちらの CA 証明書を使用するかを指定します。 例: UseSystemTrustStore=<0/1>
オプション: Enabled (1) / Disabled (0) (既定値)
いいえ
connectVia データ ストアに接続するために使用される統合ランタイム。 詳細については、「前提条件」セクションを参照してください。 指定されていない場合は、既定の Azure 統合ランタイムが使用されます。 いいえ

例:

{
    "name": "MySQLLinkedService",
    "properties": {
        "type": "MySql",
        "typeProperties": {
             "server": "<server>",
             "port": 3306,
             "database": "<database>",
             "username": "<username>",
             "password": {
                "type": "SecureString",
                "value": "<password>"
             },
             "sslmode": <sslmode>,
             "usesystemtruststore": <UseSystemTrustStore>,
             "driverVersion": "v2"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

例: パスワードを Azure Key Vault に格納する

{
    "name": "MySQLLinkedService",
    "properties": {
        "type": "MySql",
        "typeProperties": {
            "server": "<server>",
            "port": 3306,
            "database": "<database>",
            "username": "<username>",
            "sslmode": <sslmode>,
            "usesystemtruststore": <UseSystemTrustStore>,
            "password": { 
                "type": "AzureKeyVaultSecret", 
                "store": { 
                    "referenceName": "<Azure Key Vault linked service name>", 
                    "type": "LinkedServiceReference" 
                }, 
                "secretName": "<secretName>" 
            },
            "driverVersion": "v2"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

レガシ ドライバー バージョンを使った場合、次のプロパティがサポートされます。

プロパティ 内容 必須
type type プロパティは、次のように設定する必要があります:MySql はい
connectionString Azure Database for MySQL インスタンスに接続するために必要な情報を指定します。
パスワードを Azure Key Vault に格納して、接続文字列から password 構成をプルすることもできます。 詳細については、下記の例と、「Azure Key Vault への資格情報の格納」の記事を参照してください。
はい
connectVia データ ストアに接続するために使用される統合ランタイム。 詳細については、「前提条件」セクションを参照してください。 指定されていない場合は、既定の Azure 統合ランタイムが使用されます。 いいえ

一般的な接続文字列は Server=<server>;Port=<port>;Database=<database>;UID=<username>;PWD=<password> です。 ケースごとにさらに多くのプロパティを設定できます。

プロパティ 内容 必須
sslMode このオプションは、MySQL に接続するときにドライバーで TLS 暗号化および検証を使用するかどうかを指定します。 例: SSLMode=<0/1/2/3/4>
オプション: DISABLED (0) / PREFERRED (1) (既定値) / REQUIRED (2) / VERIFY_CA (3) / VERIFY_IDENTITY (4)
はい
SSLCert クライアントの ID を証明するために使用される SSL 証明書を含む、.pem ファイルの完全パスと名前。
この証明書をサーバーに送信する前に暗号化するための秘密キーを指定するには、SSLKey プロパティを使用します。
はい、双方向 SSL 検証を使用する場合。
SSLKey 双方向 SSL 検証中にクライアント側の証明書を暗号化するために使用される秘密キーを含むファイルの完全パスと名前。 はい、双方向 SSL 検証を使用する場合。
useSystemTrustStore このオプションは、システムの信頼ストアと指定した PEM ファイルのどちらの CA 証明書を使用するかを指定します。 例: UseSystemTrustStore=<0/1>
オプション: Enabled (1) / Disabled (0) (既定値)
いいえ

例:

{
    "name": "MySQLLinkedService",
    "properties": {
        "type": "MySql",
        "typeProperties": {
            "connectionString": "Server=<server>;Port=<port>;Database=<database>;UID=<username>;PWD=<password>"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

データセットのプロパティ

データセットを定義するために使用できるセクションとプロパティの完全な一覧については、データセットに関する記事をご覧ください。 このセクションでは、MySQL データセット でサポートされるプロパティの一覧を示します。

MySQL からデータをコピーする場合、次のプロパティがサポートされます。

プロパティ 内容 必須
type データセットの type プロパティは、次のように設定する必要があります:MySqlTable はい
tableName MySQL データベースのテーブルの名前。 いいえ (アクティビティ ソースの "query" が指定されている場合)

{
    "name": "MySQLDataset",
    "properties":
    {
        "type": "MySqlTable",
        "typeProperties": {},
        "schema": [],
        "linkedServiceName": {
            "referenceName": "<MySQL linked service name>",
            "type": "LinkedServiceReference"
        }
    }
}

RelationalTable 型のデータセットを使用していた場合、現状のまま引き続きサポートされますが、今後は新しいものを使用することをお勧めします。

コピー アクティビティのプロパティ

アクティビティの定義に利用できるセクションとプロパティの完全な一覧については、パイプラインに関する記事を参照してください。 このセクションでは、MySQL ソースでサポートされるプロパティの一覧を示します。

ソースとしての MySQL

MySQL からデータをコピーする場合、コピー アクティビティの source セクションで次のプロパティがサポートされます。

プロパティ 内容 必須
type コピー アクティビティのソースの type プロパティは、次のように設定する必要があります:MySqlSource はい
query カスタム SQL クエリを使用してデータを読み取ります。 (例: "SELECT * FROM MyTable")。 いいえ (データセットの "tableName" が指定されている場合)

例:

"activities":[
    {
        "name": "CopyFromMySQL",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<MySQL input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "MySqlSource",
                "query": "SELECT * FROM MyTable"
            },
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

RelationalSource 型のソースを使用していた場合は現状のまま引き続きサポートされますが、今後は新しいものを使用することをお勧めします。

MySQL のデータ型マッピング

MySQL からデータをコピーするとき、MySQL のデータ型から、サービスによって内部的に使用される中間データ型への、以下のマッピングが使用されます。 コピー アクティビティでソースのスキーマとデータ型がシンクにマッピングされるしくみについては、スキーマとデータ型のマッピングに関する記事を参照してください。

MySQL のデータ型 中間サービス データ型 中間サービス データ型 (レガシ ドライバー バージョンの場合)
bigint Int64 Int64
bigint unsigned Decimal Decimal
bit(1) UInt64 Boolean
bit(M), M>1 UInt64 Byte[]
blob Byte[] Byte[]
bool Boolean
(TreatTinyAsBoolean=false の場合は、SByte としてマップされます。TreatTinyAsBoolean は既定で true です)
Int16
char String String
date Datetime Datetime
datetime Datetime Datetime
decimal Decimal Decimal, String
double Double Double
double precision Double Double
enum String String
float Single Single
int Int32 Int32
int unsigned Int64 Int64
integer Int32 Int32
integer unsigned Int64 Int64
JSON String -
long varbinary Byte[] Byte[]
long varchar String String
longblob Byte[] Byte[]
longtext String String
mediumblob Byte[] Byte[]
mediumint Int32 Int32
mediumint unsigned Int64 Int64
mediumtext String String
numeric Decimal Decimal
real Double Double
set String String
smallint Int16 Int16
smallint unsigned Int32 Int32
text String String
time TimeSpan TimeSpan
timestamp Datetime Datetime
tinyblob Byte[] Byte[]
tinyint SByte
(tinyint(1)Boolean にマッピングされます)
Int16
tinyint unsigned Int16 Int16
tinytext String String
varchar String String
year Int Int

Lookup アクティビティのプロパティ

プロパティの詳細については、Lookup アクティビティに関するページを参照してください。

MySQL コネクタをアップグレードする

MySQL コネクタをアップグレードするのに役立つ手順を次に示します。

  1. [リンク サービスの編集] ページの [ドライバーのバージョン][推奨] を選び、「リンク サービスのプロパティ」を参照してリンク サービスを構成します。

  2. 最新の MySQL リンク サービスのデータ型マッピングは、レガシ バージョンのものとは異なります。 最新のデータ型マッピングについては、「MySQL のデータ型マッピング」をご覧ください。

  3. 最新のドライバー バージョン v2 では、より多くの MySQL バージョンがサポートされています。 詳細については、「サポートされる機能」を参照してください。

このセクションでは、MySQL コネクタの推奨バージョンのベスト プラクティスを導入します。

SSL キーを読み込めません

  • 症状: MySQL コネクタの推奨バージョンで、接続プロパティに SSL キーを使用している場合、次のエラー メッセージが表示されることがあります: Could not load the client key from your_pem_file: Unrecognized PEM header: -----BEGIN PRIVATE KEY-----

  • 原因: 推奨バージョンでは PCKS#8 形式の暗号化を解除できません。

  • 推奨事項: PEM 形式を PCKS#1 に変換します。

次のテーブルは、推奨とレガシ ドライバー バージョンを使用した MySQL のデータ型マッピングの違いを示しています。

MySQL のデータ型 中間サービス データ型 (推奨ドライバー バージョンを使用) 中間サービス データ型 (レガシ ドライバー バージョンを使用)
bit(1) UInt64 Boolean
bit(M)、M>1 UInt64 Byte[]
[bool] Boolean Int16
JSON String Byte[]

Copy アクティビティでソースおよびシンクとしてサポートされるデータ ストアの一覧については、サポートされるデータ ストアに関するセクションを参照してください。