Gegevens kopiëren en transformeren in Azure Database for MySQL met behulp van Azure Data Factory of Synapse Analytics

VAN TOEPASSING OP: Azure Data Factory Azure Synapse Analytics

Tip

Probeer Data Factory uit in Microsoft Fabric, een alles-in-één analyseoplossing voor ondernemingen. Microsoft Fabric omvat alles, van gegevensverplaatsing tot gegevenswetenschap, realtime analyses, business intelligence en rapportage. Meer informatie over het gratis starten van een nieuwe proefversie .

In dit artikel wordt beschreven hoe u kopieeractiviteit gebruikt in Azure Data Factory- of Synapse Analytics-pijplijnen om gegevens van en naar Azure Database for MySQL te kopiëren en Gegevensstroom te gebruiken om gegevens te transformeren in Azure Database for MySQL. Lees de inleidende artikelen voor Azure Data Factory en Synapse Analytics voor meer informatie.

Deze connector is gespecialiseerd voor

Als u gegevens wilt kopiëren uit een algemene MySQL-database die zich on-premises of in de cloud bevindt, gebruikt u de MySQL-connector.

Vereisten

Voor deze quickstart zijn de volgende resources en configuratie vereist die hieronder worden genoemd als uitgangspunt:

  • Een bestaande Azure-database voor MySQL Enkele server of MySQL Flexibele server met openbare toegang of privé-eindpunt.
  • Schakel Openbare toegang vanuit elke Azure-service in Azure naar deze server in op de netwerkpagina van de MySQL-server. Hiermee kunt u Data Factory Studio gebruiken.

Ondersteunde mogelijkheden

Deze Azure Database for MySQL-connector wordt ondersteund voor de volgende mogelijkheden:

Ondersteunde mogelijkheden IR Beheerd privé-eindpunt
Copy-activiteit (bron/sink) ① ②
Toewijzingsgegevensstroom (bron/sink)
Activiteit Lookup ① ②

(1) Azure Integration Runtime (2) Zelf-hostende Integration Runtime

Aan de slag

Als u de kopieeractiviteit wilt uitvoeren met een pijplijn, kunt u een van de volgende hulpprogramma's of SDK's gebruiken:

Een gekoppelde service maken in Azure Database for MySQL met behulp van de gebruikersinterface

Gebruik de volgende stappen om een gekoppelde service te maken voor Azure Database for MySQL in de gebruikersinterface van Azure Portal.

  1. Blader naar het tabblad Beheren in uw Azure Data Factory- of Synapse-werkruimte en selecteer Gekoppelde services en klik vervolgens op Nieuw:

  2. Zoek naar MySQL en selecteer de Azure Database for MySQL-connector.

    Select the Azure Database for MySQL connector.

  3. Configureer de servicedetails, test de verbinding en maak de nieuwe gekoppelde service.

    Configure a linked service to Azure Database for MySQL.

configuratiedetails Verbinding maken or

De volgende secties bevatten informatie over eigenschappen die worden gebruikt voor het definiëren van Data Factory-entiteiten die specifiek zijn voor Azure Database for MySQL-connector.

Eigenschappen van gekoppelde service

De volgende eigenschappen worden ondersteund voor de gekoppelde Azure Database for MySQL-service:

Eigenschappen Beschrijving Vereist
type De typeeigenschap moet worden ingesteld op: AzureMySql Ja
connectionString Geef informatie op die nodig is om verbinding te maken met het Azure Database for MySQL-exemplaar.
U kunt ook een wachtwoord in Azure Key Vault plaatsen en de password configuratie uit de verbindingsreeks halen. Raadpleeg de volgende voorbeelden en sla referenties op in het Artikel over Azure Key Vault met meer informatie.
Ja
connectVia De Integration Runtime die moet worden gebruikt om verbinding te maken met het gegevensarchief. U kunt Azure Integration Runtime of zelf-hostende Integration Runtime gebruiken (als uw gegevensarchief zich in een privénetwerk bevindt). Als dit niet is opgegeven, wordt de standaard Azure Integration Runtime gebruikt. Nee

