مشاركة عبر


نسخ البيانات من MySQL باستخدام Azure Data Factory أو Synapse Analytics

ينطبق على: Azure Data Factory Azure Synapse Analytics

Tip

جرب Data Factory في Microsoft Fabric، وهو حل تحليلي متكامل للمؤسسات. يغطي Microsoft Fabric كل شيء بدءا من حركة البيانات إلى علم البيانات والتحليلات في الوقت الحقيقي والمعلومات المهنية وإعداد التقارير. تعرف على كيفية بدء إصدار تجريبي جديد مجانا!

توضح هذه المقالة كيفية استخدام نسخ النشاط في Azure Data Factory وخطوط تدفق Synapse Analytics لنسخ البيانات من قاعدة بيانات MySQL. تعتمد هذه المقالة على مقالة نظرة عامة على نشاط النسخ التي تقدم نظرة عامة على نشاط النسخ.

Note

لنسخ البيانات من أو إلى خدمة Azure Database for MySQL، استخدم قاعدة بيانات Azure للموصل MySQL.

Important

الإصدار 1.0 من موصل MySQL في مرحلة الإزالة. يوصى بترقية موصل MySQL من الإصدار 1.0 إلى 2.0.

الإمكانات المدعومة

يعتمد موصل MySQL في الإمكانيات التالية:

الإمكانات المدعومة IR
نشاط النسخ (مصدر/-) (1) (2)
نشاط البحث (1) (2)

① وقت تشغيل تكامل Azure ② وقت تشغيل التكامل المستضاف ذاتيًا

للحصول على قائمة بمخازن البيانات المدعومة كمصادر/متلقيات بواسطة نشاط النسخ، راجع جدول مخازن البيانات المدعومة.

يدعم هذا الموصل إصدار MySQL 5.5 و5.6 و5.7 و8.0 و8.1 و8.2 ضمن إصدار موصل MySQL 2.0 و5.6 و5.7 و8.0 للإصدار 1.0.

Prerequisites

إذا كان مخزن البيانات الخاص بك موجوداً داخل شبكة محلية، أو شبكة Azure ظاهرية، أو Amazon Virtual Private Cloud، فأنت بحاجة إلى تكوين وقت تشغيل تكامل مستضاف ذاتياً للاتصال به.

إذا كان مخزن البيانات الخاص بك عبارة عن خدمة بيانات سحابية مُدارة، يمكنك استخدام Azure Integration Runtime. إذا كان الوصول مقتصراً على عناوين IP التي تمت الموافقة عليها في قواعد جدار الحماية، يمكنك إضافة عناوين IP لـ Azure Integration Runtime إلى قائمة السماح.

يمكنك أيضاً استخدام ميزة وقت تشغيل تكامل الشبكة الظاهرية المُدارة في Azure Data Factory للوصول إلى الشبكة المحلية دون تثبيت وقت تشغيل تكامل مستضاف ذاتياً وتكوينه.

لمزيد من المعلومات حول آليات وخيارات أمان الشبكة التي يدعمها Data Factory، راجع إستراتيجيات الوصول إلى البيانات.

يوفر Integration Runtime برنامج تشغيل MySQL مدمجاً بدءاً من الإصدار 3.7، وبالتالي لا تحتاج إلى تثبيت أي برنامج تشغيل يدوياً.

الشروع في العمل

لتنفيذ نشاط النسخ باستخدام خط أنابيب ، يمكنك استخدام إحدى الأدوات أو مجموعات SDK التالية:

إنشاء خدمة مرتبطة بـ MySQL باستخدام واجهة المستخدم

استخدم الخطوات التالية لإنشاء خدمة مرتبطة بـ MySQL في واجهة مستخدم مدخل Microsoft Azure.

  1. استعرض للوصول إلى علامة التبويب "Manage" في مصنع بيانات Azure أو مساحة عمل Synapse، وحدد "Linked Services"، ثم انقر فوق "New":

  2. ابحث عن MySQL وحدد موصل MySQL.

    حدد موصل MySQL.

  3. قم بتكوين تفاصيل الخدمة، واختبر الاتصال، وأنشئ الخدمة المرتبطة الجديدة.

    تكوين خدمة مرتبطة بـ MySQL.

تفاصيل تكوين الموصل

توفر الأقسام التالية تفاصيل حول الخصائص المستخدمة لتحديد كيانات Data Factory الخاصة بموصل MySQL.

خصائص الخدمة المرتبطة

إذا كنت تستخدم الإصدار 2.0، يتم دعم الخصائص التالية لخدمة MySQL المرتبطة:

Property Description Required
type يجب تعيين خاصية النوع إلى: MySql Yes
driverVersion إصدار برنامج التشغيل عند تحديد الإصدار 2.0. القيمة هي v2. Yes
server اسم خادم MySQL الخاص بك. Yes
port رقم المنفذ للاتصال بخادم MySQL. No
database اسم قاعدة بيانات MySQL. Yes
username اسم المستخدم الخاص بك. Yes
password كلمة المرور لاسم المستخدم. وضع علامة على هذا الحقل باعتباره SecureString لتخزينه بشكل آمن. أو يمكنك أيضًا الإشارة إلى سر مخزن في Azure Key Vault. Yes
sslMode يحدد هذا الخيار ما إذا كان برنامج التشغيل يستخدم تشفير TLS والتحقق عند الاتصال بـ MySQL. على سبيل المثال، SSLMode=<0/1/2/3/4>.
الخيارات: معطل (0) / مفضل (1) (افتراضي) / مطلوب (2) / VERIFY_CA (3) / VERIFY_IDENTITY (4)
Yes
useSystemTrustStore يحدد هذا الخيار ما إذا كنت تريد استخدام شهادة CA من مخزن الثقة بالنظام، أو من ملف PEM محدد. على سبيل المثال UseSystemTrustStore=<0/1>؛
الخيارات: ممكن (1) / معطل (0) (افتراضي)
No
connectVia Integration Runtime الذي سيتم استخدامه للاتصال بمخزن البيانات. تعرف على المزيد من قسم المتطلبات الأساسية. إذا لم يتم تحديده، فإنه يستخدم Azure Integration Runtime الافتراضي. No
خصائص اتصال إضافية
allowZeroDateTime تحديد قيمة هذه الخاصية للسماح true باسترداد قيمة التاريخ "صفر" الخاصة من 0000-00-00 قاعدة البيانات. إذا تم تعيينها إلى false (الافتراضي)، يتم إرجاع أعمدة التاريخ كقيم DateTime، مما يعني 0000-00-00 أنه لا يمكن استردادها.

يسمح لك MySQL بتخزين قيمة 0000-00-00 "صفر" ك "تاريخ وهمي". في بعض الحالات، تكون هذه الميزة أكثر ملاءمة من استخدام قيم NULL، وتستخدم مساحة أقل للبيانات والفهرس. لمنع السماح 0000-00-00 في MySQL، قم بتمكين وضع NO_ZERO_DATE . لمزيد من المعلومات، راجع هذا المقال
No
connectionTimeout طول الوقت (بالثوان) لانتظار اتصال بالخادم قبل إنهاء المحاولة وإنشاء خطأ. No
convertZeroDateTime قم بتعيينه إلى true لإرجاع DateTime.MinValue لأعمدة التاريخ أو التاريخ والوقت التي تحتوي على قيم غير مسموح بها. No
guidFormat تحديد نوع العمود (إن وجد) الذي يجب قراءته كمعرف GUID. انتقل إلى هذه المقالة للحصول على وصف لكل نوع عمود عن طريق البحث في هذه الخاصية.

يعامل الإصدار 2.0 Char(36) كنوع GUID بشكل افتراضي للحصول على أداء أفضل. يعامل الموصل حقول Char(36) ك GUIDs لتسهيل معالجة قاعدة البيانات. يبسط هذا العلاج عمليات مثل إدراج قيم GUID وتحديثها واستردادها، ما يضمن إدارتها باستمرار كعناصر GUID في التعليمات البرمجية للتطبيق بدلا من السلاسل العادية. هذا السلوك مفيد بشكل خاص في السيناريوهات التي يتم فيها استخدام معرفات الرسومات الرسومية كمفاتيح أساسية أو معرفات فريدة وتوفر أداء أفضل. إذا لم تكن بحاجة إلى هذا الإعداد الافتراضي، يمكنك التكوين guidFormat=none في خاصية الاتصال.
No
sslCert المسار إلى ملف شهادة SSL للعميل بتنسيق PEM. يجب أيضا تحديد SslKey. No
sslKey المسار إلى المفتاح الخاص SSL للعميل بتنسيق PEM. يجب أيضا تحديد SslCert. No
treatTinyAsBoolean عند التعيين إلى true، يتم إرجاع قيم tinyint(1) كقيم منطقية. يؤدي تعيين هذه الخاصية إلى خطأ إلى إرجاع tinyint(1) ك SByte/Byte.

