Azure Data Factory veya Synapse Analytics kullanarak MySQL için Azure Veritabanı verileri kopyalama ve dönüştürme

UYGULANANLAR: Azure Data Factory Azure Synapse Analytics

Bahşiş

Kuruluşlar için hepsi bir arada analiz çözümü olan Microsoft Fabric'te Data Factory'yi deneyin. Microsoft Fabric , veri taşımadan veri bilimine, gerçek zamanlı analize, iş zekasına ve raporlamaya kadar her şeyi kapsar. Yeni bir deneme sürümünü ücretsiz olarak başlatmayı öğrenin!

Bu makalede, Azure Data Factory veya Synapse Analytics işlem hatlarında kopyalama etkinliğini kullanarak verileri MySQL için Azure Veritabanı ve MySQL için Azure Veritabanı'de verileri dönüştürmek için Veri Akışı kullanma adımları açıklanmaktadır. Daha fazla bilgi edinmek için Azure Data Factory ve Synapse Analytics'e yönelik giriş makalelerini okuyun.

Bu bağlayıcı,

Şirket içinde veya bulutta bulunan genel MySQL veritabanından veri kopyalamak için MySQL bağlayıcısını kullanın.

Önkoşullar

Bu hızlı başlangıç için başlangıç noktası olarak aşağıda belirtilen aşağıdaki kaynaklar ve yapılandırma gerekir:

  • Genel erişime veya özel uç noktaya sahip MySQL için mevcut bir Azure veritabanı Tek sunucu veya MySQL Esnek Sunucusu.
  • MySQL sunucusunun ağ sayfasında Azure'daki herhangi bir Azure hizmetinden bu sunucuya genel erişime izin ver'i etkinleştirin. Bu, Data factory studio'yu kullanmanıza olanak sağlar.

Desteklenen özellikler

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

Desteklenen özellikler IR Yönetilen özel uç nokta
Kopyalama etkinliği (kaynak/havuz) ① ②
Eşleme veri akışı (kaynak/havuz)
Arama etkinliği ① ②

(1) Azure tümleştirme çalışma zamanı (2) Şirket içinde barındırılan tümleştirme çalışma zamanı

Başlarken

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

Kullanıcı arabirimini kullanarak MySQL için Azure Veritabanı bağlı hizmet oluşturma

Azure portalı kullanıcı arabiriminde MySQL için Azure Veritabanı 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ızda Yönet sekmesine göz atın ve Bağlı Hizmetler'i seçin, ardından Yeni'ye tıklayın:

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

    Select the Azure Database for MySQL connector.

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

    Configure a linked service to Azure Database for MySQL.

Bağlan veya yapılandırma ayrıntıları

Aşağıdaki bölümlerde, MySQL için Azure Veritabanı 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

Bağlı MySQL için Azure Veritabanı hizmet için aşağıdaki özellikler desteklenir:

Özellik Açıklama Gerekli
type Tür özelliği şu şekilde ayarlanmalıdır: AzureMySql Evet
Connectionstring MySQL için Azure Veritabanı örneğine bağlanmak için gereken bilgileri belirtin.
Ayrıca Azure Key Vault'a parola ekleyebilir ve yapılandırmayı password bağlantı dizesi çıkarabilirsiniz. Diğer ayrıntılarla birlikte aşağıdaki örneklere ve Azure Key Vault'ta kimlik bilgilerini depolama makalesine bakın.
Evet
connectVia Veri deposuna bağlanmak için kullanılacak Integration Runtime. Azure Integration Runtime veya Şirket İçinde Barındırılan Tümleştirme Çalışma Zamanı'nı (veri deponuz özel ağda bulunuyorsa) kullanabilirsiniz. Belirtilmezse, varsayılan Azure Integration Runtime'ı kullanır. No

Tipik bir bağlantı dizesi.Server=<server>.mysql.database.azure.com;Port=<port>;Database=<database>;UID=<username>;PWD=<password> Servis talebinize göre ayarlayabileceğiniz diğer özellikler:

Özellik Açıklama Seçenekler Zorunlu
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> DEVRE DIŞI (0) / TERCIH EDİLEN (1) (Varsayılan) / GEREKLİ (2) / VERIFY_CA (3) / VERIFY_IDENTITY (4) No
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>; Etkin (1) / Devre Dışı (0) (Varsayılan) No

Örnek:

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

Örnek: Azure Key Vault'ta parola depolama

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

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 için Azure Veritabanı veri kümesi tarafından desteklenen özelliklerin listesi sağlanır.

MySQL için Azure Veritabanı'dan veri kopyalamak için veri kümesinin tür özelliğini AzureMySqlTable olarak ayarlayın. Aşağıdaki özellikler desteklenir:

Özellik Açıklama Gerekli
type Veri kümesinin tür özelliği şu şekilde ayarlanmalıdır: AzureMySqlTable Evet
tableName MySQL veritabanındaki tablonun adı. Hayır (etkinlik kaynağında "sorgu" belirtilirse)

