Kopírování a transformace dat ve službě Azure Database for MySQL pomocí služby Azure Data Factory nebo Synapse Analytics

PLATÍ PRO: Azure Data Factory Azure Synapse Analytics

Tip

Vyzkoušejte si službu Data Factory v Microsoft Fabric, řešení pro analýzy typu all-in-one pro podniky. Microsoft Fabric zahrnuje všechno od přesunu dat až po datové vědy, analýzy v reálném čase, business intelligence a vytváření sestav. Přečtěte si, jak začít používat novou zkušební verzi zdarma.

Tento článek popisuje, jak pomocí aktivity kopírování v kanálech Azure Data Factory nebo Synapse Analytics kopírovat data z a do Služby Azure Database for MySQL a pomocí Tok dat transformovat data ve službě Azure Database for MySQL. Další informace najdete v úvodních článcích pro Azure Data Factory a Synapse Analytics.

Tento konektor je specializovaný pro

Pokud chcete kopírovat data z obecné databáze MySQL umístěné místně nebo v cloudu, použijte konektor MySQL.

Požadavky

Tento rychlý start vyžaduje následující prostředky a konfiguraci uvedené níže jako výchozí bod:

  • Existující jednoúčelový server Azure database for MySQL nebo flexibilní server MySQL s veřejným přístupem nebo privátním koncovým bodem.
  • Povolit veřejný přístup z libovolné služby Azure v rámci Azure na tomto serveru na stránce sítě serveru MySQL . To vám umožní používat Data Factory Studio.

Podporované funkce

Tento konektor Azure Database for MySQL je podporovaný pro následující funkce:

Podporované funkce IR Spravovaný privátní koncový bod
aktivita Copy (zdroj/jímka) (1) (2)
Mapování toku dat (zdroj/jímka) (1)
Aktivita Lookup (1) (2)

(1) Prostředí Azure Integration Runtime (2) Místní prostředí Integration Runtime

Začínáme

K provedení aktivita Copy s kanálem můžete použít jeden z následujících nástrojů nebo sad SDK:

Vytvoření propojené služby se službou Azure Database for MySQL pomocí uživatelského rozhraní

Pomocí následujícího postupu vytvořte propojenou službu se službou Azure Database for MySQL v uživatelském rozhraní webu Azure Portal.

  1. Přejděte na kartu Správa v pracovním prostoru Azure Data Factory nebo Synapse a vyberte Propojené služby a pak klikněte na Nový:

  2. Vyhledejte MySQL a vyberte konektor Azure Database for MySQL.

    Vyberte konektor Azure Database for MySQL.

  3. Nakonfigurujte podrobnosti o službě, otestujte připojení a vytvořte novou propojenou službu.

    Nakonfigurujte propojenou službu se službou Azure Database for MySQL.

Podrobnosti konfigurace konektoru

Následující části obsahují podrobnosti o vlastnostech, které slouží k definování entit služby Data Factory specifických pro konektor Azure Database for MySQL.

Vlastnosti propojené služby

Propojená služba Azure Database for MySQL podporuje následující vlastnosti:

Vlastnost Popis Povinní účastníci
type Vlastnost typu musí být nastavená na: AzureMySql. Ano
připojovací řetězec Zadejte informace potřebné pro připojení k instanci Azure Database for MySQL.
Můžete také zadat heslo do služby Azure Key Vault a vytáhnout password konfiguraci z připojovací řetězec. Další podrobnosti najdete v následujících ukázkách a ukládání přihlašovacích údajů ve službě Azure Key Vault .
Ano
connectVia Prostředí Integration Runtime , které se má použít pro připojení k úložišti dat. Můžete použít prostředí Azure Integration Runtime nebo místní prostředí Integration Runtime (pokud je vaše úložiště dat umístěné v privátní síti). Pokud není zadaný, použije výchozí prostředí Azure Integration Runtime. No

Typický připojovací řetězec je Server=<server>.mysql.database.azure.com;Port=<port>;Database=<database>;UID=<username>;PWD=<password>. Další vlastnosti, které můžete nastavit pro váš případ:

Vlastnost Popis Možnosti Požaduje se
SSLMode Tato možnost určuje, jestli ovladač při připojování k MySQL používá šifrování TLS a ověřování. Např. SSLMode=<0/1/2/3/4> DISABLED (0) / PREFERRED (1) (Výchozí) / POVINNÉ (2) / VERIFY_CA (3) / VERIFY_IDENTITY (4) No
UseSystemTrustStore Tato možnost určuje, jestli se má použít certifikát certifikační autority z úložiště důvěryhodnosti systému nebo ze zadaného souboru PEM. Např. UseSystemTrustStore=<0/1>; Povoleno (1) / Zakázáno (0) (výchozí) No

