Azure Data Factory veya Synapse Analytics kullanarak MySQL'den veri kopyalama

ŞUNLARA UYGULANIR: Azure Data Factory Azure Synapse Analytics

Tip

Microsoft Fabric'daki Data Factory, daha basit bir mimariye, yerleşik yapay zekaya ve yeni özelliklere sahip yeni nesil Azure Data Factory. Veri tümleştirmeyi yeni kullanmaya başladıysanız Fabric Data Factory ile başlayın. Mevcut ADF iş yükleri veri bilimi, gerçek zamanlı analiz ve raporlama genelinde yeni özelliklere erişmek için Fabric yükseltebilir.

Bu makalede, MySQL veritabanından veri kopyalamak için Azure Data Factory ve Synapse Analytics işlem hatlarında Kopyalama Etkinliği'nin nasıl kullanılacağı açıklanmıştır. Kopyalama etkinlikleri genel bakışına dayanan, kopyalama etkinliği hakkında genel bir bilgi sunan makaleyi esas alır.

Note

Bu bağlayıcı Microsoft Fabric'daki Data Factory'de de kullanılabilir. Fabric özgü yapılandırma ve özellikler için MySQL bağlayıcısı Fabric belgelerine bakın.

Note

MySQL için Azure Veritabanı hizmetinden veya hizmetinden veri kopyalamak için özelleştirilmiş MySQL için Azure Veritabanı bağlayıcısını kullanın.

Important

MySQL bağlayıcısı sürüm 1.0 kaldırma aşamasındadır. MySQL bağlayıcısını sürüm 1.0'dan 2.0'a yükseltmeniz önerilir.

Desteklenen özellikler

Bu MySQL bağlayıcısı aşağıdaki özellikler için desteklenir:

Desteklenen özellikler IR
Kopyalama etkinliği (kaynak/-) (1) (2)
Arama etkinliği (1) (2)

(1) Azure tümleştirme çalışma zamanı (2) Yerel barındırılan tümleştirme çalışma zamanı

Kopyalama etkinliği tarafından kaynak/havuz olarak desteklenen veri depolarının listesi için Desteklenen veri depoları tablosuna bakın.

Bu bağlantı aracı, MySQL bağlayıcısı sürüm 2.0 altında MySQL sürüm 5.5, 5.6, 5.7, 8.0, 8.1 ve 8.2'yi ve 1.0 sürümü için MySQL sürüm 5.6, 5.7 ve 8.0'i destekler.

Prerequisites

Veri deponuz bir yerel ağ, Azure sanal ağ veya Amazon Sanal Özel Bulut içinde bulunuyorsa, ona bağlanmak için kendinden barındırılan bir tümleştirme çalışma zamanı yapılandırmanız gerekir.

Veri deponuz yönetilen bir bulut veri hizmetiyse Azure Integration Runtime kullanabilirsiniz. Erişim, güvenlik duvarı kurallarında onaylanan IP'ler ile sınırlıysa, izin verme listesine Azure Integration Runtime IP ekleyebilirsiniz.

Şirket içi ağa erişmek için, şirket içinde barındırılan tümleştirme çalışma zamanı yüklemeden ve yapılandırmadan Azure Data Factory yönetilen sanal ağ tümleştirme çalışma zamanı özelliğini de kullanabilirsiniz.

Data Factory tarafından desteklenen ağ güvenlik mekanizmaları ve seçenekleri hakkında daha fazla bilgi için bkz . Veri erişim stratejileri.

Integration Runtime, 3.7 sürümünden itibaren yerleşik bir MySQL sürücüsü sağlar, bu nedenle herhangi bir sürücüyü el ile yüklemeniz gerekmez.

Başlangıç Yapmak

Kopyalama etkinliğini bir işlem hattıyla gerçekleştirmek için aşağıdaki araçlardan veya SDK'lardan birini kullanabilirsiniz:

Kullanıcı arabirimini kullanarak MySQL'e bağlı hizmet oluşturma

Azure portalı kullanıcı arabiriminde MySQL'e bağlı bir hizmet oluşturmak için aşağıdaki adımları kullanın.

  1. Azure Data Factory veya Synapse çalışma alanınızdaki Yönet sekmesine göz atın ve Bağlı Hizmetler'i seçin, ardından Yeni'ye tıklayın:

     Azure Data Factory UI ile yeni bir bağlı hizmet oluşturun.

  2. MySQL'i arayın ve MySQL bağlayıcısını seçin.

    MySQL bağlayıcısını seçin.

  3. Hizmet ayrıntılarını yapılandırın, bağlantıyı test edin ve yeni bağlı hizmeti oluşturun.

    MySQL'e bağlı bir hizmet yapılandırın.

Bağlayıcı yapılandırma ayrıntıları

