المشكلات/القيود المعروفة مع عمليات الترحيل عبر الإنترنت من PostgreSQL إلى قاعدة بيانات Azure ل PostgreSQL

يتم وصف المشكلات والقيود المعروفة المرتبطة بالترحيلات عبر الإنترنت من PostgreSQL إلى قاعدة بيانات Azure ل PostgreSQL في الأقسام التالية.

تكوين الترحيل عبر الإنترنت

  • يجب أن يعمل خادم PostgreSQL المصدر بالإصدار 9.4 أو 9.5 أو 9.6 أو 10 أو 11. لمزيد من المعلومات، راجع إصدارات قاعدة بيانات PostgreSQL المعتمدة.

  • يتم دعم عمليات الترحيل إلى نفس الإصدار أو إصدار أعلى فقط. على سبيل المثال، يتم دعم ترحيل PostgreSQL 9.5 إلى قاعدة بيانات Azure ل PostgreSQL 9.6 أو 10. الترحيل من PostgreSQL 11 إلى PostgreSQL 9.6 غير مدعوم.

  • لتمكين النسخ المتماثل المنطقي في ملف PostgreSQL postgresql.conf المصدر ، قم بتعيين المعلمات التالية:

    • wal_level: تعيين على أنه منطقي.
    • max_replication_slots: تعيين الحد الأقصى على الأقل لعدد قواعد البيانات للترحيل. إذا كنت تريد ترحيل أربع قواعد بيانات، فقم بتعيين القيمة إلى 4 على الأقل.
    • max_wal_senders: تعيين عدد قواعد البيانات التي تعمل بشكل متزامن. القيمة الموصى بها هي 10.
  • أضف عنوان IP لعامل DMS إلى مصدر PostgreSQL pg_hba.conf.

    1. دون عنوان IP DMS بعد الانتهاء من توفير مثيل لخدمة ترحيل قاعدة بيانات Azure.

    2. أضف عنوان IP إلى ملف pg_hba.conf :

          host    all    172.16.136.18/10    md5
          host    replication postgres    172.16.136.18/10     md5
      
  • يجب أن يكون لدى المستخدم دور REPLICATION على الخادم الذي يستضيف قاعدة البيانات المصدر.

  • يجب أن تتطابق مخططات قاعدة البيانات المصدر والهدف.

⁧⁩حدود الحجم⁧⁩

  • يمكنك ترحيل ما يصل إلى 1 تيرابايت من البيانات من PostgreSQL إلى قاعدة بيانات Azure ل PostgreSQL، باستخدام خدمة DMS واحدة.
  • يسمح DMS للمستخدمين باختيار الجداول داخل قاعدة بيانات يريدون ترحيلها. لقطة شاشة لشاشة D M S تعرض خيار اختيار الجداول.

خلف الكواليس، هناك أمر pg_dump يستخدم لأخذ تفريغ الجداول المحددة باستخدام أحد الخيارات التالية:

  • -T لتضمين أسماء الجداول التي تم اختيارها في واجهة المستخدم
  • -t لاستبعاد أسماء الجداول التي لم يختارها المستخدم

هناك حد أقصى يبلغ 7500 حرف يمكن تضمينه كجزء من الأمر pg_dump باتباع الخيار -t أو -T . يستخدم الأمر pg_dump عدد الأحرف للجداول المحددة أو غير المحددة، أيهما أقل. إذا تجاوز عدد الأحرف للجداول المحددة وغير المحددة 7500، فسيفشل الأمر pg_dump مع حدوث خطأ.

بالنسبة للمثال السابق، سيكون الأمر pg_dump:

pg_dump -h hostname -u username -d databasename -T "\"public\".\"table_1\"" -T "\"public\".\"table_2\""

في الأمر السابق، عدد الأحرف هو 55 (بما في ذلك علامات الاقتباس المزدوجة والمسافات و-T والشرطة المائلة)

قيود نوع البيانات

القيد: إذا لم يكن هناك مفتاح أساسي في الجداول، فقد لا تتم مزامنة التغييرات إلى قاعدة البيانات الهدف.

