Menyalin dan mentransformasi data di Azure Database for MySQL menggunakan Azure Data Factory atau Azure Synapse Analytics

BERLAKU UNTUK:Azure Data Factory Azure Synapse Analytics

Tip

Cobalah Data Factory di Microsoft Fabric, solusi analitik all-in-one untuk perusahaan. Microsoft Fabric mencakup semuanya mulai dari pergerakan data hingga ilmu data, analitik real time, kecerdasan bisnis, dan pelaporan. Pelajari cara memulai uji coba baru secara gratis!

Artikel ini menguraikan cara menggunakan Aktivitas Salin di alur Azure Data Factory atau Azure Synapse Analytics untuk menyalin data dari dan ke Azure Database for MySQL, dan menggunakan Aliran Data untuk mentransformasi data di Azure Database for MySQL. Untuk mempelajari selengkapnya, baca artikel pengantar untuk Azure Data Factory dan Synapse Analytics.

Konektor ini dikhususkan untuk

Untuk menyalin data dari database MySQL generik lokal atau di cloud, gunakan konektor MySQL.

Prasyarat

Mulai cepat ini memerlukan sumber daya dan konfigurasi berikut yang disebutkan di bawah ini sebagai titik awal:

  • Server Tunggal Azure database for MySQL yang sudah ada atau Server Fleksibel MySQL dengan akses publik atau titik akhir privat.
  • AktifkanIzinkan akses publik dari layanan Azure apa pun dalam Azure ke server ini di halaman jaringan server MySQL . Ini akan memperbolehkan Anda untuk menggunakan studio Data Factory.

Kemampuan yang didukung

Konektor Azure Database for MySQL ini didukung untuk kemampuan berikut:

Kemampuan yang didukung IR Titik akhir privat terkelola
Salin aktivitas (sumber/sink) ① ②
Memetakan aliran data (sumber/sink)
Aktivitas pencarian ① ②

① Runtime integrasi Azure ② Runtime integrasi yang dihost sendiri

Memulai

Untuk melakukan aktivitas Salin dengan alur, Anda dapat menggunakan salah satu alat atau SDK berikut:

Membuat layanan tertaut ke Azure Database for MySQL menggunakan antarmuka pengguna

Gunakan langkah-langkah berikut untuk membuat layanan tertaut ke Azure Database for MySQL di antarmuka pengguna portal Microsoft Azure.

  1. Telusuri ke tab Kelola di ruang kerja Azure Data Factory atau Synapse Anda dan pilih Layanan Tertaut, lalu klik Baru:

  2. Cari MySQL dan pilih konektor Azure DB for MySQL.

    Select the Azure Database for MySQL connector.

  3. Konfigurasikan detail layanan, uji koneksi, dan buat layanan tertaut baru.

    Configure a linked service to Azure Database for MySQL.

Detail konfigurasi konektor

Bagian berikut ini menyediakan detail tentang properti yang digunakan untuk menentukan entitas Data Factory khusus untuk konektor Azure Database for MySQL.

Properti layanan tertaut

Properti berikut ini didukung untuk layanan tertaut Azure Database for MySQL:

Properti Deskripsi Wajib
jenis Properti jenis harus diatur ke: AzureMySql Ya
connectionString Tentukan informasi yang diperlukan untuk menyambung ke instans Azure Database for MySQL.
Anda juga dapat menyimpan kata sandi di Azure Key Vault dan mengeluarkan konfigurasi password dari string koneksi. Lihat sampel berikut dan artikel Menyimpan info masuk di Azure Key Vault untuk detail selengkapnya.
Ya
connectVia Runtime integrasi yang akan digunakan untuk menyambungkan ke penyimpanan data. Anda dapat menggunakan Azure Integration Runtime atau Integration Runtime yang Dihost Sendiri (jika penyimpanan data Anda berada di jaringan privat). Jika tidak ditentukan, Azure Integration Runtime default akan digunakan. Tidak

String koneksi biasanya adalah Server=<server>.mysql.database.azure.com;Port=<port>;Database=<database>;UID=<username>;PWD=<password>. Properti lainnya yang dapat Anda tetapkan untuk kasus Anda:

Properti Deskripsi Opsi Wajib
SSLMode Opsi ini menentukan apakah driver menggunakan enkripsi dan verifikasi TLS saat menyambungkan ke MySQL. Misalnya. SSLMode=<0/1/2/3/4> DINONAKTIFKAN (0) / DISUKAI (1) (Default) / DIPERLUKAN (2) / VERIFIKASI_OS (3) / VERIFIKASI_IDENTITAS (4) Tidak
UseSystemTrustStore Opsi ini menentukan apakah akan menggunakan sertifikat OS dari penyimpanan kepercayaan sistem atau dari file PEM tertentu. Misalnya. UseSystemTrustStore=<0/1>; Diaktifkan (1) / Dinonaktifkan (0) (Default) Tidak

Contoh:

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

Contoh: simpan kata sandi di 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"
        }
    }
}