Aşağıdaki bölümlerde, MySQL bağlayıcısına özgü Data Factory varlıklarını tanımlamak için kullanılan özelliklerle ilgili ayrıntılar sağlanır.

Bağlı hizmet özellikleri

2.0 sürümünü kullanıyorsanız, MySQL bağlı hizmeti için aşağıdaki özellikler desteklenir:

Property Description Required
type Tür özelliği şu şekilde ayarlanmalıdır: MySql Yes
driverVersion Sürüm 2.0'ı seçtiğinizde sürücü sürümü. Değer v2'dir. Yes
server MySQL Sunucunuzun adı. Yes
port MySQL sunucusuna bağlanmak için bağlantı noktası numarası. No
database MySQL veritabanınızın adı. Yes
username Kullanıcı adınız. Yes
password Kullanıcı adının parolası. Güvenli bir şekilde depolamak için bu alanı SecureString olarak işaretleyin. İsterseniz Azure Key Vault içinde depolanan bir gizli anahtarı kullanabilirsiniz. Yes
sslMode Bu seçenek, sürücünün MySQL'e bağlanırken TLS şifreleme ve doğrulama kullanıp kullanmadığını belirtir. Örneğin, SSLMode=<0/1/2/3/4>.
Seçenekler: DEVRE DIŞI (0) / TERCIH EDİLEN (1) (Varsayılan) / GEREKLİ (2) / VERIFY_CA (3) / VERIFY_IDENTITY (4)
Yes
useSystemTrustStore Bu seçenek, sistem güven deposundan veya belirli bir PEM dosyasından CA sertifikasının kullanılıp kullanılmayacağını belirtir. Örneğin; UseSystemTrustStore=<0/1>
Seçenekler: Etkin (1) / Devre Dışı (0) (Varsayılan)
No
connectVia Veri deposuna bağlanmak için kullanılacak Integration Runtime. Önkoşullar bölümünden daha fazla bilgi edinin. Belirtilmezse, varsayılan Azure Integration Runtime kullanır. No
Ek bağlantı özellikleri
allowZeroDateTime için bu özellik değerinin true belirtilmesi, özel "sıfır" tarih değerinin 0000-00-00 veritabanından alınmasına izin verir. false olarak ayarlanırsa (varsayılan), tarih sütunları DateTime değerleri olarak döndürülür, bu da 0000-00-00 alınamayacağı anlamına gelir.

MySQL, "sıfır" değerini 0000-00-00 "sahte tarih" olarak depolamanıza izin verir. Bazı durumlarda, bu özellik NULL değerleri kullanmaktan daha kullanışlıdır ve daha az veri ve dizin alanı kullanır. MySQL'de 0000-00-00'e izin vermemek için NO_ZERO_DATE modunu etkinleştirin. Daha fazla bilgi için bu makaleye bakın.
No
connectionTimeout Denemeyi sonlandırmadan ve hata oluşturmadan önce sunucu bağlantısını bekleme süresi (saniye cinsinden). No
convertZeroDateTime Geçersiz değerler içeren tarih veya tarih saat sütunları için true olarak ayarlayın, bu durumda DateTime.MinValue döndürülür. No
guidFormat Hangi sütun türünün (varsa) GUID olarak okunması gerektiğini belirler. Bu özelliği arayarak her sütun türünün açıklaması için bu makaleye gidin.

Sürüm 2.0, daha iyi performans için Char(36) değerini varsayılan olarak GUID türü olarak ele alır. Bağlayıcı, veritabanı işlemeyi kolaylaştırmak için Char(36) alanlarını GUID olarak ele alır. Bu işlem, GUID değerlerini ekleme, güncelleştirme ve alma gibi işlemleri basitleştirir ve bunların düz dizeler yerine uygulama kodunda GUID nesneleri olarak tutarlı bir şekilde yönetilmesini sağlar. Bu davranış, GUID'lerin birincil anahtar veya benzersiz tanımlayıcı olarak kullanıldığı ve daha iyi performans sağladığı senaryolarda özellikle yararlıdır. Bu varsayılan ayara ihtiyacınız yoksa, bağlantı özelliğinde yapılandırabilirsiniz guidFormat=none .
No
sslCert İstemciye ait PEM biçiminde olan SSL sertifika dosyasının yolu. SslKey de belirtilmelidir. No
sslKey PEM biçiminde istemcinin SSL özel anahtarının yolu. SslCert de belirtilmelidir. No
treatTinyAsBoolean true olarak ayarlandığında tinyint(1) değerleri Boole olarak döndürülür. Bu özelliğin false olarak ayarlanması, tinyint(1) değerinin SByte/Byte olarak döndürülmesine neden olur.

Sürüm 2.0, tinyint(1) değerini varsayılan olarak Boole türü olarak ele alır. Daha fazla bilgi için bu makaleye bakın. Bağlayıcının sayısal değeri küçük olarak döndürmesine izin vermek için, bağlantı özelliklerinde treatTinyAsBoolean=false ayarını yapın.
No