الحل البديل: قم بتعيين مفتاح أساسي للجدول للمتابعة مؤقتا. قم بإزالة المفتاح الأساسي بعد الانتهاء من ترحيل البيانات.

القيود المفروضة على الترحيل عبر الإنترنت من AWS RDS PostgreSQL

عند محاولة إجراء ترحيل عبر الإنترنت من Amazon Web Service (AWS) Relational Database (RDS) PostgreSQL إلى قاعدة بيانات Azure ل PostgreSQL، قد تواجه الأخطاء التالية:

  • خطأ: تختلف القيمة الافتراضية للعمود '{column}' في الجدول '{table}' في قاعدة البيانات '{database}' على خوادم المصدر والهدف. إنها '{value on source}' على المصدر و'{value on target}' على الهدف.

    القيد: يحدث هذا الخطأ عندما تختلف القيمة الافتراضية في مخطط عمود بين قواعد البيانات المصدر والهدف.

    الحل البديل: تأكد من أن المخطط على الهدف يطابق المخطط على المصدر. لمزيد من المعلومات حول ترحيل المخطط، راجع وثائق ترحيل Azure Database for PostgreSQL عبر الإنترنت.

  • خطأ: تحتوي قاعدة البيانات الهدف '{database}' على جداول '{number of tables}' بينما تحتوي قاعدة البيانات المصدر '{database}' على جداول '{number of tables}'. يجب أن يتطابق عدد الجداول على قواعد البيانات المصدر والهدف.

    القيد: يحدث هذا الخطأ عندما يختلف عدد الجداول بين قواعد البيانات المصدر والهدف.

    الحل البديل: تأكد من أن المخطط على الهدف يطابق المخطط على المصدر. لمزيد من المعلومات حول ترحيل المخطط، راجع وثائق ترحيل Azure Database for PostgreSQL عبر الإنترنت.

  • الخطا: قاعدة البيانات المصدر {database} فارغة.

    القيد: يحدث هذا الخطأ عندما تكون قاعدة البيانات المصدر فارغة. ربما حددت قاعدة البيانات الخاطئة كمصدر.

    الحل البديل: تحقق مرة أخرى من قاعدة البيانات المصدر التي حددتها للترحيل، ثم حاول مرة أخرى.

  • الخطا: قاعدة البيانات الهدف {database} فارغة. ترحيل المخطط.

    القيد: يحدث هذا الخطأ عندما لا يوجد مخطط في قاعدة البيانات الهدف. تأكد من أن المخطط على الهدف يطابق المخطط على المصدر.

    الحل البديل: تأكد من أن المخطط على الهدف يطابق المخطط على المصدر. لمزيد من المعلومات حول ترحيل المخطط، راجع وثائق ترحيل Azure Database for PostgreSQL عبر الإنترنت.

قيود أخرى

  • لا يمكن أن يتضمن اسم قاعدة البيانات فاصلة منقوطة (;).
  • يجب أن يحتوي الجدول الملتقط على مفتاح أساسي. إذا لم يكن الجدول يحتوي على مفتاح أساسي، فلن تكون نتيجة عمليات سجل DELETE و UPDATE غير متوقعة.
  • يتم تجاهل تحديث مقطع مفتاح أساسي. سيتم تحديد تطبيق مثل هذا التحديث من قبل الهدف على أنه تحديث لم يحدث أي صفوف. والنتيجة هي سجل مكتوب في جدول الاستثناءات.
  • إذا كان الجدول يحتوي على عمود JSON ، يمكن أن تؤدي أي عمليات DELETE أو UPDATE على هذا الجدول إلى فشل الترحيل.
  • قد يتسبب ترحيل جداول متعددة بنفس الاسم ولكن حالة مختلفة في سلوك غير متوقع وغير مدعوم. مثال على ذلك هو استخدام table1 وTABLE1 وTable1.
  • تغيير معالجة [CREATE | ALTER | DROP | TRUNCATE] جداول DDLs غير مدعومة.
  • في Database Migration Service، يمكن لنشاط ترحيل واحد استيعاب ما يصل إلى أربع قواعد بيانات فقط.
  • ترحيل جدول pg_largeobject غير مدعوم.