يعامل الإصدار 2.0 tinyint(1) كنوع منطقي بشكل افتراضي. لمزيد من المعلومات، راجع هذا المقال للسماح للموصل بإعادة صغير كقيمة، قم بتعيين treatTinyAsBoolean=false في خصائص الاتصال.
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"
        }
    }
}

مثال: تخزين كلمة المرور في 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"
        }
    }
}

إذا كنت تستخدم الإصدار 1.0، يتم دعم الخصائص التالية:

Property Description Required
type يجب تعيين خاصية النوع إلى: MySql Yes
connectionString حدد المعلومات المطلوبة للاتصال بقاعدة بيانات Azure لمثيل MySQL.
يمكنك أيضاً وضع كلمة مرور في Azure Key Vault وسحب تكوين password خارج سلسلة الاتصال. راجع النماذج التالية ومقال تخزين بيانات الاعتماد في Azure Key Vault لمزيد من التفاصيل.
Yes
connectVia Integration Runtime الذي سيتم استخدامه للاتصال بمخزن البيانات. تعرف على المزيد من قسم المتطلبات الأساسية. إذا لم يتم تحديده، فإنه يستخدم Azure Integration Runtime الافتراضي. No

سلسلة الاتصال النموذجية هي Server=<server>;Port=<port>;Database=<database>;UID=<username>;PWD=<password>. المزيد من الخصائص التي يمكنك تعيينها حسب حالتك:

Property Description Required
sslMode يحدد هذا الخيار ما إذا كان برنامج التشغيل يستخدم تشفير TLS والتحقق عند الاتصال بـ MySQL. على سبيل المثال، SSLMode=<0/1/2/3/4>.
الخيارات: معطل (0) / مفضل (1) (افتراضي) / مطلوب (2) / VERIFY_CA (3) / VERIFY_IDENTITY (4)
Yes
SSLCert المسار الكامل واسم ملف.pem يحتوي على شهادة SSL المستخدمة لإثبات هوية العميل.
لتحديد مفتاح خاص لتشفير هذه الشهادة قبل إرسالها إلى الخادم، استخدم الخاصية SSLKey.
نعم، في حالة استخدام التحقق ثنائي الاتجاه SSL.
SSLKey المسار الكامل واسم الملف الذي يحتوي على المفتاح الخاص المستخدم لتشفير الشهادة من جانب العميل أثناء التحقق من SSL ثنائي الاتجاه. نعم، في حالة استخدام التحقق ثنائي الاتجاه SSL.
useSystemTrustStore يحدد هذا الخيار ما إذا كنت تريد استخدام شهادة CA من مخزن الثقة بالنظام، أو من ملف PEM محدد. على سبيل المثال UseSystemTrustStore=<0/1>؛
الخيارات: ممكن (1) / معطل (0) (افتراضي)
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"
        }
    }
}

خصائص مجموعة البيانات

للحصول على قائمة كاملة بالأقسام والخصائص المتوفرة لتعريف مجموعات البيانات، راجع مقالة مجموعات البيانات. يقدم هذا القسم قائمة بالخصائص التي تدعمها مجموعة بيانات MySQL.

لنسخ البيانات من MySQL، يتم دعم الخصائص التالية:

Property Description Required
type يجب تعيين خاصية النوع لمجموعة البيانات على: MySqlTable Yes
tableName اسم الجدول في قاعدة بيانات MySQL. لا (إذا تم تحديد "الاستعلام" في مصدر النشاط)

Example

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

إذا كنت تستخدم RelationalTable مجموعة بيانات مُصنفة حسب النوع، فإنها لا تزال مدعومة كما هي، بينما نقترح عليك استخدام مجموعة البيانات الجديدة للمضي قدماً.

انسخ خصائص النشاط

للحصول على قائمة كاملة بالأقسام والخصائص المتوفرة لتعريف الأنشطة، راجع مقالة التدفقات. يقدم هذا القسم قائمة بالخصائص التي يدعمها مصدر MySQL.

MySQL كمصدر

لنسخ البيانات من MySQL، يتم دعم الخصائص التالية في قسم المصدر لنشاط النسخ:

Property Description Required
type يجب تعيين خاصية النوع لمصدر نشاط النسخ على: MySqlSource Yes
query استخدم استعلام SQL المخصص لقراءة البيانات. على سبيل المثال: "SELECT * FROM MyTable". لا (إذا تم تحديد "tableName" في مجموعة البيانات)

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

إذا كنت تستخدم المصدر المصنف حسب النوع RelationalSource، فلا يزال هذا المصدر مدعوماً كما هو، بينما نقترح عليك استخدام المصدر الجديد للمضي قدماً.

تعيين نوع البيانات لـ MySQL

