Udostępnij za pośrednictwem


Kopiowanie danych z bazy danych MySQL przy użyciu usługi Azure Data Factory lub Synapse Analytics

DOTYCZY: Azure Data Factory Azure Synapse Analytics

Napiwek

Wypróbuj usługę Data Factory w usłudze Microsoft Fabric — rozwiązanie analityczne typu all-in-one dla przedsiębiorstw. Usługa Microsoft Fabric obejmuje wszystko, od przenoszenia danych do nauki o danych, analizy w czasie rzeczywistym, analizy biznesowej i raportowania. Dowiedz się, jak bezpłatnie rozpocząć nową wersję próbną !

W tym artykule opisano sposób używania działania kopiowania w potokach usługi Azure Data Factory i usługi Synapse Analytics do kopiowania danych z bazy danych MySQL. Jest on oparty na artykule omówienie działania kopiowania, który przedstawia ogólne omówienie działania kopiowania.

Uwaga

Aby skopiować dane z usługi Azure Database for MySQL lub do usługi, użyj wyspecjalizowanego łącznika usługi Azure Database for MySQL.

Ważne

Łącznik MySQL korzystający z zalecanej wersji sterownika zapewnia ulepszoną natywną obsługę bazy danych MySQL. Jeśli używasz łącznika ze starszą wersją sterownika, uaktualnij go przed 31 października 2024 r. Zapoznaj się z tą sekcją , aby uzyskać szczegółowe informacje na temat różnicy między starszą i zalecaną wersją.

Obsługiwane możliwości

Ten łącznik MySQL jest obsługiwany w następujących funkcjach:

Obsługiwane możliwości IR
działanie Kopiuj (źródło/-) (1) (2)
Działanie Lookup (1) (2)

(1) Środowisko Azure Integration Runtime (2) Self-hosted Integration Runtime

Aby uzyskać listę magazynów danych obsługiwanych jako źródła/ujścia przez działanie kopiowania, zobacz tabelę Obsługiwane magazyny danych.

Ten łącznik obsługuje program MySQL w wersji 5.5, 5.6, 5.7, 8.0, 8.1 i 8.2 w ramach zalecanej nowej wersji sterownika w wersji 2 i 5.6, 5.7 i 8.0 dla starszej wersji sterownika.

Wymagania wstępne

Jeśli magazyn danych znajduje się wewnątrz sieci lokalnej, sieci wirtualnej platformy Azure lub chmury prywatnej Amazon Virtual, musisz skonfigurować własne środowisko Integration Runtime , aby się z nim połączyć.

Jeśli magazyn danych jest zarządzaną usługą danych w chmurze, możesz użyć środowiska Azure Integration Runtime. Jeśli dostęp jest ograniczony do adresów IP zatwierdzonych w regułach zapory, możesz dodać adresy IP środowiska Azure Integration Runtime do listy dozwolonych.

Możesz również użyć funkcji środowiska Integration Runtime zarządzanej sieci wirtualnej w usłudze Azure Data Factory, aby uzyskać dostęp do sieci lokalnej bez instalowania i konfigurowania własnego środowiska Integration Runtime.

Aby uzyskać więcej informacji na temat mechanizmów zabezpieczeń sieci i opcji obsługiwanych przez usługę Data Factory, zobacz Strategie dostępu do danych.

Środowisko Integration Runtime udostępnia wbudowany sterownik MySQL począwszy od wersji 3.7, dlatego nie trzeba ręcznie instalować żadnego sterownika.

Wprowadzenie

Aby wykonać działanie Kopiuj za pomocą potoku, możesz użyć jednego z następujących narzędzi lub zestawów SDK:

Tworzenie połączonej usługi z bazą danych MySQL przy użyciu interfejsu użytkownika

Wykonaj poniższe kroki, aby utworzyć połączoną usługę z bazą danych MySQL w interfejsie użytkownika witryny Azure Portal.

  1. Przejdź do karty Zarządzanie w obszarze roboczym usługi Azure Data Factory lub Synapse i wybierz pozycję Połączone usługi, a następnie kliknij pozycję Nowy:

  2. Wyszukaj pozycję MySQL i wybierz łącznik MySQL.

    Wybierz łącznik MySQL.

  3. Skonfiguruj szczegóły usługi, przetestuj połączenie i utwórz nową połączoną usługę.

    Skonfiguruj połączoną usługę w usłudze MySQL.

Szczegóły konfiguracji łącznika

Poniższe sekcje zawierają szczegółowe informacje o właściwościach używanych do definiowania jednostek usługi Data Factory specyficznych dla łącznika MySQL.

Właściwości połączonej usługi