Örnek

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

Kopyalama etkinliğinin özellikleri

Etkinlikleri tanımlamak için kullanılabilen bölümlerin ve özelliklerin tam listesi için İşlem hatları makalesine bakın. Bu bölüm, MySQL için Azure Veritabanı kaynak ve havuz tarafından desteklenen özelliklerin listesini sağlar.

Kaynak olarak MySQL için Azure Veritabanı

verileri MySQL için Azure Veritabanı kopyalamak için kopyalama etkinliği kaynağı bölümünde aşağıdaki özellikler desteklenir:

Özellik Açıklama Gerekli
type Kopyalama etkinliği kaynağının type özelliği şu şekilde ayarlanmalıdır: AzureMySqlSource Evet
query Verileri okumak için özel SQL sorgusunu kullanın. Örneğin: "SELECT * FROM MyTable". Hayır (veri kümesinde "tableName" belirtilirse)
queryCommandTimeout Sorgu isteğinin zaman aşımına uğraması için bekleme süresi. Varsayılan değer 120 dakikadır (02:00:00) No

Örnek:

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

Havuz olarak MySQL için Azure Veritabanı

Verileri MySQL için Azure Veritabanı kopyalamak için kopyalama etkinliği havuzu bölümünde aşağıdaki özellikler desteklenir:

Özellik Açıklama Gerekli
type Kopyalama etkinliği havuzu type özelliği şu şekilde ayarlanmalıdır: AzureMySqlSink Evet
preCopyScript Her çalıştırmada MySQL için Azure Veritabanı veri yazmadan önce yürütülecek kopyalama etkinliği için bir SQL sorgusu belirtin. Önceden yüklenmiş verileri temizlemek için bu özelliği kullanabilirsiniz. No
writeBatchSize Arabellek boyutu writeBatchSize değerine ulaştığında MySQL için Azure Veritabanı tablosuna veri ekler.
İzin verilen değer, satır sayısını temsil eden tamsayıdır.
Hayır (varsayılan değer 10.000'dir)
writeBatchTimeout Zaman aşımına uğramadan önce toplu ekleme işleminin tamamlanması için bekleme süresi.
İzin verilen değerler Zaman Aralığı'dır. Örnek olarak 00:30:00 (30 dakika) gösteriliyor.
Hayır (varsayılan değer: 00:00:30)

Örnek:

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

Eşleme veri akışı özellikleri

Eşleme veri akışındaki verileri dönüştürürken, MySQL için Azure Veritabanı tablolarını okuyabilir ve tablolara yazabilirsiniz. Daha fazla bilgi için bkz . Eşleme veri akışlarında kaynak dönüştürme ve havuz dönüşümü . Kaynak ve havuz türü olarak bir MySQL için Azure Veritabanı veri kümesini veya satır içi veri kümesini kullanmayı seçebilirsiniz.

Kaynak dönüştürme

Aşağıdaki tabloda, MySQL için Azure Veritabanı kaynağı tarafından desteklenen özellikler listelenmektedir. Bu özellikleri Kaynak seçenekleri sekmesinde düzenleyebilirsiniz.

Adı Açıklama Gerekli İzin verilen değerler Veri akışı betiği özelliği
Tablo Giriş olarak Tablo'yı seçerseniz, veri akışı veri kümesinde belirtilen tablodan tüm verileri getirir. No - (yalnızca satır içi veri kümesi için)
tableName
Sorgu Giriş olarak Sorgu'yu seçerseniz, kaynaktan veri getirmek için bir SQL sorgusu belirtin. Bu sorgu, veri kümesinde belirttiğiniz tüm tabloları geçersiz kılar. Sorguları kullanmak, test veya arama için satırları azaltmanın harika bir yoludur.

Order By yan tümcesi desteklenmez, ancak tam bir SELECT FROM deyimi ayarlayabilirsiniz. Kullanıcı tanımlı tablo işlevlerini de kullanabilirsiniz. select * from udfGetData() , SQL'de veri akışında kullanabileceğiniz bir tablo döndüren bir UDF'dir.
Sorgu örneği: select * from mytable where customerId > 1000 and customerId < 2000 veya select * from "MyTable".
No String query
Saklı yordam Giriş olarak Saklı yordam'ı seçerseniz, kaynak tablodaki verileri okumak için saklı yordamın adını belirtin veya hizmetten yordam adlarını bulmasını istemek için Yenile'yi seçin. Evet (Giriş olarak Saklı yordam'ı seçerseniz) String procedureName
Yordam parametreleri Giriş olarak Saklı yordam'ı seçerseniz, saklı yordam için herhangi bir giriş parametresini yordamda ayarlanan sırayla belirtin veya formu @paraNamekullanarak tüm yordam parametrelerini içeri aktarmak için İçeri Aktar'ı seçin. No Dizi Giriş
Toplu iş boyutu Büyük verileri toplu işlere ayırmak için bir toplu iş boyutu belirtin. No Tamsayı batchSize
Yalıtım Düzeyi Aşağıdaki yalıtım düzeylerinden birini seçin:
- Okundu
- Okunmamış (varsayılan)
- Yinelenebilir Okuma
-Serileştirilebilir
- Yok (yalıtım düzeyini yoksay)
No READ_COMMITTED
READ_UNCOMMITTED
REPEATABLE_READ
SERİLEŞTİRİLEBİLİR
HİÇBİRİ
ısolationlevel

MySQL için Azure Veritabanı kaynak betik örneği

Kaynak türü olarak MySQL için Azure Veritabanı kullandığınızda, ilişkili veri akışı betiği şöyledir:

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

Havuz dönüşümü

Aşağıdaki tabloda MySQL için Azure Veritabanı havuzu tarafından desteklenen özellikler listelenmektedir. Bu özellikleri Havuz seçenekleri sekmesinde düzenleyebilirsiniz.

Adı Açıklama Gerekli İzin verilen değerler Veri akışı betiği özelliği
Güncelleştirme yöntemi Veritabanı hedefinizde hangi işlemlere izin verileceğini belirtin. Varsayılan değer yalnızca eklemelere izin vermektir.
Satırları güncelleştirmek, eklemek veya silmek için, bu eylemlerin satırlarını etiketlemek için bir Değişiklik satırı dönüştürmesi gerekir.
Evet true veya false deletable
eklenebilir
Güncelleştirilebilir
upsertable
Anahtar sütunlar Güncelleştirmeler, upsert'ler ve silmeler için, hangi satırın değiştirileceğini belirlemek için anahtar sütunlarının ayarlanması gerekir.
Anahtar olarak seçtiğiniz sütun adı, sonraki upsert, delete güncelleştirmesinin bir parçası olarak kullanılır. Bu nedenle, Havuz eşlemesinde var olan bir sütun seçmelisiniz.
No Dizi keys
Anahtar sütunları yazmayı atlama Değeri anahtar sütununa yazmak istemiyorsanız "Anahtar sütunlarını yazmayı atla" seçeneğini belirleyin. No true veya false skipKeyWrites
Tablo eylemi Yazmadan önce hedef tablodan tüm satırların yeniden oluşturulmasını veya kaldırılıp kaldırılmayacağını belirler.
- Yok: Tabloda hiçbir eylem yapılmaz.
- Yeniden oluştur: Tablo bırakılır ve yeniden oluşturulur. Dinamik olarak yeni bir tablo oluşturuyorsanız gereklidir.
- Kesme: Hedef tablodaki tüm satırlar kaldırılır.
No true veya false Yeni -den oluşturun
truncate
Toplu iş boyutu Her toplu işlemde kaç satır yazıldığını belirtin. Daha büyük toplu iş boyutları sıkıştırmayı ve bellek iyileştirmeyi geliştirir, ancak verileri önbelleğe alırken bellek özel durumlarının dışına çıkma riskiyle karşı karşıyadır. No Tamsayı batchSize
SQL Betikleri Öncesi ve Sonrası Havuz veritabanınıza veri yazıldıktan önce (ön işleme) ve sonra (işleme sonrası) yürütülecek çok satırlı SQL betiklerini belirtin. No String preSQL'ler
postSQL'ler

Bahşiş

  1. Birden çok komut içeren tek toplu iş betiklerini birden çok toplu iş olarak bölmeniz önerilir.
  2. Yalnızca basit bir güncelleştirme sayısı döndüren Veri Tanımlama Dili (DDL) ve Veri İşleme Dili (DML) deyimleri toplu iş kapsamında çalıştırılabilir. Toplu işlem gerçekleştirme'den daha fazla bilgi edinin
  • Artımlı ayıklamayı etkinleştir: ADF'ye yalnızca işlem hattının son yürütülmesinden bu yana değişen satırları işlemesini bildirmek için bu seçeneği kullanın.

  • Artımlı sütun: Artımlı ayıklama özelliğini kullanırken, kaynak tablonuzda filigran olarak kullanmak istediğiniz tarih/saat veya sayısal sütunu seçmeniz gerekir.

  • Okumaya baştan başlayın: Artımlı ayıklama ile bu seçeneğin ayarlanması, ADF'ye artımlı ayıklamanın açık olduğu bir işlem hattının ilk yürütülmesinde tüm satırları okumasını bildirecektir.

havuz betiği örneği MySQL için Azure Veritabanı

havuz türü olarak MySQL için Azure Veritabanı kullandığınızda, ilişkili veri akışı betiği şöyledir:

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

Arama etkinliği özellikleri

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

MySQL için Azure Veritabanı için veri türü eşlemesi

MySQL için Azure Veritabanı verileri kopyalarken, MySQL veri türlerinden hizmet içinde 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 için Azure Veritabanı veri türü Ara hizmet veri türü
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

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