Příklad:

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

Příklad: Uložení hesla ve službě 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"
        }
    }
}

Vlastnosti datové sady

Úplný seznam oddílů a vlastností dostupných pro definování datových sad najdete v článku o datových sadách . Tato část obsahuje seznam vlastností podporovaných datovou sadou Azure Database for MySQL.

Pokud chcete kopírovat data z Azure Database for MySQL, nastavte vlastnost typu datové sady na AzureMySqlTable. Podporují se následující vlastnosti:

Vlastnost Popis Povinní účastníci
type Vlastnost typu datové sady musí být nastavená na: AzureMySqlTable. Ano
tableName Název tabulky v databázi MySQL Ne (pokud je zadán dotaz ve zdroji aktivity)

Příklad

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

Vlastnosti aktivity kopírování

Úplný seznam oddílů a vlastností dostupných pro definování aktivit najdete v článku Pipelines . Tato část obsahuje seznam vlastností podporovaných zdrojem a jímkou Azure Database for MySQL.

Azure Database for MySQL jako zdroj

Pokud chcete kopírovat data ze služby Azure Database for MySQL, podporují se v části zdroje aktivity kopírování následující vlastnosti:

Vlastnost Popis Povinní účastníci
type Vlastnost typu zdroje aktivity kopírování musí být nastavená na: AzureMySqlSource. Ano
query Ke čtení dat použijte vlastní dotaz SQL. Například: "SELECT * FROM MyTable". Ne (pokud je v datové sadě zadán název tabulky)
queryCommandTimeout Doba čekání před vypršením časového limitu požadavku dotazu. Výchozí hodnota je 120 minut (02:00:00) No

Příklad:

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

Azure Database for MySQL jako jímka

Pokud chcete zkopírovat data do služby Azure Database for MySQL, podporují se v části jímky aktivity kopírování následující vlastnosti:

Vlastnost Popis Povinní účastníci
type Vlastnost typu jímky aktivity kopírování musí být nastavená na: AzureMySqlSink. Ano
preCopyScript Zadejte dotaz SQL pro aktivitu kopírování, který se má provést před zápisem dat do služby Azure Database for MySQL v každém spuštění. Tuto vlastnost můžete použít k vyčištění předem načtených dat. No
writeBatchSize Vloží data do tabulky Azure Database for MySQL, když velikost vyrovnávací paměti dosáhne writeBatchSize.
Povolená hodnota je celé číslo představující počet řádků.
Ne (výchozí hodnota je 10 000)
writeBatchTimeout Počkejte, než se operace dávkového vložení dokončí, než vyprší časový limit.
Povolené hodnoty jsou časový rozsah. Příklad je 00:30:00 (30 minut).
Ne (výchozí hodnota je 00:00:30)

Příklad:

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

Mapování vlastností toku dat

Při transformaci dat při mapování toku dat můžete číst a zapisovat do tabulek ze služby Azure Database for MySQL. Další informace najdete v tématu transformace zdroje a transformace jímky v mapování toků dat. Jako typ zdroje a jímky můžete použít datovou sadu Azure Database for MySQL nebo vloženou datovou sadu .

Transformace zdroje

Následující tabulka uvádí vlastnosti podporované zdrojem Azure Database for MySQL. Tyto vlastnosti můžete upravit na kartě Možnosti zdroje.

Název Popis Povinní účastníci Povolené hodnoty Vlastnost skriptu toku dat
Table Pokud jako vstup vyberete tabulku, tok dat načte všechna data z tabulky zadané v datové sadě. No - (pouze pro vloženou datovou sadu)
tableName
Dotaz Pokud jako vstup vyberete Dotaz, zadejte dotaz SQL pro načtení dat ze zdroje, který přepíše jakoukoli tabulku, kterou zadáte v datové sadě. Použití dotazů je skvělý způsob, jak snížit počet řádků pro testování nebo vyhledávání.

Klauzule Order By není podporovaná, ale můžete nastavit úplný příkaz SELECT FROM. Můžete také použít uživatelem definované funkce tabulek. select * from udfGetData() je UDF v SQL, která vrací tabulku, kterou můžete použít v toku dat.
Příklad dotazu: select * from mytable where customerId > 1000 and customerId < 2000 nebo select * from "MyTable".
No String query
Uložená procedura Pokud jako vstup vyberete Uložená procedura, zadejte název uložené procedury pro čtení dat ze zdrojové tabulky nebo vyberte Aktualizovat a požádejte službu o zjištění názvů procedur. Ano (pokud jako vstup vyberete uloženou proceduru) String procedureName
Parametry procedury Pokud jako vstup vyberete Uložená procedura, zadejte všechny vstupní parametry pro uloženou proceduru v pořadí nastaveném v rámci procedury, nebo vyberte importovat všechny parametry procedury pomocí formuláře @paraName. No Pole vstupy
Velikost dávky Zadejte velikost dávky pro rozdělení velkých dat do dávek. No Celé číslo batchSize
Úroveň izolace Zvolte jednu z následujících úrovní izolace:
- Přečteno potvrzeno
– Nepotvrzené čtení (výchozí)
- Opakovatelné čtení
-Serializovatelný
– Žádné (ignorovat úroveň izolace)
No READ_COMMITTED
READ_UNCOMMITTED
REPEATABLE_READ
SERIALIZOVATELNÝ
ŽÁDNÝ
isolationLevel