Jeśli używasz zalecanej wersji sterownika, następujące właściwości są obsługiwane w przypadku połączonej usługi MySQL:

Właściwości Opis Wymagania
type Właściwość type musi być ustawiona na: MySql Tak
driverVersion Wersja sterownika po wybraniu zalecanej wersji sterownika. Wartość to v2. Tak
serwer Nazwa serwera MySQL. Tak
port Numer portu do nawiązania połączenia z serwerem MySQL. Nie.
database Nazwa bazy danych MySQL. Tak
nazwa użytkownika Nazwa użytkownika. Tak
hasło Hasło dla nazwy użytkownika. Oznacz to pole jako SecureString, aby bezpiecznie je przechowywać. Możesz też odwołać się do wpisu tajnego przechowywanego w usłudze Azure Key Vault. Tak
sslMode Ta opcja określa, czy sterownik używa szyfrowania TLS i weryfikacji podczas nawiązywania połączenia z bazą danych MySQL. Np. SSLMode=<0/1/2/3/4>.
Opcje: WYŁĄCZONE (0) / PREFEROWANE (1) (ustawienie domyślne) / WYMAGANE (2) / VERIFY_CA (3) / VERIFY_IDENTITY (4)
Tak
useSystemTrustStore Ta opcja określa, czy używać certyfikatu urzędu certyfikacji z magazynu zaufania systemu, czy z określonego pliku PEM. Np. UseSystemTrustStore=<0/1>;
Opcje: Włączone (1) / Wyłączone (0) (ustawienie domyślne)
Nie.
connectVia Środowisko Integration Runtime do nawiązania połączenia z magazynem danych. Dowiedz się więcej w sekcji Wymagania wstępne . Jeśli nie zostanie określony, używa domyślnego środowiska Azure Integration Runtime. Nie.

Przykład:

{
    "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"
        }
    }
}

Przykład: przechowywanie hasła w usłudze 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"
        }
    }
}

Jeśli używasz starszej wersji sterownika, obsługiwane są następujące właściwości:

Właściwości Opis Wymagania
type Właściwość type musi być ustawiona na: MySql Tak
Parametry połączenia Określ informacje potrzebne do nawiązania połączenia z wystąpieniem usługi Azure Database for MySQL.
Możesz również umieścić hasło w usłudze Azure Key Vault i ściągnąć konfigurację password z parametry połączenia. Zapoznaj się z poniższymi przykładami i artykułem Store credentials in Azure Key Vault (Przechowywanie poświadczeń w usłudze Azure Key Vault ), aby uzyskać więcej szczegółów.
Tak
connectVia Środowisko Integration Runtime do nawiązania połączenia z magazynem danych. Dowiedz się więcej w sekcji Wymagania wstępne . Jeśli nie zostanie określony, używa domyślnego środowiska Azure Integration Runtime. Nie.

Typowy parametry połączenia to Server=<server>;Port=<port>;Database=<database>;UID=<username>;PWD=<password>. Więcej właściwości, które można ustawić w danym przypadku:

Właściwości Opis Wymagania
sslMode Ta opcja określa, czy sterownik używa szyfrowania TLS i weryfikacji podczas nawiązywania połączenia z bazą danych MySQL. Np. SSLMode=<0/1/2/3/4>.
Opcje: WYŁĄCZONE (0) / PREFEROWANE (1) (ustawienie domyślne) / WYMAGANE (2) / VERIFY_CA (3) / VERIFY_IDENTITY (4)
Tak
SslCert Pełna ścieżka i nazwa pliku pem zawierającego certyfikat SSL używany do udowodnienia tożsamości klienta.
Aby określić klucz prywatny do szyfrowania tego certyfikatu przed wysłaniem go do serwera, użyj SSLKey właściwości .
Tak, jeśli używasz dwukierunkowej weryfikacji SSL.
Klucz SSLKey Pełna ścieżka i nazwa pliku zawierającego klucz prywatny używany do szyfrowania certyfikatu po stronie klienta podczas dwukierunkowej weryfikacji SSL. Tak, jeśli używasz dwukierunkowej weryfikacji SSL.
useSystemTrustStore Ta opcja określa, czy używać certyfikatu urzędu certyfikacji z magazynu zaufania systemu, czy z określonego pliku PEM. Np. UseSystemTrustStore=<0/1>;
Opcje: Włączone (1) / Wyłączone (0) (ustawienie domyślne)
Nie.

Przykład:

{
    "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"
        }
    }
}

Właściwości zestawu danych

Pełna lista sekcji i właściwości dostępnych do definiowania zestawów danych znajduje się w artykule dotyczącym zestawów danych. Ta sekcja zawiera listę właściwości obsługiwanych przez zestaw danych MySQL.