Example:

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

Örnek: Parolayı Azure Key Vault'ta depola

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

Sürüm 1.0 kullanıyorsanız aşağıdaki özellikler desteklenir:

Property Description Required
type Tür özelliği şu şekilde ayarlanmalıdır: MySql Yes
connectionString MySQL için Azure Veritabanı örneğine bağlanmak için gereken bilgileri belirtin.
Ayrıca parolayı Azure Key Vault'a ekleyebilir ve password yapılandırmasını bağlantı dizesinden çıkarabilirsiniz. Daha fazla ayrıntı içeren aşağıdaki örneklere ve >Azure Key Vault makalesinde kimlik bilgilerini depola makalesine bakın.
Yes
connectVia Veri deposuna bağlanmak için kullanılacak Integration Runtime. Önkoşullar bölümünden daha fazla bilgi edinin. Belirtilmezse, varsayılan Azure Integration Runtime kullanır. No

Tipik bir bağlantı dizesi Server=<server>;Port=<port>;Database=<database>;UID=<username>;PWD=<password>. Durumunuza göre ayarlayabileceğiniz daha fazla özellik:

Property Description Required
sslMode Bu seçenek, sürücünün MySQL'e bağlanırken TLS şifreleme ve doğrulama kullanıp kullanmadığını belirtir. Örneğin, SSLMode=<0/1/2/3/4>.
Seçenekler: DEVRE DIŞI (0) / TERCIH EDİLEN (1) (Varsayılan) / GEREKLİ (2) / VERIFY_CA (3) / VERIFY_IDENTITY (4)
Yes
SSLCert İstemcinin kimliğini kanıtlamak için kullanılan SSL sertifikasını içeren bir .pem dosyasının tam yolu ve adı.
Bu sertifikayı sunucuya göndermeden önce şifrelemek üzere özel bir anahtar belirtmek için özelliğini kullanın SSLKey .
Evet, iki yönlü SSL doğrulaması kullanıyorsanız.
SSLKey İki yönlü SSL doğrulaması sırasında istemci tarafı sertifikasını şifrelemek için kullanılan özel anahtarı içeren dosyanın tam yolu ve adı. Evet, iki yönlü SSL doğrulaması kullanıyorsanız.
useSystemTrustStore Bu seçenek, sistem güven deposundan veya belirli bir PEM dosyasından CA sertifikasının kullanılıp kullanılmayacağını belirtir. Örneğin; UseSystemTrustStore=<0/1>
Seçenekler: Etkin (1) / Devre Dışı (0) (Varsayılan)
No

Example:

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

Veri kümesi özellikleri

Veri kümelerini tanımlamak için kullanılabilen bölümlerin ve özelliklerin tam listesi için veri kümeleri makalesine bakın. Bu bölümde, MySQL veri kümesi tarafından desteklenen özelliklerin listesi sağlanır.

MySQL'den veri kopyalamak için aşağıdaki özellikler desteklenir:

Property Description Required
type Veri kümesinin tür özelliği şu şekilde ayarlanmalıdır: MySqlTable Yes
tableName MySQL veritabanındaki tablonun adı. Hayır (etkinlik kaynağında "sorgu" belirtilirse)

Example

{
    "name": "MySQLDataset",
    "properties":
    {
        "type": "MySqlTable",
        "typeProperties": {},
        "schema": [],
        "linkedServiceName": {
            "referenceName": "<MySQL linked service name>",
            "type": "LinkedServiceReference"
        }
    }
}

Yazılan veri kümesini RelationalTable kullanıyorsanız, bu veri kümesi mevcut haliyle desteklenmeye devam ederken, bundan sonra yeni bir veri kümesini kullanmanız tavsiye edilir.

Kopyalama etkinliği özellikleri

Etkinlikleri tanımlamak için kullanılabilen bölümlerin ve özelliklerin tam listesi için Pipelines makalesine bakın. Bu bölümde, MySQL kaynağı tarafından desteklenen özelliklerin listesi sağlanır.

Kaynak olarak MySQL

MySQL'den veri kopyalamak için kopyalama etkinliği kaynağı bölümünde aşağıdaki özellikler desteklenir:

Property Description Required
type Kopyalama etkinliği kaynağının type özelliği şu şekilde ayarlanmalıdır: MySqlSource Yes
query Verileri okumak için özel SQL sorgusunu kullanın. Örneğin: "SELECT * FROM MyTable". Hayır (veri kümesinde "tableName" belirtilirse)

Example:

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

Yazılan kaynağı kullanıyorsanız RelationalSource , yine de olduğu gibi desteklenir, ancak bundan sonra yenisini kullanmanız önerilir.

MySQL için veri türü eşlemesi