Een typische verbindingsreeks is Server=<server>.mysql.database.azure.com;Port=<port>;Database=<database>;UID=<username>;PWD=<password>. Meer eigenschappen die u per geval kunt instellen:

Eigenschappen Beschrijving Opties Vereist
SSLMode Met deze optie geeft u op of het stuurprogramma TLS-versleuteling en verificatie gebruikt bij het maken van verbinding met MySQL. Bijvoorbeeld. SSLMode=<0/1/2/3/4> UITGESCHAKELD (0) / VOORKEUR (1) (standaard) / VEREIST (2) / VERIFY_CA (3) / VERIFY_IDENTITY (4) Nee
UseSystemTrustStore Met deze optie geeft u op of u een CA-certificaat uit het systeemvertrouwensarchief of uit een opgegeven PEM-bestand wilt gebruiken. Bijvoorbeeld. UseSystemTrustStore=<0/1>; Ingeschakeld (1) / Uitgeschakeld (0) (standaard) Nee

Voorbeeld:

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

Voorbeeld: wachtwoord opslaan in 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"
        }
    }
}

Eigenschappen van gegevensset

Zie het artikel gegevenssets voor een volledige lijst met secties en eigenschappen die beschikbaar zijn voor het definiëren van gegevenssets . Deze sectie bevat een lijst met eigenschappen die worden ondersteund door azure Database for MySQL-gegevensset.

Als u gegevens uit Azure Database for MySQL wilt kopiëren, stelt u de typeeigenschap van de gegevensset in op AzureMySqlTable. De volgende eigenschappen worden ondersteund:

Eigenschappen Beschrijving Vereist
type De typeeigenschap van de gegevensset moet worden ingesteld op: AzureMySqlTable Ja
tableName Naam van de tabel in de MySQL-database. Nee (als 'query' in de activiteitsbron is opgegeven)

Voorbeeld

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

Eigenschappen van de kopieeractiviteit

Zie het artikel Pijplijnen voor een volledige lijst met secties en eigenschappen die beschikbaar zijn voor het definiëren van activiteiten. Deze sectie bevat een lijst met eigenschappen die worden ondersteund door azure Database for MySQL-bron en -sink.

Azure Database for MySQL als bron

Als u gegevens wilt kopiëren uit Azure Database for MySQL, worden de volgende eigenschappen ondersteund in de sectie kopieeractiviteitsbron:

Eigenschappen Beschrijving Vereist
type De typeeigenschap van de bron van de kopieeractiviteit moet worden ingesteld op: AzureMySqlSource Ja
query Gebruik de aangepaste SQL-query om gegevens te lezen. Voorbeeld: "SELECT * FROM MyTable". Nee (als 'tableName' in de gegevensset is opgegeven)
queryCommandTimeout De wachttijd voordat er een time-out optreedt voor de queryaanvraag. De standaardwaarde is 120 minuten (02:00:00) Nee

Voorbeeld:

"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 als sink

Als u gegevens wilt kopiëren naar Azure Database for MySQL, worden de volgende eigenschappen ondersteund in de sectie sink voor kopieeractiviteit:

Eigenschappen Beschrijving Vereist
type De typeeigenschap van de sink van de kopieeractiviteit moet worden ingesteld op: AzureMySqlSink Ja
preCopyScript Geef in elke uitvoering een SQL-query op voor de kopieeractiviteit die moet worden uitgevoerd voordat u gegevens naar Azure Database for MySQL schrijft. U kunt deze eigenschap gebruiken om de vooraf geladen gegevens op te schonen. Nee
writeBatchSize Hiermee voegt u gegevens in de Azure Database for MySQL-tabel in wanneer de buffergrootte writeBatchSize bereikt.
Toegestane waarde is een geheel getal dat het aantal rijen aangeeft.
Nee (standaard is 10.000)
writeBatchTimeout Wachttijd voordat de batchinvoegbewerking is voltooid voordat er een time-out optreedt.
Toegestane waarden zijn Tijdspanne. Een voorbeeld is 00:30:00 (30 minuten).
Nee (standaard is 00:00:30)