Properti himpunan data

Untuk daftar lengkap bagian dan properti yang tersedia untuk menentukan himpunan data, lihat artikel himpunan data. Bagian ini menyediakan daftar properti yang didukung oleh himpunan data Azure Database for MySQL.

Untuk menyalin data dari Azure Database for MySQL, atur properti jenis himpunan data ke AzureMySqlTable. Berikut adalah properti yang didukung:

Properti Deskripsi Wajib
jenis Properti jenis himpunan data harus diatur ke: AzureMySqlTable Ya
tableName Nama tabel dalam database MySQL. Tidak (jika "kueri" di sumber aktivitas ditentukan)

Contoh

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

Properti aktivitas salin

Untuk daftar lengkap bagian dan properti yang tersedia untuk menentukan aktivitas, lihat artikel Alur. Bagian ini menyediakan daftar properti yang didukung oleh sumber dan sink Azure Database for MySQL.

Azure Database for MySQL sebagai sumber

Untuk menyalin data dari Azure Database for MySQL, properti berikut ini didukung di bagiansumberaktivitas penyalinan:

Properti Deskripsi Wajib
jenis Properti jenis sumber aktivitas penyalinan harus diatur ke: AzureMySqlSource Ya
pertanyaan Gunakan kueri SQL kustom untuk membaca data. Sebagai contoh: "SELECT * FROM MyTable". Tidak (jika "tableName" di himpunan data ditentukan)
queryCommandTimeout Waktu tunggu sebelum waktu permintaan kueri habis. Defaultnya adalah 120 menit (02:00:00) Tidak

Contoh:

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

Untuk menyalin data dari Azure Database for MySQL, properti berikut ini didukung di bagiansinkaktivitas penyalinan:

Properti Deskripsi Wajib
jenis Properti jenis sink aktivitas penyalinan harus diatur ke AzureMySqlSink Ya
preCopyScript DI setiap eksekusi, tentukan kueri SQL yang akan dijalankan oleh aktivitas penyalinan sebelum menulis data ke Azure Database for MySQL. Anda dapat menggunakan properti ini untuk membersihkan data yang telah dimuat sebelumnya. Tidak
writeBatchSize Menyisipkan data ke dalam tabel Azure Database for MySQL saat ukuran buffer mencapai writeBatchSize.
Nilai yang diizinkan adalah bilangan bulat yang mewakili jumlah baris.
Tidak (defaultnya adalah 10.000)
writeBatchTimeout Waktu tunggu hingga operasi penyisipan batch selesai sebelum waktu habis.
Nilai yang diizinkan adalah Rentang Waktu. Contohnya adalah 00:30:00 (30 menit).
Tidak (defaultnya adalah 00:00:30)

Contoh:

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

Properti pemetaan aliran data

Saat melakukan transformasi data dalam alur pemetaan data, Anda dapat membaca dan menulis ke tabel dari Azure Database for MySQL. Untuk informasi selengkapnya, lihat transformasi sumber dan transformasi sink dalam aliran data pemetaan. Anda dapat memilih untuk menggunakan himpunan data Azure Database for MySQL atau himpunan data sebaris sebagai jenis sumber dan sink.

Transformasi sumber

Tabel di bawah ini mencantumkan properti yang didukung oleh sumber Azure Database for MySQL. Anda bisa mengedit properti ini di tab opsi Sumber.

Nama Deskripsi Wajib diisi Nilai yang diizinkan Properti skrip aliran data
Table Jika Anda memilih Tabel sebagai input, aliran data mengambil semua data dari tabel yang ditentukan dalam himpunan data. Tidak - (hanya untuk himpunan data sebaris)
tableName
Kueri Jika Anda memilih Kueri sebagai input, tentukan kueri SQL untuk mengambil data dari sumber, yang menggantikan tabel apa pun yang Anda tentukan dalam himpunan data. Menggunakan kueri adalah cara yang bagus untuk mengurangi baris untuk pengujian atau pencarian.

Klausa Urutkan Menurut tidak didukung, tetapi Anda dapat mengatur pernyataan SELECT FROM lengkap. Anda juga dapat menggunakan fungsi tabel yang ditentukan pengguna. pilih * dari udfGetData() adalah UDF di SQL yang menghasilkan tabel yang dapat Anda gunakan dalam aliran data.
Contoh kueri: select * from mytable where customerId > 1000 and customerId < 2000 atau select * from "MyTable".
Tidak String pertanyaan
Prosedur Tersimpan Jika Anda memilih Prosedur tersimpan sebagai input, tentukan nama prosedur tersimpan untuk membaca data dari tabel sumber, atau pilih Refresh untuk meminta layanan menemukan nama prosedur. Ya (jika Anda memilih Prosedur tersimpan sebagai input) String procedureName
Parameter prosedur Jika Anda memilih Prosedur tersimpan sebagai input, tentukan parameter input apa pun untuk prosedur tersimpan dalam urutan yang diatur dalam prosedur, atau pilih Impor untuk mengimpor semua parameter prosedur menggunakan formulir @paraName. Tidak Array input
Ukuran batch Tentukan ukuran batch untuk menggugus data besar ke dalam batch. Tidak Bilangan bulat batchSize
Tingkat Isolasi Pilih salah satu tingkat isolasi berikut:
- Read Committed
- Read Uncommitted (default)
- Repeatable Read
- Serializable
- Tidak ada (abaikan tingkat isolasi)
Tidak READ_COMMITTED
READ_UNCOMMITTED
REPEATABLE_READ
SERIALIZABLE
NONE
isolationLevel