MySQL'den veri kopyalarken, MySQL veri türlerinden hizmet tarafından dahili olarak kullanılan ara veri türlerine aşağıdaki eşlemeler kullanılır. Kopyalama etkinliğinin kaynak şemayı ve veri türünü havuza nasıl eşlediğini öğrenmek için bkz . Şema ve veri türü eşlemeleri .

MySQL veri türü Ara hizmet veri türü (sürüm 2.0 için) Ara hizmet veri türü (sürüm 1.0 için)
BIGINT Int64 Int64
BIGINT İŞARETSIZ UInt64 Decimal
Bİt(1) UInt64 Boolean
BIT(M), M>1 UInt64 Byte[]
BLOB (İkili Büyük Nesne) Byte[] Byte[]
BOOL Boolean
(TreatTinyAsBoolean=false ise, SByte olarak eşlenir. TreatTinyAsBoolean varsayılan olarak true'dur)
Int16
CHAR String String
DATE Tarih ve Saat Tarih ve Saat
TARİHSAA T Tarih ve Saat Tarih ve Saat
ONDALIK Decimal Ondalık, Dize
ÇİFT Double Double
ÇIFT DUYARLıK Double Double
ENUM String String
FLOAT Single Single
INT Int32 Int32
INT UNSIGNED (işaretsiz) Int64 Int64
INTEGER Int32 Int32
İŞARETSIZ TAMSAYı UInt32 Int64
JSON String Byte[]
UZUN VARBINARY Byte[] Byte[]
UZUN VARCHAR String String
LONGBLOB Byte[] Byte[]
LONGTEXT String String
MEDIUMBLOB Byte[] Byte[]
MEDIUMINT Int32 Int32
MEDIUMINT UNSIGNED (orta boyutlu işaretsiz tamsayı) UInt32 Int64
ORTA METIN String String
SAYISAL Decimal Decimal
GERÇEK Double Double
SET String String
SMALLINT Int16 Int16
Küçük Tamsayı İşaretsiz UInt16 Int32
METİN String String
TIME TimeSpan TimeSpan
TIMESTAMP Tarih ve Saat Tarih ve Saat
TINYBLOB Byte[] Byte[]
TINYINT SByte Int16
TINYINT imzasız Int16 Int16
TINYTEXT String String
VARCHAR String String
YEAR Int Int

Arama etkinliği özellikleri

Özellikler hakkında ayrıntılı bilgi edinmek için Arama etkinliği'ne bakın.

MySQL bağlayıcısını yükseltme

MySQL bağlayıcınızı yükseltmenize yardımcı olacak adımlar şunlardır:

  1. Bağlı hizmeti düzenle sayfasında, Sürüm altında 2.0'ı seçin ve Bağlı hizmet özellikleri'ne başvurarak bağlı hizmeti yapılandırın.

  2. Sürüm 2.0 için veri türü eşlemesi, sürüm 1.0'dan farklıdır. Sürüm 2.0 veri türü eşlemesini öğrenmek için bkz . MySQL için veri türü eşleme.

  3. Sürüm 2.0 daha fazla MySQL sürümünü destekler. Daha fazla bilgi için bkz . Desteklenen özellikler.

Bu bölümde MySQL bağlayıcısı sürüm 2.0 için en iyi yöntemler tanıtlenmektedir.

SSL anahtarı yüklenemiyor

  • Belirtiler: Bağlantı özelliği olarak SSL Anahtarı ile MySQL bağlayıcısı sürüm 2.0 kullanıyorsanız, aşağıdaki hata iletisini alabilirsiniz: Could not load the client key from your_pem_file: Unrecognized PEM header: -----BEGIN PRIVATE KEY-----

  • Neden: Sürüm 2.0, PCKS#8 biçiminin şifresini çözemiyor.

  • Öneri: PEM biçimini PCKS#1'e dönüştürün.

Aşağıdaki tabloda, sürüm 2.0 ile sürüm 1.0 kullanan MySQL arasındaki veri türü eşleme farkları gösterilmektedir.

MySQL veri türü Ara hizmet veri türü (sürüm 2.0 kullanılarak) Ara hizmet veri türü (sürüm 1.0 kullanılarak)
BIGINT İŞARETSIZ UInt64 Decimal
Bİt(1) UInt64 Boolean
BIT(M), M>1 UInt64 Byte[]
BOOL Boolean Int16
ONDALIK Decimal Ondalık, Dize
İŞARETSIZ TAMSAYı UInt32 Int64
JSON String Byte[]
MEDIUMINT UNSIGNED (orta boyutlu işaretsiz tamsayı) UInt32 Int64
Küçük Tamsayı İşaretsiz UInt16 Int32
TINYINT SByte Int16

Kopyalama etkinliği tarafından kaynak ve havuz olarak desteklenen veri depolarının listesi için bkz . desteklenen veri depoları.