Voorbeeld:

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

Eigenschappen van toewijzingsgegevensstroom

Wanneer u gegevens transformeert in de toewijzingsgegevensstroom, kunt u tabellen lezen en schrijven vanuit Azure Database for MySQL. Zie de brontransformatie en sinktransformatie in toewijzingsgegevensstromen voor meer informatie. U kunt ervoor kiezen om een Azure Database for MySQL-gegevensset of een inlinegegevensset te gebruiken als bron- en sinktype.

Brontransformatie

De onderstaande tabel bevat de eigenschappen die worden ondersteund door azure Database for MySQL-bron. U kunt deze eigenschappen bewerken op het tabblad Bronopties .

Name Beschrijving Vereist Toegestane waarden Eigenschap gegevensstroomscript
Tabel Als u Tabel als invoer selecteert, haalt de gegevensstroom alle gegevens op uit de tabel die is opgegeven in de gegevensset. Nee - (alleen voor inlinegegevensset)
tableName
Query’s uitvoeren Als u Query als invoer selecteert, geeft u een SQL-query op om gegevens op te halen uit de bron, waardoor elke tabel die u opgeeft in de gegevensset overschrijft. Het gebruik van query's is een uitstekende manier om rijen te verminderen voor tests of zoekacties.

Order By-component wordt niet ondersteund, maar u kunt een volledige SELECT FROM-instructie instellen. U kunt ook door de gebruiker gedefinieerde tabelfuncties gebruiken. select * from udfGetData() is een UDF in SQL die een tabel retourneert die u in de gegevensstroom kunt gebruiken.
Queryvoorbeeld: select * from mytable where customerId > 1000 and customerId < 2000 of select * from "MyTable".
Nee String query
Opgeslagen procedure Als u Opgeslagen procedure als invoer selecteert, geeft u een naam op van de opgeslagen procedure om gegevens uit de brontabel te lezen of selecteert u Vernieuwen om de service te vragen de namen van de procedure te detecteren. Ja (als u Opgeslagen procedure als invoer selecteert) String procedureNaam
Procedureparameters Als u Opgeslagen procedure als invoer selecteert, geeft u invoerparameters op voor de opgeslagen procedure in de volgorde die in de procedure is ingesteld of selecteert u Importeren om alle procedureparameters te importeren met behulp van het formulier @paraName. Nee Matrix Ingangen
Batchgrootte Geef een batchgrootte op om grote gegevens in batches te segmenteren. Nee Geheel getal batchSize
Isolatieniveau Kies een van de volgende isolatieniveaus:
- Vastgelegd lezen
- Niet-verzonden lezen (standaard)
- Herhaalbare leesbewerking
-Serializable
- Geen (isolatieniveau negeren)
Nee READ_COMMITTED
READ_UNCOMMITTED
REPEATABLE_READ
SERIALIZABLE
GEEN
isolationLevel

Voorbeeld van azure Database for MySQL-bronscript

Wanneer u Azure Database for MySQL als brontype gebruikt, is het bijbehorende gegevensstroomscript:

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

Sinktransformatie

De onderstaande tabel bevat de eigenschappen die worden ondersteund door de Sink van Azure Database for MySQL. U kunt deze eigenschappen bewerken op het tabblad Sink-opties .