Contoh skrip sumber Azure Database for MySQL

Saat Anda menggunakan Azure Database for MySQL sebagai jenis sumber, skrip aliran data terkait adalah:

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

Transformasi sink

Tabel di bawah ini mencantumkan properti yang didukung oleh sink Azure Database for MySQL. Anda dapat mengedit properti ini di tab opsi Sink.

Nama Deskripsi Wajib diisi Nilai yang diizinkan Properti skrip aliran data
Perbarui() metode Menentukan operasi apa yang diizinkan di tujuan database Anda. Defaultnya hanya mengizinkan operasi sisipan.
Untuk memperbarui, meningkatkan, atau menghapus baris, transformasi baris Alterdiperlukan untuk menandai baris untuk tindakan tersebut.
Ya true atau false dapat dideletable
dapat disisipkan
dapat diperbarui
dapat dibuat upsert
Kolom kunci Untuk pembaruan, upsert, dan penghapusan, kolom kunci harus diatur untuk menentukan baris mana yang akan diubah.
Nama kolom yang Anda pilih sebagai kunci akan digunakan sebagai bagian dari pembaruan, upsert, penghapusan berikutnya. Oleh karena itu, Anda harus memilih kolom yang ada di pemetaan Sink.
Tidak Array kunci
Lompati penulisan kolom kunci Jika Anda ingin tidak menulis nilai ke kolom kunci, pilih "Lompati penulisan kolom kunci". Tidak true atau false skipKeyWrites
Tindakan pada tabel Menentukan apakah akan membuat ulang atau menghapus semua baris dari tabel tujuan sebelum menulis.
- Tidak Ada: Tidak ada tindakan yang akan dilakukan pada tabel.
- Buat ulang: Tabel akan dihapus dan dibuat ulang. Diperlukan jika membuat tabel baru secara dinamis.
- Kosongkan: Semua baris dari tabel target akan dihapus.
Tidak true atau false recreate
Memotong
Ukuran batch Menentukan berapa banyak baris yang sedang ditulis di setiap batch. Ukuran batch yang lebih besar meningkatkan pemadatan dan pengoptimalan memori, tetapi berisiko kehabisan pengecualian memori saat penembolokan data. Tidak Bilangan bulat batchSize
Skrip Pra dan Pasca SQL Menentukan skrip SQL multibaris yang akan dijalankan sebelum (prapemrosesan) dan setelah (pascapemrosesan) data ditulis ke database Sink Anda. Tidak String preSQL
postSQLs

Tip

  1. Disarankan untuk memecah skrip batch tunggal dengan beberapa perintah menjadi beberapa batch.
  2. Hanya pernyataan Bahasa Definisi Data (DDL) dan Bahasa Manipulasi Data (DML) yang menampilkan jumlah pembaruan sederhana yang dapat dijalankan sebagai bagian dari batch. Pelajari selengkapnya dari Melakukan operasi batch
  • Aktifkan ekstrak bertambah bertahap: Gunakan opsi ini untuk memberi tahu ADF untuk hanya memproses baris yang telah berubah sejak terakhir kali alur dijalankan.

  • Kolom inkremental: Saat menggunakan fitur ekstrak inkremental, Anda harus memilih kolom tanggal/waktu atau numerik yang ingin Anda gunakan sebagai marka air di tabel sumber Anda.

  • Mulai membaca dari awal: Mengatur opsi ini dengan ekstrak inkremental akan menginstruksikan ADF untuk membaca semua baris pada eksekusi pertama alur dengan ekstrak inkremental diaktifkan.

Contoh skrip sink Azure Database for MySQL

Saat Anda menggunakan Azure Database for MySQL sebagai jenis sink, skrip aliran data terkait adalah:

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

Properti aktivitas pencarian

Untuk mempelajari detail tentang properti, lihat Aktivitas pencarian.

Pemetaan jenis data untuk Azure Database for MySQL

Saat menyalin data dari Azure Database for MySQL, pemetaan berikut digunakan dari jenis data MySQL ke jenis data sementara yang digunakan secara internal dalam layanan. Lihat Pemetaan skema dan jenis data untuk mempelajari bagaimana aktivitas penyalinan memetakan skema sumber dan jenis data ke sink.

Jenis data Azure Database for MySQL Jenis data layanan sementara
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

Untuk daftar penyimpanan data yang didukung sebagai sumber dan sink oleh aktivitas salin, lihat penyimpanan data yang didukung.