Menyalin data dari 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 database MySQL. Artikel tersebut dibuat berdasarkan artikel gambaran umum aktivitas salin yang menyajikan gambaran umum aktivitas salin.
Catatan
Untuk menyalin data dari atau ke layanan Azure Database for MySQL, gunakan konektor Azure Database for MySQL khusus.
Penting
Konektor MySQL versi 2.0 menyediakan dukungan MySQL asli yang ditingkatkan. Jika Anda menggunakan konektor MySQL versi 1.0 dalam solusi Anda, silakan tingkatkan konektor MySQL Anda karena versi 1.0 berada di tahap Akhir Dukungan. Lihat bagian ini untuk detail tentang perbedaan antara versi 2.0 dan versi 1.0.
Kemampuan yang didukung
Konektor MySQL ini didukung untuk kemampuan berikut:
Kemampuan yang didukung | IR |
---|---|
Aktivitas penyalinan (sumber/-) | (1) (2) |
Aktivitas pencarian | (1) (2) |
① Runtime integrasi Azure ② Runtime integrasi yang dihost sendiri
Untuk daftar penyimpanan data yang didukung sebagai sumber/sink oleh aktivitas salin, lihat tabel Penyimpanan data yang didukung.
Konektor ini mendukung MySQL versi 5.5, 5.6, 5.7, 8.0, 8.1 dan 8.2 di bawah konektor MySQL versi 2.0 dan 5.6, 5.7 dan 8.0 untuk versi 1.0.
Prasyarat
Jika penyimpanan data Anda terletak di dalam jaringan lokal, jaringan virtual Azure, atau Amazon Virtual Private Cloud, Anda harus mengonfigurasi runtime integrasi yang dihosting sendiri untuk menghubungkannya.
Jika penyimpanan data Anda adalah layanan data cloud terkelola, Anda dapat menggunakan Azure Integration Runtime. Jika akses dibatasi untuk IP yang disetujui dalam aturan firewall, Anda dapat menambahkan IP Azure Integration Runtime ke daftar izinkan.
Anda juga dapat menggunakan fitur runtime integrasi jaringan virtual terkelola di Azure Data Factory untuk mengakses jaringan lokal tanpa menginstal dan mengonfigurasi runtime integrasi yang dihosting sendiri.
Untuk informasi selengkapnya tentang mekanisme dan opsi keamanan jaringan yang didukung oleh Data Factory, lihat Strategi akses data.
Integration Runtime menyediakan driver MySQL bawaan mulai dari versi 3.7, oleh karena itu Anda tidak perlu memasang driver apa pun secara manual.
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 MySQL menggunakan UI
Gunakan langkah-langkah berikut untuk membuat layanan tertaut ke MySQL di UI portal 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 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 MySQL.
Properti layanan tertaut
Jika Anda menggunakan versi 2.0, properti berikut ini didukung untuk layanan tertaut MySQL:
Properti | Deskripsi | Wajib |
---|---|---|
jenis | Properti jenis harus diatur ke: MySql | Ya |
driverVersion | Versi driver saat Anda memilih versi 2.0. Nilainya adalah v2. | Ya |
server | Nama Server MySQL Anda. | Ya |
pelabuhan | Nomor port untuk menyambungkan ke server MySQL. | No |
database | Nama database MySQL Anda. | Ya |
Nama pengguna | Nama pengguna Anda. | Ya |
kata sandi | Kata sandi untuk nama pengguna. Tandai bidang ini sebagai SecureString untuk menyimpannya dengan aman. Atau, Anda dapat mereferensikan rahasia yang disimpan di Azure Key Vault. | Ya |
sslMode | Opsi ini menentukan apakah driver menggunakan enkripsi dan verifikasi TLS saat menyambungkan ke MySQL. Misalnya, SSLMode=<0/1/2/3/4> .Opsi: DINONAKTIFKAN (0) / PILIHAN (1) (Default) / DIPERLUKAN (2) / VERIFY_CA (3) / VERIFY_IDENTITY (4) |
Ya |
useSystemTrustStore | Opsi ini menentukan apakah akan menggunakan sertifikat OS dari penyimpanan kepercayaan sistem atau dari file PEM tertentu. Misalnya; UseSystemTrustStore=<0/1> Opsi: Diaktifkan (1) / Dinonaktifkan (0) (Default) |
No |
connectVia | Runtime integrasi yang akan digunakan untuk menyambungkan ke penyimpanan data. Pelajari selengkapnya dari bagian Prasyarat. Jika tidak ditentukan, Azure Integration Runtime default akan digunakan. | No |
Properti koneksi tambahan | ||
allowZeroDateTime | Menentukan nilai properti ini untuk true memungkinkan nilai 0000-00-00 tanggal "nol" khusus diambil dari database. Jika diatur ke false (default), kolom tanggal dikembalikan sebagai nilai DateTime, yang berarti 0000-00-00 tidak dapat diambil. MySQL memungkinkan Anda menyimpan nilai 0000-00-00 "nol" sebagai "tanggal dummy". Dalam beberapa kasus, fitur ini lebih nyaman daripada menggunakan nilai NULL, dan menggunakan lebih sedikit data dan ruang indeks. Untuk melarang 0000-00-00 di MySQL, aktifkan mode NO_ZERO_DATE . Untuk informasi selengkapnya, lihat artikel ini. |
No |
connectionTimeout | Lamanya waktu (dalam detik) untuk menunggu koneksi ke server sebelum mengakhiri upaya dan menghasilkan kesalahan. | No |
convertZeroDateTime | Atur ke true untuk mengembalikan DateTime.MinValue untuk kolom tanggal atau tanggalwaktu yang memiliki nilai yang tidak diizinkan. |
No |
guidFormat | Menentukan jenis kolom mana (jika ada) yang harus dibaca sebagai GUID. Buka artikel ini untuk deskripsi setiap tipe kolom dengan mencari properti ini. Versi 2.0 memperlakukan Char(36) sebagai jenis GUID secara default untuk performa yang lebih baik. Konektor memperlakukan bidang Char(36) sebagai GUID untuk penanganan database yang lebih mudah. Perawatan ini menyederhanakan operasi seperti menyisipkan, memperbarui, dan mengambil nilai GUID, memastikan mereka dikelola secara konsisten sebagai objek GUID dalam kode aplikasi alih-alih string biasa. Perilaku ini sangat berguna dalam skenario di mana GUID digunakan sebagai kunci primer atau pengidentifikasi unik dan memberikan performa yang lebih baik. Jika Anda tidak memerlukan pengaturan default ini, Anda dapat mengonfigurasi guidFormat=none di properti koneksi. |
No |
sslCert | Jalur ke file sertifikat SSL klien dalam format PEM. SslKey juga harus ditentukan. | No |
sslKey | Jalur ke kunci privat SSL klien dalam format PEM. SslCert juga harus ditentukan. | No |
treatTinyAsBoolean | Ketika diatur ke true, nilai tinyint(1) dikembalikan sebagai Boolean. Mengatur properti ini ke false menyebabkan tinyint(1) dikembalikan sebagai SByte/Byte. Versi 2.0 memperlakukan tinyint(1) sebagai jenis Boolean secara default. Untuk informasi selengkapnya, lihat artikel ini. Untuk membiarkan konektor mengembalikan kecil sebagai numerik, atur treatTinyAsBoolean=false di properti koneksi. |
No |
Contoh:
{
"name": "MySQLLinkedService",
"properties": {
"type": "MySql",
"typeProperties": {
"server": "<server>",
"port": 3306,
"database": "<database>",
"username": "<username>",
"password": {
"type": "SecureString",
"value": "<password>"
},
"sslmode": <sslmode>,
"usesystemtruststore": <UseSystemTrustStore>,
"driverVersion": "v2"
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
Contoh: simpan kata sandi di Azure Key Vault
{
"name": "MySQLLinkedService",
"properties": {
"type": "MySql",
"typeProperties": {
"server": "<server>",
"port": 3306,
"database": "<database>",
"username": "<username>",
"sslmode": <sslmode>,
"usesystemtruststore": <UseSystemTrustStore>,
"password": {
"type": "AzureKeyVaultSecret",
"store": {
"referenceName": "<Azure Key Vault linked service name>",
"type": "LinkedServiceReference"
},
"secretName": "<secretName>"
},
"driverVersion": "v2"
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
Jika Anda menggunakan versi 1.0, properti berikut ini didukung:
Properti | Deskripsi | Wajib |
---|---|---|
jenis | Properti jenis harus diatur ke: MySql | 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. Pelajari selengkapnya dari bagian Prasyarat. Jika tidak ditentukan, Azure Integration Runtime default akan digunakan. | No |
String koneksi biasanya adalah Server=<server>;Port=<port>;Database=<database>;UID=<username>;PWD=<password>
. Properti lainnya yang dapat Anda tetapkan untuk kasus Anda:
Properti | Deskripsi | Wajib diisi |
---|---|---|
sslMode | Opsi ini menentukan apakah driver menggunakan enkripsi dan verifikasi TLS saat menyambungkan ke MySQL. Misalnya, SSLMode=<0/1/2/3/4> .Opsi: DINONAKTIFKAN (0) / PILIHAN (1) (Default) / DIPERLUKAN (2) / VERIFY_CA (3) / VERIFY_IDENTITY (4) |
Ya |
SSLCert | Jalur lengkap dan nama file .pem yang berisi sertifikat SSL yang digunakan untuk membuktikan identitas klien. Untuk menentukan kunci privat untuk mengenkripsi sertifikat ini sebelum mengirimnya ke server, gunakan properti SSLKey tersebut. |
Ya, jika menggunakan verifikasi SSL dua arah. |
SSLKey | Jalur lengkap dan nama file yang berisi kunci privat yang digunakan untuk mengenkripsi sertifikat pihak klien selama verifikasi SSL dua arah. | Ya, jika menggunakan verifikasi SSL dua arah. |
useSystemTrustStore | Opsi ini menentukan apakah akan menggunakan sertifikat OS dari penyimpanan kepercayaan sistem atau dari file PEM tertentu. Misalnya; UseSystemTrustStore=<0/1> Opsi: Diaktifkan (1) / Dinonaktifkan (0) (Default) |
No |
Contoh:
{
"name": "MySQLLinkedService",
"properties": {
"type": "MySql",
"typeProperties": {
"connectionString": "Server=<server>;Port=<port>;Database=<database>;UID=<username>;PWD=<password>"
},
"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 MySQL.
Untuk menyalin data dari MySQL, properti berikut didukung:
Properti | Deskripsi | Wajib |
---|---|---|
jenis | Properti jenis himpunan data harus diatur ke: MySqlTable | Ya |
tableName | Nama tabel dalam database MySQL. | Tidak (jika "kueri" di sumber aktivitas ditentukan) |
Contoh
{
"name": "MySQLDataset",
"properties":
{
"type": "MySqlTable",
"typeProperties": {},
"schema": [],
"linkedServiceName": {
"referenceName": "<MySQL linked service name>",
"type": "LinkedServiceReference"
}
}
}
Jika Anda menggunakan himpunan data berjenis RelationalTable
, himpunan data tersebut masih didukung apa adanya, sementara Anda disarankan untuk menggunakan yang baru ke depannya.
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 MySQL.
MySQL sebagai sumber
Untuk menyalin data dari MySQL, properti berikut ini didukung di bagiansumber aktivitas salin:
Properti | Deskripsi | Wajib |
---|---|---|
jenis | Properti jenis dari sumber aktivitas salin harus diatur ke: MySqlSource | Ya |
pertanyaan | Gunakan kueri SQL kustom untuk membaca data. Misalnya: "SELECT * FROM MyTable" . |
Tidak (jika "tableName" di himpunan data ditentukan) |
Contoh:
"activities":[
{
"name": "CopyFromMySQL",
"type": "Copy",
"inputs": [
{
"referenceName": "<MySQL input dataset name>",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "<output dataset name>",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "MySqlSource",
"query": "SELECT * FROM MyTable"
},
"sink": {
"type": "<sink type>"
}
}
}
]
Jika Anda menggunakan sumber berjenis RelationalSource
, sumber ini masih didukung apa adanya, sementara Anda disarankan untuk menggunakan yang baru ke depannya.
Pemetaan jenis data untuk MySQL
Saat menyalin data dari MySQL, pemetaan berikut ini digunakan dari jenis data MySQL ke jenis data sementara yang digunakan oleh layanan internal. Lihat Pemetaan skema dan jenis data untuk mempelajari bagaimana aktivitas penyalinan memetakan skema sumber dan jenis data ke sink.
Jenis data MySQL | Jenis data layanan sementara (untuk versi 2.0) | Jenis data layanan sementara (untuk versi 1.0) |
---|---|---|
bigint |
Int64 |
Int64 |
bigint unsigned |
Decimal |
Decimal |
bit(1) |
UInt64 |
Boolean |
bit(M), M>1 |
UInt64 |
Byte[] |
blob |
Byte[] |
Byte[] |
bool |
Boolean (Jika TreatTinyAsBoolean=false, maka akan dipetakan sebagai SByte . TreatTinyAsBoolean benar secara default ) |
Int16 |
char |
String |
String |
date |
Datetime |
Datetime |
datetime |
Datetime |
Datetime |
decimal |
Decimal |
Decimal, String |
double |
Double |
Double |
double precision |
Double |
Double |
enum |
String |
String |
float |
Single |
Single |
int |
Int32 |
Int32 |
int unsigned |
Int64 |
Int64 |
integer |
Int32 |
Int32 |
integer unsigned |
Int64 |
Int64 |
JSON |
String |
- |
long varbinary |
Byte[] |
Byte[] |
long varchar |
String |
String |
longblob |
Byte[] |
Byte[] |
longtext |
String |
String |
mediumblob |
Byte[] |
Byte[] |
mediumint |
Int32 |
Int32 |
mediumint unsigned |
Int64 |
Int64 |
mediumtext |
String |
String |
numeric |
Decimal |
Decimal |
real |
Double |
Double |
set |
String |
String |
smallint |
Int16 |
Int16 |
smallint unsigned |
Int32 |
Int32 |
text |
String |
String |
time |
TimeSpan |
TimeSpan |
timestamp |
Datetime |
Datetime |
tinyblob |
Byte[] |
Byte[] |
tinyint |
SByte ( tinyint(1) dipetakan ke Boolean ) |
Int16 |
tinyint unsigned |
Int16 |
Int16 |
tinytext |
String |
String |
varchar |
String |
String |
year |
Int |
Int |
Properti aktivitas pencarian
Untuk mempelajari detail tentang properti, lihat Aktivitas pencarian.
Meningkatkan konektor MySQL
Berikut adalah langkah-langkah yang membantu Anda meningkatkan konektor MySQL Anda:
Di halaman Edit layanan tertaut, pilih 2.0 di bawah Versi dan konfigurasikan layanan tertaut dengan merujuk ke Properti layanan tertaut.
Pemetaan jenis data untuk versi 2.0 berbeda dari itu untuk versi 1.0. Untuk mempelajari pemetaan jenis data versi 2.0, lihat Pemetaan jenis data untuk MySQL.
Versi 2.0 mendukung lebih banyak versi MySQL. Untuk informasi selengkapnya, lihat Kemampuan yang didukung.
Praktik terbaik untuk konektor MySQL versi 2.0
Bagian ini memperkenalkan praktik terbaik untuk konektor MySQL versi 2.0.
Tidak dapat memuat kunci SSL
Gejala: Jika Anda menggunakan konektor MySQL versi 2.0 dengan Kunci SSL sebagai properti koneksi, Anda mungkin memenuhi pesan kesalahan berikut:
Could not load the client key from your_pem_file: Unrecognized PEM header: -----BEGIN PRIVATE KEY-----
Penyebab: Versi 2.0 tidak dapat mendekripsi format PCKS#8.
Rekomendasi: Konversi format PEM ke PCKS#1.
Perbedaan antara MySQL versi 2.0 dan versi 1.0
Tabel di bawah ini memperlihatkan perbedaan pemetaan jenis data antara MySQL menggunakan versi 2.0 dan versi 1.0.
Jenis data MySQL | Jenis data layanan sementara (menggunakan versi 2.0) | Jenis data layanan sementara (menggunakan versi 1.0) |
---|---|---|
bit(1) | UInt64 | Boolean |
bit(M), M>1 | UInt64 | Byte[] |
bool | Boolean | Int16 |
JSON | String | Byte[] |
Konten terkait
Untuk daftar penyimpanan data yang didukung sebagai sumber dan sink oleh aktivitas salin, lihat penyimpanan data yang didukung.