Name Beschrijving Vereist Toegestane waarden Eigenschap gegevensstroomscript
Bijwerkingsmethode Geef op welke bewerkingen zijn toegestaan op uw databasebestemming. De standaardinstelling is om alleen invoegingen toe te staan.
Als u rijen wilt bijwerken, upsert of verwijderen, is een transformatie van een alter row vereist om rijen voor deze acties te taggen.
Ja true of false te verwijderen
invoegbaar
kan worden bijgewerkt
upsertable
Sleutelkolommen Voor updates, upserts en verwijderingen moet sleutelkolom(en) worden ingesteld om te bepalen welke rij moet worden gewijzigd.
De kolomnaam die u als sleutel kiest, wordt gebruikt als onderdeel van de volgende update, upsert, delete. Daarom moet u een kolom kiezen die bestaat in de sinktoewijzing.
Nee Matrix keys
Schrijven van sleutelkolommen overslaan Als u de waarde niet naar de sleutelkolom wilt schrijven, selecteert u 'Schrijfsleutelkolommen overslaan'. Nee true of false skipKeyWrites
Tabelactie Bepaalt of alle rijen uit de doeltabel opnieuw moeten worden gemaakt of verwijderd voordat ze worden geschreven.
- Geen: Er wordt geen actie uitgevoerd voor de tabel.
- Opnieuw maken: de tabel wordt verwijderd en opnieuw gemaakt. Vereist als u dynamisch een nieuwe tabel maakt.
- Afkappen: alle rijen uit de doeltabel worden verwijderd.
Nee true of false Opnieuw
truncate
Batchgrootte Geef op hoeveel rijen er in elke batch worden geschreven. Grotere batchgrootten verbeteren compressie en geheugenoptimalisatie, maar risico op geheugenuitzonderingen bij het opslaan van gegevens in de cache. Nee Geheel getal batchSize
Pre- en post-SQL-scripts Geef SQL-scripts met meerdere regels op die worden uitgevoerd vóór (voorverwerking) en na (naverwerking) gegevens naar uw Sink-database worden geschreven. Nee String preSQLs
postSQLs

Tip

  1. Het is raadzaam om scripts met één batch met meerdere opdrachten in meerdere batches te splitsen.
  2. Alleen DDL-instructies (Data Definition Language) en DML-instructies (Data Definition Language) die een eenvoudig aantal updates retourneren, kunnen worden uitgevoerd als onderdeel van een batch. Meer informatie over het uitvoeren van batchbewerkingen
  • Incrementeel extraheren inschakelen: gebruik deze optie om ADF te laten weten dat alleen rijen moeten worden verwerkt die zijn gewijzigd sinds de laatste keer dat de pijplijn is uitgevoerd.

  • Incrementele kolom: Wanneer u de functie incrementeel extraheren gebruikt, moet u de datum/tijd of numerieke kolom kiezen die u wilt gebruiken als het watermerk in de brontabel.

  • Begin met lezen: Als u deze optie instelt met incrementeel uitpakken, wordt ADF geïnstrueerd om alle rijen te lezen bij de eerste uitvoering van een pijplijn, waarbij incrementeel extract is ingeschakeld.

Voorbeeld van azure Database for MySQL-sinkscript

Wanneer u Azure Database for MySQL als sinktype gebruikt, is het bijbehorende gegevensstroomscript:

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

Eigenschappen van opzoekactiviteit

Als u meer wilt weten over de eigenschappen, controleert u de lookup-activiteit.

Toewijzing van gegevenstypen voor Azure Database for MySQL

Bij het kopiëren van gegevens uit Azure Database for MySQL worden de volgende toewijzingen gebruikt van MySQL-gegevenstypen naar tussentijdse gegevenstypen die intern in de service worden gebruikt. Zie Schema- en gegevenstypetoewijzingen voor meer informatie over hoe kopieeractiviteit het bronschema en het gegevenstype toewijst aan de sink.

Azure Database for MySQL-gegevenstype Tussentijdse servicegegevenstype
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

Zie ondersteunde gegevensarchieven voor een lijst met gegevensarchieven die worden ondersteund als bronnen en sinks door de kopieeractiviteit.