نسخ وتحويل البيانات في قاعدة بيانات Azure لـ MySQL باستخدام Azure Data Factory أو Synapse Analytics
ينطبق على: Azure Data Factory Azure Synapse Analytics
تلميح
جرب Data Factory في Microsoft Fabric، وهو حل تحليلي متكامل للمؤسسات. يغطي Microsoft Fabric كل شيء بدءا من حركة البيانات إلى علم البيانات والتحليلات في الوقت الحقيقي والمعلومات المهنية وإعداد التقارير. تعرف على كيفية بدء إصدار تجريبي جديد مجانا!
توضح هذه المقالة كيفية استخدام نشاط النسخ في خطوط تدفقات Azure Data Factory أو Synapse Analytics لنسخ البيانات من وإلى قاعدة بيانات Azure لـ MySQL، واستخدام Data Flow لتحويل البيانات في قاعدة بيانات Azure لـ MySQL. للتعرف على المزيد، اقرأ المقالات التمهيدية حول Azure Data Factory وSynapse Analytics.
هذا الموصل مخصص لـ
لنسخ البيانات من قاعدة بيانات MySQL العامة الموجودة في أماكن العمل أو في السحابة، استخدم موصل MySQL.
المتطلبات الأساسية
يتطلب هذا التشغيل السريع المَوارد والتكوين التاليين المذكورين أدناه كنقطة بداية:
- قاعدة بيانات Azure موجودة لخادم MySQL الفردي أو خادم MySQL المرن مع وصول عام أو نقطة نهاية خاصة.
- تمكين السماح بالوصول العام من أي خدمة Azure داخل Azure إلى هذا الخادم في صفحة الشبكات لخادم MySQL. سيسمح لك ذلك باستخدام استوديو مصنع البيانات.
القدرات المدعومة
Azure Database للموصل MySQL مدعومة للإمكانيات التالية:
القدرات المدعومة | IR | نقطة النهاية الخاصة المُدارة |
---|---|---|
Copy activity (المصدر/المتلق) | (1) (2) | ✓ |
تعيين تدفق البيانات (المصدر/ المتلقي) | (1) | ✓ |
نشاط البحث | (1) (2) | ✓ |
① وقت تشغيل تكامل Azure ② وقت تشغيل التكامل المستضاف ذاتيًا
الشروع في العمل
لتنفيذ نشاط النسخ باستخدام أحد المسارات، يمكنك استخدام إحدى الأدوات أو عدد تطوير البرامج التالية:
- أداة نسخ البيانات
- مدخل Azure
- The .NET SDK
- عدة تطوير برامج Python
- Azure PowerShell
- واجهة برمجة تطبيقات REST
- قالب Azure Resource Manager
إنشاء خدمة مرتبطة بقاعدة بيانات Azure لـ MySQL باستخدام واجهة المستخدم
استخدم الخطوات التالية لإنشاء خدمة مرتبطة بقاعدة بيانات Azure لـ MySQL في واجهة مستخدم مدخل Microsoft Azure.
استعرض للوصول إلى علامة التبويب "Manage" في مصنع بيانات Azure أو مساحة عمل Synapse، وحدد "Linked Services"، ثم انقر فوق "New":
ابحث عن MySQL وحدد قاعدة بيانات Azure لموصل MySQL.
قم بتكوين تفاصيل الخدمة، واختبر الاتصال، وأنشئ الخدمة المرتبطة الجديدة.
تفاصيل تكوين الموصل
توفر الأقسام التالية تفاصيل حول الخصائص المستخدمة لتعريف كيانات Data Factory الخاصة بقاعدة بيانات Azure لموصل MySQL.
خصائص الخدمة المرتبطة
يتم اعتماد الخصائص التالية لقاعدة بيانات Azure لخدمة MySQL المرتبطة:
الخاصية | الوصف | مطلوب |
---|---|---|
النوع | يجب تعيين خاصية النوع إلى: AzureMySql | نعم |
سلسلة الاتصال | حدد المعلومات المطلوبة للاتصال بقاعدة بيانات Azure لمثيل MySQL. يمكنك أيضاً وضع كلمة مرور في Azure Key Vault وسحب تكوين password خارج سلسلة الاتصال. راجع النماذج التالية ومقال تخزين بيانات الاعتماد في Azure Key Vault لمزيد من التفاصيل. |
نعم |
connectVia | Integration Runtime الذي سيتم استخدامه للاتصال بمخزن البيانات. يمكنك استخدام Azure Integration Runtime أو وقت تشغيل التكامل المستضاف ذاتياً (إذا كان مخزن البيانات موجوداً في شبكة خاصة). إذا لم يتم تحديده، فإنه يستخدم Azure Integration Runtime الافتراضي. | لا |
سلسلة الاتصال النموذجية هي Server=<server>.mysql.database.azure.com;Port=<port>;Database=<database>;UID=<username>;PWD=<password>
. المزيد من الخصائص التي يمكنك تعيينها حسب حالتك:
الخاصية | الوصف | الخيارات | المطلوب |
---|---|---|---|
SSLMode | يحدد هذا الخيار ما إذا كان برنامج التشغيل يستخدم تشفير TLS والتحقق عند الاتصال بـ MySQL. علـى سبيل المثال، SSLMode=<0/1/2/3/4> . |
DISABLED (0) / PREFERRED (1) (Default) / REQUIRED (2) / VERIFY_CA (3) / VERIFY_IDENTITY (4) | لا |
UseSystemTrustStore | يحدد هذا الخيار ما إذا كنت تريد استخدام شهادة CA من مخزن الثقة بالنظام، أو من ملف PEM محدد. علـى سبيل المثال، UseSystemTrustStore=<0/1>; . |
Enabled (1) / Disabled (0) (Default) | لا |
مثال:
{
"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"
}
}
}
مثال: تخزين كلمة المرور في 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"
}
}
}
خصائص مجموعة البيانات
للحصول على قائمة كاملة بالأقسام والخصائص المتوفرة لتعريف مجموعات البيانات، راجع مقالة مجموعات البيانات. يوفر هذا القسم قائمة بالخصائص التي تدعمها قاعدة بيانات Azure لمجموعة بيانات MySQL.
لنسخ البيانات من قاعدة بيانات Azure لـ MySQL، قم بتعيين خاصية نوع مجموعة البيانات إلى AzureMySqlTable. تدعم الخصائص التالية:
الخاصية | الوصف | مطلوب |
---|---|---|
النوع | يجب تعيين خاصية نوع مجموعة البيانات إلى: AzureMySqlTable | نعم |
اسم الجدول | اسم الجدول في قاعدة بيانات MySQL. | لا (إذا تم تحديد "الاستعلام" في مصدر النشاط) |
مثال
{
"name": "AzureMySQLDataset",
"properties": {
"type": "AzureMySqlTable",
"linkedServiceName": {
"referenceName": "<Azure MySQL linked service name>",
"type": "LinkedServiceReference"
},
"typeProperties": {
"tableName": "<table name>"
}
}
}
انسخ خصائص النشاط
للحصول على قائمة كاملة بالأقسام والخصائص المتوفرة لتعريف الأنشطة، راجع مقالة التدفقات. يوفر هذا القسم قائمة بالخصائص التي تدعمها قاعدة بيانات Azure لمصدر MySQL والمتلقي.
قاعدة بيانات Azure لـ MySQL كمصدر
لنسخ البيانات من قاعدة بيانات Azure لـ MySQL، تُدعم الخصائص التالية في قسم مصدر نشاط النسخ:
الخاصية | الوصف | مطلوب |
---|---|---|
النوع | يجب تعيين خاصية نوع مصدر نشاط النسخ إلى: AzureMySqlSource | نعم |
استعلام | استخدم استعلام SQL المخصص لقراءة البيانات. على سبيل المثال: "SELECT * FROM MyTable" . |
لا (إذا تم تحديد "tableName" في مجموعة البيانات) |
queryCommandTimeout | مهلة وقت الانتظار قبل طلب الاستعلام. الافتراضي هو 120 دقيقة (02:00:00) | لا |
مثال:
"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 لـ MySQL كمتلقي
لنسخ البيانات من قاعدة بيانات Azure لـ MySQL، تُدعم الخصائص التالية في قسم متلقي نشاط النسخ:
الخاصية | الوصف | مطلوب |
---|---|---|
النوع | يجب تعيين خاصية نوع متلقي نشاط النسخ إلى: AzureMySqlSink | نعم |
preCopyScript | حدد استعلام SQL لنشاط النسخ لتنفيذه قبل كتابة البيانات في قاعدة بيانات Azure لـ MySQL في كل تشغيل. يمكنك استخدام هذه الخاصية لتنظيف البيانات المحملة مسبقاً. | لا |
writeBatchSize | إدراج البيانات في قاعدة بيانات Azure لجدول MySQL عندما يصل حجم المخزن المؤقت writeBatchSize. القيمة المسموح بها هي عدد صحيح يمثل عدد الصفوف. |
لا (الافتراضي هو 10,000) |
writeBatchTimeout | وقت الانتظار حتى تكتمل عملية إدراج الدُفعة قبل انتهاء مهلتها. القيم المسموح بها هي Timespan. مثال على ذلك هو 00:30:00 (30 دقيقة). |
لا (الافتراضي هو 00:00:30) |
مثال:
"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
}
}
}
]
تعيين خصائص تدفق البيانات
عند تحويل البيانات في تعيين تدفق البيانات، يمكنك القراءة والكتابة إلى جداول من قاعدة بيانات Azure لـ MySQL. لمزيد من المعلومات، راجع تحويل المصدر و تحويل المتلقي في تعيين تدفقات البيانات. يمكنك اختيار استخدام قاعدة بيانات Azure لمجموعة بيانات MySQL أو مجموعة بيانات مضمنة كنوع مصدر ومتلقي.
تحويل المصدر
يسرد الجدول أدناه الخصائص المعتمدة من قِبل قاعدة بيانات Azure لمصدر MySQL. يمكنك تحرير هذه الخصائص في علامة التبويب "Source options".
Name | الوصف | مطلوب | القيم المسموح بها | خاصية البرنامج النصي لتدفق البيانات |
---|---|---|---|---|
جدول | إذا حددت الجدول كمدخلات، فإن تدفق البيانات يجلب جميع البيانات من الجدول المحدد في مجموعة البيانات. | لا | - | (لمجموعة البيانات المضمنة فقط) اسم الجدول |
الاستعلام | إذا حددت الاستعلام كإدخال، فحدد استعلام SQL لجلب البيانات من المصدر، والذي يتجاوز أي جدول تحدده في مجموعة البيانات. يعد استخدام الاستعلامات طريقة رائعة لتقليل عدد الصفوف للاختبار أو عمليات البحث. لا يتوفر دعم لعبارة Order By، ولكن يمكنك تعيين عبارة SELECT FROM كاملة. يمكنك أيضاً استخدام وظائف الجدول المعرفة بواسطة المستخدم. تحديد * من udfGetData() هو UDF في SQL الذي يقوم بإرجاع جدول يمكنك استخدامه في تدفق البيانات. مثال على استعلام: select * from mytable where customerId > 1000 and customerId < 2000 أو select * from "MyTable" . |
لا | السلسلة | استعلام |
الإجراء المخزّن | إذا حددت الإجراء المخزن كإدخال، فحدد اسم الإجراء المخزن لقراءة البيانات من الجدول المصدر، أو حدد تحديث لمطالبة الخدمة باكتشاف أسماء الإجراءات. | نعم (إذا حددت الإجراء المخزّن كإدخال) | السلسلة | procedureName |
معلمات الإجـراء | إذا حددت الإجراء المخزن كإدخال، فحدد أي معلمات إدخال للإجراء المخزن في الترتيب الذي تم تعيينه فـي الإجراء، أو حدد استيراد لاستيراد كافة معلمات الإجراء باستخدام النموذج @paraName . |
لا | صفيف | إدخال |
حجم الدفعة | حدد حجم الدُفعة لتقسيم البيانات الكبيرة إلى دُفعات. | لا | رقم صحيح | batchSize |
مستوى العزل | اختر أحد مستويات العزل التالية: - قراءة ثابتة - قراءة غير ثابتة (افتراضي) - القراءة المتكررة - قابل للتسلسل - لا شيء (تجاهل مستوى العزل) |
لا | READ_COMMITTED READ_UNCOMMITTED REPEATABLE_READ SERIALIZABLE لا |
isolationLevel |
مثال على قاعدة بيانات Azure للبرنامج النصي لمصدر MySQL
عند استخدام قاعدة بيانات Azure لـ MySQL كمصدر، يكون البرنامج النصي لتدفق البيانات المقترنة:
source(allowSchemaDrift: true,
validateSchema: false,
isolationLevel: 'READ_UNCOMMITTED',
query: 'select * from mytable',
format: 'query') ~> AzureMySQLSource
تحويل المتلقي
يسرد الجدول أدناه الخصائص المعتمدة من قبل قاعدة بيانات Azure لمتلقي MySQL. يمكنك تحرير هذه الخصائص في علامة التبويب "Sink options".
Name | الوصف | مطلوب | القيم المسموح بها | خاصية البرنامج النصي لتدفق البيانات |
---|---|---|---|---|
أسلوب التحديث | حدد العمليات المسموح بها في وجهة قاعدة البيانات. الوضع الافتراضي هو السماح فقط بالإدراج. لتحديث صفوف أو إجراء upsert "إدراج الصفوف أو تحديثها" أو حذفها، يلزم إجراء تحويل في الصف المعدل لوضع علامة على الصفوف التي تخضع لتلك الإجراءات. |
نعم | true أو false |
قابل للحذف قابلة للادراج قابل للتحديث قابل للإدراج أو التحديث |
الأعمدة الرئيسية | للتحديثات وعمليات الإدراج أو التحديث "upsert" والحذف، يجب تعيين عمود (أعمدة) المفاتيح لتحديد الصف المطلوب تعديله. سيتم استخدام اسم العمود الذي تختاره كمفتاح كجزء من التحديث، أو upsert، أو الحذف اللاحق. لذلك، يجب اختيار عمود موجود في تعيين "المتلقي". |
لا | صفيف | المفاتيح |
تخطي كتابة أعمدة المفتاح | إذا كنت ترغب في عدم كتابة القيمة إلى عمود المفتاح، فحدد "Skip writing key columns". | لا | true أو false |
skipKeyWrites |
إجراء الجدول | يحدد ما إذا كان سيتم إعادة إنشاء أو إزالة كل الصفوف من الجدول الوجهة قبل الكتابة. - None: لن يتم اتخاذ أي إجراء على الجدول. - Recreate: سيتم إسقاط الجدول وإعادة إنشائه. مطلوب في حال إنشاء جدول جديد بشكل ديناميكي. - Truncate: سيتم إزالة جميع الصفوف من الجدول الهدف. |
لا | true أو false |
إعادة إنشاء اقتطاع |
حجم الدفعة | حدد عدد الصفوف التي تتم كتابتها في كل دُفعة. تعمل أحجام الدُفعات الأكبر على تحسين الضغط والذاكرة، ولكنها تخاطر بنفاد استثناءات الذاكرة عند تخزين البيانات مؤقتاً. | لا | رقم صحيح | batchSize |
نصوص SQL السابقة واللاحقة | حدد نصوص SQL متعددة الأسطر التي سيتم تنفيذها قبل (المعالجة المسبقة) وبعد (المعالجة اللاحقة) كتابة البيانات في قاعدة بيانات المتلقي. | لا | السلسلة | preSQLs postSQLs |
تلميح
- يوصى بتقسيم البرامج النصية دفعة واحدة مع أوامر مُتعددة إلى دفعات متعددة.
- يمكن فقط تشغيل عبارات لغة تعريف البيانات (DDL) ولغة معالجة البيانات (DML) التي ترجع عدد تحديثات بسيط كجزء مـن دفعة. تعرَّف على المزيد من خلال تنفيذ عمليات الدُفعات
تمكين الاستخراج التزايدي: استخدم هذا الخيار لإخبار ADF بمعالجة الصفوف التي تغيرت منذ آخر مرة تم فيها تنفيذ البنية الأساسية لبرنامج ربط العمليات التجارية فقط.
عمود تزايدي: عند استخدام ميزة الاستخراج التزايدي، يجب اختيار التاريخ/الوقت أو العمود الرقمي الذي ترغب في استخدامه كعلامة مائية في الجدول المصدر.
بدء القراءة من البداية: سيؤدي تعيين هذا الخيار باستخدام الاستخراج التزايدي إلى توجيه ADF لقراءة جميع الصفوف عند التنفيذ الأول للبنية الأساسية مع تشغيل الاستخراج الإضافي.
مثال على قاعدة بيانات Azure للبرنامج النصي لمتلقي MySQL
عند استخدام قاعدة بيانات Azure لـ MySQL كمتلقي، يكون البرنامج النصي لتدفق البيانات المقترنة:
IncomingStream sink(allowSchemaDrift: true,
validateSchema: false,
deletable:false,
insertable:true,
updateable:true,
upsertable:true,
keys:['keyColumn'],
format: 'table',
skipDuplicateMapInputs: true,
skipDuplicateMapOutputs: true) ~> AzureMySQLSink
بحث عن خصائص النشاط
لمعرفة تفاصيل حول الخصائص، تحقق من نشاط البحث.
تعيين نوع البيانات لقاعدة بيانات Azure لـ MySQL
عند نسخ البيانات من قاعدة بيانات Azure لـ MySQL، يتم استخدام التعيينات التالية من أنواع بيانات MySQL إلى أنواع البيانات المؤقتة المستخدمة داخلياً داخل الخدمة. راجع تعيينات المخططات ونوع البيانات لمعرفة كيفية تعيين نشاط النسخ للمخطط المصدر ونوع البيانات إلى المتلقي.
قاعدة بيانات Azure لنوع بيانات MySQL | نوع بيانات الخدمة المؤقتة |
---|---|
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 |
المحتوى ذو الصلة
للحصول على قائمة بمخازن البيانات المدعومة من نشاط النسخ كمصادر ومواضع تلقي، راجع مخازن البيانات المدعومة.