عند نسخ البيانات من MySQL، يتم استخدام التعيينات التالية من أنواع بيانات MySQL إلى أنواع البيانات المؤقتة التي تستخدمها الخدمة داخلياً. راجع تعيينات المخططات ونوع البيانات لمعرفة كيفية تعيين نشاط النسخ للمخطط المصدر ونوع البيانات إلى المتلقي.

نوع بيانات MySQL نوع بيانات الخدمة المؤقتة (للإصدار 2.0) نوع بيانات الخدمة المؤقتة (للإصدار 1.0)
بيجينت int64 int64
BIGINT غير موقع UInt64 Decimal
بت (1) UInt64 Boolean
بت (م) ، م>1 UInt64 Byte[]
النقطه Byte[] Byte[]
بول منطقيه
(إذا كان TreatTinyAsBoolean = خطأ ، تعيينه على أنه SByte. TreatTinyAsBoolean صحيح افتراضيا)
Int16
CHAR String String
DATE التاريخ والوقت التاريخ والوقت
التاريخ والوقت التاريخ والوقت التاريخ والوقت
عشري Decimal عشري ، سلسلة
مزدوج Double Double
دقة مزدوجة Double Double
تعدادات String String
FLOAT واحد واحد
الباحث Int32 Int32
INT غير موقع int64 int64
العدد الصحيح Int32 Int32
عدد صحيح غير موقع UInt32 int64
JSON String Byte[]
فاربينير طويل Byte[] Byte[]
لونغ فارشار String String
لونغبلوب Byte[] Byte[]
النص الطويل String String
MEDIUMBLOB Byte[] Byte[]
متوسطة Int32 Int32
MEDIUMINT غير موقع UInt32 int64
نص متوسط String String
عددي Decimal Decimal
حقيقي Double Double
جبر String String
سمولينت Int16 Int16
SMALLINT غير موقع UInt16 Int32
نص String String
TIME TimeSpan TimeSpan
الطابع الزمني التاريخ والوقت التاريخ والوقت
تينيبلوب Byte[] Byte[]
تينينت SByte Int16
TINYINT غير موقع Int16 Int16
TINYTEXT String String
VARCHAR String String
سنة الباحث الباحث

بحث عن خصائص النشاط

لمعرفة تفاصيل حول الخصائص، تحقق من نشاط البحث.

ترقية موصل MySQL

فيما يلي الخطوات التي تساعدك على ترقية موصل MySQL:

  1. في صفحة تحرير الخدمة المرتبطة، حدد 2.0 ضمن الإصدار وقم بتكوين الخدمة المرتبطة بالإشارة إلى خصائص الخدمة المرتبطة.

  2. يختلف تعيين نوع البيانات للإصدار 2.0 عن تعيين الإصدار 1.0. لمعرفة تعيين نوع البيانات الإصدار 2.0، راجع تعيين نوع البيانات ل MySQL.

  3. يدعم الإصدار 2.0 المزيد من إصدارات MySQL. لمزيد من المعلومات، راجع القدرات المدعومة.

يقدم هذا القسم أفضل الممارسات لإصدار موصل MySQL 2.0.

يتعذر تحميل مفتاح SSL

  • الأعراض: إذا كنت تستخدم الإصدار 2.0 من موصل MySQL مع مفتاح SSL كخاصية اتصال، فقد تفي برسالة الخطأ التالية: Could not load the client key from your_pem_file: Unrecognized PEM header: -----BEGIN PRIVATE KEY-----

  • السبب: يتعذر على الإصدار 2.0 فك تشفير تنسيق PCKS#8.

  • التوصية: تحويل تنسيق PEM إلى PCKS#1.

يوضح الجدول أدناه اختلافات تعيين نوع البيانات بين MySQL باستخدام الإصدار 2.0 والإصدار 1.0.

نوع بيانات MySQL نوع بيانات الخدمة المؤقتة (باستخدام الإصدار 2.0) نوع بيانات الخدمة المؤقتة (باستخدام الإصدار 1.0)
BIGINT غير موقع UInt64 Decimal
بت (1) UInt64 Boolean
بت (م) ، م>1 UInt64 Byte[]
بول Boolean Int16
عشري Decimal عشري ، سلسلة
عدد صحيح غير موقع UInt32 int64
JSON String Byte[]
MEDIUMINT غير موقع UInt32 int64
SMALLINT غير موقع UInt16 Int32
تينينت SByte Int16

للحصول على قائمة بمخازن البيانات المدعومة من نشاط النسخ كمصادر ومواضع تلقي، راجع مخازن البيانات المدعومة.