Příklad zdrojového skriptu Azure Database for MySQL

Pokud jako typ zdroje použijete Azure Database for MySQL, přidružený skript toku dat:

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

Transformace jímky

Následující tabulka uvádí vlastnosti podporované jímkou Azure Database for MySQL. Tyto vlastnosti můžete upravit na kartě Možnosti jímky.

Název Popis Povinní účastníci Povolené hodnoty Vlastnost skriptu toku dat
Metoda aktualizace Určete, jaké operace jsou povolené v cíli databáze. Výchozí hodnota je povolit pouze vkládání.
Pokud chcete aktualizovat, upsertovat nebo odstranit řádky, je k označení řádků pro tyto akce potřeba transformace alter řádku.
Ano true nebo false s možností odsud
vložitelné
aktualizovatelné
upsertable
Klíčové sloupce U aktualizací, upsertů a odstranění je nutné nastavit klíčové sloupce, aby bylo možné určit, který řádek se má změnit.
Název sloupce, který vyberete jako klíč, se použije jako součást následné aktualizace, upsertu a odstranění. Proto je nutné vybrat sloupec, který existuje v mapování jímky.
No Pole keys
Přeskočení psaní klíčových sloupců Pokud chcete hodnotu nezapsat do klíčového sloupce, vyberte Přeskočit psaní klíčových sloupců. No true nebo false skipKeyWrites
Akce tabulky Určuje, zda se mají před zápisem znovu vytvořit nebo odebrat všechny řádky z cílové tabulky.
- Žádné: V tabulce se neprovede žádná akce.
- Znovu vytvořte: Tabulka se přehodí a znovu vytvoří. Vyžaduje se při dynamickém vytváření nové tabulky.
- Zkrácení: Odeberou se všechny řádky z cílové tabulky.
No true nebo false obnovit
truncate
Velikost dávky Určete, kolik řádků se zapisuje v každé dávce. Větší velikosti dávek zlepšují kompresi a optimalizaci paměti, ale při ukládání dat do mezipaměti riskují výjimky z paměti. No Celé číslo batchSize
Skripty pre a post SQL Zadejte víceřádkové skripty SQL, které se spustí před (předzpracování) a po (po zpracování) dat zapisují do databáze jímky. No String předsqls
postSQLs

Tip

  1. Doporučujeme rozdělit jednotlivé dávkové skripty několika příkazy do několika dávek.
  2. Jako součást dávky je možné spustit pouze příkazy DDL (Data Definition Language) a DML (Data Manipulation Language), které vracejí jednoduchý počet aktualizací. Další informace o provádění dávkových operací
  • Povolit přírůstkový extrahování: Pomocí této možnosti můžete službě ADF sdělit, aby zpracovávaly pouze řádky, které se od posledního spuštění kanálu změnily.

  • Přírůstkový sloupec: Při použití funkce přírůstkového extrakce musíte zvolit sloupec data a času nebo číselného sloupce, který chcete použít jako vodoznak ve zdrojové tabulce.

  • Začněte číst od začátku: Nastavení této možnosti přírůstkovým extrahováním dá ADF pokyn ke čtení všech řádků při prvním spuštění kanálu se zapnutým přírůstkovým extrahováním.

Ukázkový skript jímky Azure Database for MySQL

Pokud jako typ jímky použijete Azure Database for MySQL, přidružený skript toku dat:

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

Vlastnosti aktivity vyhledávání

Podrobnosti o vlastnostech najdete v aktivitě Vyhledávání.

Mapování datových typů pro Službu Azure Database for MySQL

Při kopírování dat ze služby Azure Database for MySQL se z datových typů MySQL používají následující mapování k dočasným datovým typům používaným interně v rámci služby. Informace o tom, jak aktivita kopírování mapuje zdrojové schéma a datový typ na jímku, najdete v mapování schématu schématu a datového typu schématu schématu a datového typu.

Datový typ Azure Database for MySQL Dočasný datový typ služby
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

Seznam úložišť dat podporovaných jako zdroje a jímky aktivitou kopírování najdete v podporovaných úložištích dat.