Aby skopiować dane z programu MySQL, obsługiwane są następujące właściwości:

Właściwości Opis Wymagania
type Właściwość type zestawu danych musi być ustawiona na: MySqlTable Tak
tableName Nazwa tabeli w bazie danych MySQL. Nie (jeśli określono "zapytanie" w źródle działania)

Przykład

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

Jeśli używasz RelationalTable wpisanego zestawu danych, nadal jest on obsługiwany w stanie rzeczywistym, podczas gdy zaleca się korzystanie z nowego zestawu danych w przyszłości.

Właściwości działania kopiowania

Aby uzyskać pełną listę sekcji i właściwości dostępnych do definiowania działań, zobacz artykuł Pipelines (Potoki ). Ta sekcja zawiera listę właściwości obsługiwanych przez źródło mySQL.

MySQL jako źródło

Aby skopiować dane z programu MySQL, w sekcji źródła działania kopiowania są obsługiwane następujące właściwości:

Właściwości Opis Wymagania
type Właściwość type źródła działania kopiowania musi być ustawiona na: MySqlSource Tak
zapytanie Użyj niestandardowego zapytania SQL, aby odczytać dane. Na przykład: "SELECT * FROM MyTable". Nie (jeśli określono "tableName" w zestawie danych)

Przykład:

"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>"
            }
        }
    }
]

Jeśli używasz RelationalSource wpisanego źródła, nadal jest obsługiwana w taki sposób, jak jest, podczas gdy sugerowane jest użycie nowego źródła w przyszłości.

Mapowanie typów danych dla bazy danych MySQL

Podczas kopiowania danych z programu MySQL następujące mapowania są używane z typów danych MySQL do tymczasowych typów danych używanych przez usługę wewnętrznie. Zobacz Mapowania schematu i typu danych, aby dowiedzieć się, jak działanie kopiowania mapuje schemat źródłowy i typ danych na ujście.

Typ danych MySQL Typ danych usługi tymczasowej Typ danych usługi tymczasowej (dla starszej wersji sterownika)
bigint Int64 Int64
bigint unsigned Decimal Decimal
bit(1) UInt64 Boolean
bit(M), M>1 UInt64 Byte[]
blob Byte[] Byte[]
bool Boolean
(Jeśli TreatTinyAsBoolean=false, jest mapowany jako SByte. TreatTinyAsBoolean ma wartość true domyślnie )
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) jest mapowany na Boolean)
Int16
tinyint unsigned Int16 Int16
tinytext String String
varchar String String
year Int Int

Właściwości działania wyszukiwania

Aby dowiedzieć się więcej o właściwościach, sprawdź działanie Wyszukiwania.

Uaktualnianie łącznika MySQL

Poniżej przedstawiono kroki ułatwiające uaktualnienie łącznika MySQL:

  1. Na stronie Edytowanie połączonej usługi wybierz pozycję Zalecane w obszarze Wersja sterownika i skonfiguruj połączoną usługę, odwołując się do właściwości połączonej usługi.

  2. Mapowanie typu danych dla najnowszej połączonej usługi MySQL różni się od tego w przypadku starszej wersji. Aby dowiedzieć się więcej na temat najnowszego mapowania typów danych, zobacz Mapowanie typów danych dla bazy danych MySQL.

  3. Najnowsza wersja sterownika w wersji 2 obsługuje więcej wersji programu MySQL. Aby uzyskać więcej informacji, zobacz Obsługiwane możliwości.

W tej sekcji przedstawiono najlepsze rozwiązania dotyczące zalecanej wersji łącznika MySQL.

Nie można załadować klucza SSL

  • Objawy: Jeśli używasz zalecanej wersji łącznika MySQL z kluczem SSL jako właściwością połączenia, może zostać wyświetlony następujący komunikat o błędzie: Could not load the client key from your_pem_file: Unrecognized PEM header: -----BEGIN PRIVATE KEY-----

  • Przyczyna: Zalecana wersja nie może odszyfrować formatu PCKS#8.

  • Zalecenie: przekonwertuj format PEM na PCKS#1.

W poniższej tabeli przedstawiono różnice mapowania typów danych między bazą danych MySQL przy użyciu zalecanej i starszej wersji sterownika.

Typ danych MySQL Typ danych usługi tymczasowej (przy użyciu zalecanej wersji sterownika) Typ danych usługi tymczasowej (przy użyciu starszej wersji sterownika)
bit(1) UInt64 Wartość logiczna
bit(M), M>1 UInt64 Bajt[]
bool Wartość logiczna Int16
JSON String Bajt[]

Aby uzyskać listę magazynów danych obsługiwanych jako źródła i ujścia działania kopiowania, zobacz obsługiwane magazyny danych.