다음을 통해 공유


Azure Data Factory 또는 Synapse Analytics를 사용하여 MySQL에서 데이터 복사

적용 대상: Azure Data Factory Azure Synapse Analytics

기업용 올인원 분석 솔루션인 Microsoft Fabric의 Data Factory를 사용해 보세요. Microsoft Fabric은 데이터 이동부터 데이터 과학, 실시간 분석, 비즈니스 인텔리전스 및 보고에 이르기까지 모든 것을 다룹니다. 무료로 새 평가판을 시작하는 방법을 알아봅니다!

이 문서에서는 Azure Data Factory 및 Synapse Analytics 파이프라인에서 복사 작업을 사용하여 MySQL 데이터베이스에서 데이터를 복사하는 방법을 간략하게 설명합니다. 이 문서는 복사 작업에 대한 일반적인 개요를 제공하는 복사 작업 개요 문서를 기반으로 합니다.

참고 항목

Azure Database for MySQL 서비스 간에 데이터를 복사하려면 특수 Azure Database for MySQL 커넥터를 사용합니다.

Important

권장 드라이버 버전을 사용하는 MySQL 커넥터는 향상된 네이티브 MySQL 지원을 제공합니다. 레거시 드라이버 버전에서 커넥터를 사용하는 경우 2024년 10월 31일 이전에 업그레이드하세요. 레거시 버전과 권장 버전의 차이점에 대한 자세한 내용은 이 섹션을 참조하세요.

지원되는 기능

이 MySQL 커넥터는 다음 기능에 대해 지원됩니다.

지원되는 기능 IR
복사 작업(원본/-) (1) (2)
조회 작업 (1) (2)

① Azure 통합 런타임 ② 자체 호스팅 통합 런타임

복사 작업의 원본/싱크로 지원되는 데이터 저장소 목록은 지원되는 데이터 저장소 표를 참조하세요.

이 커넥터는 권장되는 새 드라이버 버전 v2에서 MySQL 버전 5.5, 5.6, 5.7, 8.0, 8.1 및 8.2를 지원하고 레거시 드라이버 버전의 경우 5.6, 5.7 및 8.0을 지원합니다.

필수 조건

데이터 저장소가 온-프레미스 네트워크, 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 형식 속성은 MySql로 설정해야 합니다.
driverVersion 권장 드라이버 버전을 선택한 경우의 드라이버 버전입니다. 값은 v2입니다.
server MySQL 서버의 이름.
port MySQL 서버에 연결하기 위한 포트 번호입니다. 아니요
database MySQL 데이터베이스 이름입니다.
사용자 이름 사용자 이름입니다.
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>;
옵션: 사용(1) / 사용 안 함(0)(기본값)
아니요
connectVia 데이터 저장소에 연결하는 데 사용할 Integration Runtime입니다. 필수 구성 요소 섹션에서 자세히 알아보세요. 지정하지 않으면 기본 Azure Integration Runtime을 사용합니다. 아니요

예제:

{
    "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 형식 속성은 MySql로 설정해야 합니다.
connectionString Azure Database for MySQL 인스턴스에 연결하는 데 필요한 정보를 지정합니다.
Azure Key Vault에 암호를 넣고, 연결 문자열에서 password 구성을 끌어올 수도 있습니다. 자세한 내용은 다음 샘플 및 Azure Key Vault에 자격 증명 저장 문서를 참조하세요.
connectVia 데이터 저장소에 연결하는 데 사용할 Integration Runtime입니다. 필수 구성 요소 섹션에서 자세히 알아보세요. 지정하지 않으면 기본 Azure Integration Runtime을 사용합니다. 아니요

일반적인 연결 문자열은 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>;
옵션: 사용(1) / 사용 안 함(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

조회 작업 속성

속성에 대한 자세한 내용을 보려면 조회 작업을 확인하세요.

MySQL 커넥터 업그레이드

MySQL 커넥터를 업그레이드하는 데 도움이 되는 단계는 다음과 같습니다.

  1. 연결된 서비스 편집 페이지의 드라이버 버전에서 권장을 선택하고 연결된 서비스 속성을 참조하여 연결 서비스를 구성합니다.

  2. 최신 MySQL 연결 서비스의 데이터 형식 매핑은 레거시 버전의 데이터 형식 매핑과 다릅니다. 최신 데이터 형식 매핑에 대해 알아보려면 MySQL용 데이터 형식 매핑을 참조하세요.

  3. 최신 드라이버 버전 v2는 더 많은 MySQL 버전을 지원합니다. 자세한 내용은 지원되는 기능을 참조하세요.

이 섹션에서는 MySQL 커넥터 권장 버전에 대한 모범 사례를 소개합니다.

SSL 키를 로드할 수 없음

  • 증상: SSL 키와 함께 MySQL 커넥터 권장 버전을 연결 속성으로 사용하는 경우 다음 오류 메시지가 나타날 수 있습니다. 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
비트(M), M>1 UInt64 Byte[]
bool Boolean Int16
JSON 문자열 Byte[]

복사 작업에서 원본 및 싱크로 지원되는 데이터 저장소 목록은 지원되는 데이터 저장소를 참조하세요.