Udostępnij przez


Kopiowanie i przekształcanie danych w usłudze Azure Database for 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, jak używać aktywności kopiowania w potokach usługi Azure Data Factory lub Synapse Analytics do kopiowania danych z i do usługi Azure Database for MySQL oraz jak używać Przepływu danych do przekształcania danych w usłudze Azure Database for MySQL. Aby dowiedzieć się więcej, przeczytaj artykuły wprowadzające dotyczące usług Azure Data Factory i Synapse Analytics.

Ten łącznik jest przeznaczony dla

Aby skopiować dane z ogólnej bazy danych MySQL znajdującej się lokalnie lub w chmurze, użyj łącznika MySQL.

Wymagania wstępne

Ten szybki start wymaga następujących zasobów i konfiguracji wymienionych poniżej na początek:

  • Istniejący pojedynczy serwer usługi Azure Database for MySQL lub serwer elastyczny MySQL z publicznym dostępem lub prywatnym punktem końcowym.
  • Włącz opcję Zezwalaj na dostęp publiczny z dowolnej usługi platformy Azure na tym serwerze na stronie sieci serwera MySQL. Umożliwi to korzystanie z programu Data Factory Studio.

Obsługiwane możliwości

Ten konektor usługi Azure Database for MySQL jest obsługiwany w przypadku następujących funkcjonalności:

Obsługiwane możliwości środowisko IR Zarządzany prywatny punkt końcowy
Działanie kopiowania (źródło/ujście) (1) (2)
Mapowanie przepływu danych (źródło/ujście) (1)
Działanie Wyszukiwania (1) (2)

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

Wprowadzenie

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

Tworzenie połączonej usługi z usługą Azure Database for MySQL przy użyciu interfejsu użytkownika

Wykonaj poniższe kroki, aby utworzyć połączoną usługę z usługą Azure Database for 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 MySQL i wybierz łącznik Azure Database for MySQL.

    Wybierz łącznik usługi Azure Database for MySQL.

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

    Konfigurowanie połączonej usługi z usługą Azure Database for 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 usługi Azure Database for MySQL.

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

Następujące właściwości są obsługiwane w przypadku połączonej usługi Azure Database for MySQL:

Nieruchomość Opis Wymagane
typ Właściwość type musi być ustawiona na: AzureMySql 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 wydobyć konfigurację password z parametrów połączenia. Zapoznaj się z poniższymi przykładami oraz artykułem "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. Możesz użyć środowiska Azure Integration Runtime lub własnego środowiska Integration Runtime (jeśli magazyn danych znajduje się w sieci prywatnej). Jeśli nie zostanie określony, używa domyślnego środowiska Azure Integration Runtime. Nie.

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

Nieruchomość Opis Opcje Wymagane
Tryb SSL 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> WYŁĄCZONE (0) / PREFEROWANE (1) (ustawienie domyślne) / WYMAGANE (2) / VERIFY_CA (3) / VERIFY_IDENTITY (4) Nie.
UseSystemTrustStore Ta opcja określa, czy używać certyfikatu CA z magazynu zaufania systemu, czy z podanego pliku PEM. Np. UseSystemTrustStore=<0/1>; Włączone (1) / Wyłączone (0) (ustawienie domyślne) Nie.

Przykład:

{
    "name": "AzureDatabaseForMySQLLinkedService",
    "properties": {
        "type": "AzureMySql",
        "typeProperties": {
            "connectionString": "Server=<server>.mysql.database.azure.com;Port=<port>;Database=<database>;UID=<username>;PWD=<password>"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Przykład: przechowywanie hasła w usłudze Azure Key Vault

{
    "name": "AzureDatabaseForMySQLLinkedService",
    "properties": {
        "type": "AzureMySql",
        "typeProperties": {
            "connectionString": "Server=<server>.mysql.database.azure.com;Port=<port>;Database=<database>;UID=<username>;",
            "password": { 
                "type": "AzureKeyVaultSecret", 
                "store": { 
                    "referenceName": "<Azure Key Vault linked service name>", 
                    "type": "LinkedServiceReference" 
                }, 
                "secretName": "<secretName>" 
            }
        },
        "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 usługi Azure Database for MySQL.

Aby skopiować dane z usługi Azure Database for MySQL, ustaw właściwość type zestawu danych na AzureMySqlTable. Obsługiwane są następujące właściwości:

Nieruchomość Opis Wymagane
typ Właściwość type zestawu danych musi być ustawiona na: AzureMySqlTable Tak
nazwaTabeli Nazwa tabeli w bazie danych MySQL. Nie (jeśli "zapytanie" jest określone w źródle działania)

Przykład

{
    "name": "AzureMySQLDataset",
    "properties": {
        "type": "AzureMySqlTable",
        "linkedServiceName": {
            "referenceName": "<Azure MySQL linked service name>",
            "type": "LinkedServiceReference"
        },
        "typeProperties": {
            "tableName": "<table name>"
        }
    }
}

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 i miejsce docelowe bazy danych Azure Database for MySQL.

Usługa Azure Database for MySQL jako źródło

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

Nieruchomość Opis Wymagane
typ Właściwość type źródła działania kopiowania musi być ustawiona na: AzureMySqlSource Tak
kwerenda Użyj niestandardowego zapytania SQL, aby odczytać dane. Na przykład: "SELECT * FROM MyTable". Nie (jeśli w zestawie danych określono "tableName")
queryCommandTimeout Czas oczekiwania przed przekroczeniem limitu czasu żądania zapytania. Wartość domyślna to 120 minut (02:00:00) Nie.

Przykład:

"activities":[
    {
        "name": "CopyFromAzureDatabaseForMySQL",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<Azure MySQL input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "AzureMySqlSource",
                "query": "<custom query e.g. SELECT * FROM MyTable>"
            },
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

Usługa Azure Database for MySQL jako odbiornik

Aby skopiować dane do usługi Azure Database for MySQL, w sekcji ujścia działania kopiowania są obsługiwane następujące właściwości:

Nieruchomość Opis Wymagane
typ Właściwość type ujścia działania kopiowania musi być ustawiona na: AzureMySqlSink Tak
preCopyScript Określ zapytanie SQL dla działania kopiowania do wykonania przed zapisaniem danych w usłudze Azure Database for MySQL w każdym uruchomieniu. Za pomocą tej właściwości można wyczyścić wstępnie załadowane dane. Nie.
writeBatchSize Wstawia dane do tabeli usługi Azure Database for MySQL, gdy rozmiar buforu osiągnie wartość writeBatchSize.
Dozwolona wartość to liczba całkowita reprezentująca liczbę wierszy.
Nie (wartość domyślna to 10 000)
writeBatchTimeout Czas oczekiwania na ukończenie operacji wstawiania wsadowego, zanim nastąpi przekroczenie limitu czasu.
Dozwolone wartości to przedziały czasu. Przykładem jest 00:30:00 (30 minut).
Nie (wartość domyślna to 00:00:30)

Przykład:

"activities":[
    {
        "name": "CopyToAzureDatabaseForMySQL",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<Azure MySQL output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "<source type>"
            },
            "sink": {
                "type": "AzureMySqlSink",
                "preCopyScript": "<custom SQL script>",
                "writeBatchSize": 100000
            }
        }
    }
]

Właściwości mapowania przepływu danych

Podczas przekształcania danych w danych mapowanych można odczytywać i zapisywać tabele z usługi Azure Database for MySQL. Aby uzyskać więcej informacji, zobacz przekształcanie źródła i przekształcanie ujścia w przepływach danych mapowania. Możesz użyć zestawu danych usługi Azure Database for MySQL lub wbudowanego zestawu danych jako typu źródła i ujścia.

Przekształcanie źródła

W poniższej tabeli wymieniono właściwości obsługiwane przez źródło usługi Azure Database for MySQL. Te właściwości można edytować na karcie Opcje źródła.

Nazwa/nazwisko Opis Wymagane Dozwolone wartości Właściwość skryptu przepływu danych
Stół Jeśli wybierzesz Tabelę jako wejście danych, przepływ danych pobiera wszystkie dane z tabeli określonej w zestawie danych. Nie. - (tylko w przypadku wbudowanego zestawu danych)
nazwaTabeli
Zapytanie Jeśli wybierzesz pozycję Zapytanie jako dane wejściowe, określ zapytanie SQL, aby pobrać dane ze źródła, które zastępuje dowolną tabelę, którą określisz w zestawie danych. Korzystanie z zapytań to doskonały sposób na zmniejszenie liczby wierszy na potrzeby testowania lub wyszukiwania.

Klauzula Order By nie jest obsługiwana, ale można ustawić pełną instrukcję SELECT FROM. Można również użyć funkcji tabeli zdefiniowanych przez użytkownika. select * from udfGetData() jest funkcją UDF w SQL, która zwraca tabelę, której można użyć w przepływie danych.
Przykład zapytania: select * from mytable where customerId > 1000 and customerId < 2000 lub select * from "MyTable".
Nie. String kwerenda
Procedura składowana Jeśli wybierzesz procedurę składowaną jako dane wejściowe, określ nazwę procedury składowanej do odczytu danych z tabeli źródłowej lub wybierz pozycję Odśwież, aby poprosić usługę o odnalezienie nazw procedur. Tak (jeśli wybierzesz procedurę składowaną jako dane wejściowe) String procedureName
Parametry procedury Jeśli wybierzesz procedurę składowaną jako dane wejściowe, określ parametry wejściowe procedury składowanej w kolejności ustawionej w procedurze lub wybierz pozycję Importuj, aby zaimportować wszystkie parametry procedury przy użyciu formularza @paraName. Nie. Tablica Wejścia
Rozmiar partii Określ rozmiar partii, aby podzielić duże dane na partie. Nie. Integer batchSize
Poziom izolacji Wybierz jeden z następujących poziomów izolacji:
- Odczyt zatwierdzony
- Odczyt niezatwierdzony (ustawienie domyślne)
- Powtarzalny odczyt
- Serializowalny
- Brak (ignoruj poziom izolacji)
Nie. READ_COMMITTED (poziom izolacji transakcji "odczyt zatwierdzony")
READ_UNCOMMITTED (odczyt niezadeklarowany)
POWTARZALNY ODCZYT
SERIALIZOWALNY
BRAK
poziom izolacji

Przykładowy skrypt źródłowy usługi Azure Database for MySQL

Jeśli używasz usługi Azure Database for MySQL jako typu źródła, skojarzony skrypt przepływu danych to:

source(allowSchemaDrift: true,
    validateSchema: false,
    isolationLevel: 'READ_UNCOMMITTED',
    query: 'select * from mytable',
    format: 'query') ~> AzureMySQLSource

Przekształcenie zlewu

W poniższej tabeli wymieniono właściwości obsługiwane przez ujście usługi Azure Database for MySQL. Te właściwości można edytować na karcie Opcje wyjścia.

Nazwa/nazwisko Opis Wymagane Dozwolone wartości Właściwość skryptu przepływu danych
Metoda aktualizacji Określ, jakie operacje są dozwolone w miejscu docelowym bazy danych. Ustawieniem domyślnym jest zezwalanie tylko na wstawianie.
Aby zaktualizować, wprowadzić lub usunąć wiersze, wymagane jest przekształcenie alter wiersza do tagowania ich dla tych akcji.
Tak true lub false możliwe do usunięcia
wstawialny
możliwe do aktualizacji
możliwość aktualizacji lub wstawienia
Kolumny kluczy W przypadku aktualizacji, operacji upserts i delete należy ustawić kolumny kluczy, aby określić, który wiersz ma zostać zmieniony.
Nazwa kolumny wybranej jako klucz będzie używana w ramach kolejnej aktualizacji, upsert, delete. W związku z tym należy wybrać kolumnę, która istnieje w mapowaniu ujścia.
Nie. Tablica klucze
Pomijaj zapisywanie kolumn kluczy Jeśli nie chcesz zapisywać wartości w kolumnie klucza, wybierz pozycję "Pomiń pisanie kolumn kluczy". Nie. true lub false skipKeyWrites
Akcja tabeli Określa, czy należy ponownie utworzyć lub usunąć wszystkie wiersze z tabeli docelowej przed zapisem.
- Brak: żadna akcja nie zostanie wykonana w tabeli.
- Odtwórz: tabela zostanie usunięta i utworzona ponownie. Wymagane w przypadku dynamicznego tworzenia nowej tabeli.
- Obcinanie: wszystkie wiersze z tabeli docelowej zostaną usunięte.
Nie. true lub false odtworzyć
obcinać
Rozmiar partii Określ liczbę wierszy zapisywanych w każdej partii. Większe rozmiary partii poprawiają kompresję i optymalizację pamięci, ale istnieje ryzyko wystąpienia wyjątków braku pamięci podczas buforowania danych. Nie. Integer batchSize
Skrypty SQL przed i po Określ wielowierszowe skrypty SQL, które będą wykonywane przed (przetwarzanie wstępne) i po (przetwarzanie końcowe) zapisaniem danych w bazie danych docelowej. Nie. String preSQLs
postSQLs

Napiwek

  1. Zaleca się podzielenie pojedynczych skryptów wsadowych z wieloma poleceniami na wiele partii.
  2. W ramach partii można uruchamiać tylko instrukcje języka DDL (Data Definition Language) i Języka manipulowania danymi (DML), które zwracają prostą liczbę aktualizacji. Dowiedz się więcej na temat wykonywania operacji wsadowych
  • Włącz wyodrębnianie przyrostowe: użyj tej opcji, aby poinformować usługę ADF o przetwarzaniu tylko wierszy, które uległy zmianie od czasu ostatniego wykonania potoku.

  • Kolumna przyrostowa: w przypadku korzystania z funkcji wyodrębniania przyrostowego należy wybrać kolumnę daty/godziny lub kolumnę liczbową, której chcesz użyć jako znaku wodnego w tabeli źródłowej.

  • Rozpocznij odczytywanie od początku: ustawienie tej opcji przy użyciu wyodrębniania przyrostowego spowoduje, że usługa ADF odczytuje wszystkie wiersze podczas pierwszego wykonywania potoku z włączonym wyodrębnieniem przyrostowym.

Przykładowy skrypt ujścia usługi Azure Database for MySQL

Jeśli używasz usługi Azure Database for MySQL jako typu ujścia, skojarzony skrypt przepływu danych to:

IncomingStream sink(allowSchemaDrift: true,
    validateSchema: false,
    deletable:false,
    insertable:true,
    updateable:true,
    upsertable:true,
    keys:['keyColumn'],
    format: 'table',
    skipDuplicateMapInputs: true,
    skipDuplicateMapOutputs: true) ~> AzureMySQLSink

Właściwości działania wyszukiwania

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

Mapowanie typów danych dla usługi Azure Database for MySQL

Podczas kopiowania danych z usługi Azure Database for MySQL następujące mapowania są używane z typów danych MySQL do tymczasowych typów danych używanych wewnętrznie w usłudze. 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 usługi Azure Database for MySQL Typ danych usługi tymczasowej
bigint Int64
bigint unsigned Decimal
bit Boolean
bit(M), M>1 Byte[]
blob Byte[]
bool Int16
char String
date Datetime
datetime Datetime
decimal Decimal, String
double Double
double precision Double
enum String
float Single
int Int32
int unsigned Int64
integer Int32
integer unsigned Int64
long varbinary Byte[]
long varchar String
longblob Byte[]
longtext String
mediumblob Byte[]
mediumint Int32
mediumint unsigned Int64
mediumtext String
numeric Decimal
real Double
set String
smallint Int16
smallint unsigned Int32
text String
time TimeSpan
timestamp Datetime
tinyblob Byte[]
tinyint Int16
tinyint unsigned Int16
tinytext String
varchar String
year Int32

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