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) | (1) (2) | ✓ |
Memetakan aliran data (sumber/sink) | (1) | ✓ |
Aktivitas pencarian | (1) (2) | ✓ |
① Runtime integrasi Azure ② Runtime integrasi yang dihost sendiri
Memulai
Untuk melakukan aktivitas Salin dengan alur, Anda dapat menggunakan salah satu alat atau SDK berikut:
- Alat Penyalinan Data
- Portal Microsoft Azure
- SDK .NET
- SDK Python
- Azure PowerShell
- REST API
- Templat Azure Resource Manager
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.
Telusuri ke tab Kelola di ruang kerja Azure Data Factory atau Synapse Anda dan pilih Layanan Tertaut, lalu klik Baru:
Cari MySQL dan pilih konektor Azure DB for MySQL.
Konfigurasikan detail layanan, uji koneksi, dan buat layanan tertaut baru.
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. | No |
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) | No |
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) | No |
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. Misalnya: "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) | No |
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. | No |
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 |
---|---|---|---|---|
Tabel | Jika Anda memilih Tabel sebagai input, aliran data mengambil semua data dari tabel yang ditentukan dalam himpunan data. | No | - | (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" . |
No | 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 . |
No | Array | input |
Ukuran batch | Tentukan ukuran batch untuk menggugus data besar ke dalam batch. | No | Bilangan bulat | batchSize |
Tingkat Isolasi | Pilih salah satu tingkat isolasi berikut: - Read Committed - Read Uncommitted (default) - Repeatable Read - Serializable - Tidak ada (abaikan tingkat isolasi) |
No | 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. |
No | Array | kunci |
Lompati penulisan kolom kunci | Jika Anda ingin tidak menulis nilai ke kolom kunci, pilih "Lompati penulisan kolom kunci". | No | 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. |
No | 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. | No | 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. | No | String | preSQL postSQLs |
Tip
- Disarankan untuk memecah skrip batch tunggal dengan beberapa perintah menjadi beberapa batch.
- 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 |
Konten terkait
Untuk daftar penyimpanan data yang didukung sebagai sumber dan sink oleh aktivitas salin, lihat penyimpanan data yang didukung.