المشكلات والقيود المعروفة مع عمليات الترحيل عبر الإنترنت من PostgreSQL إلى قاعدة بيانات Azure ل PostgreSQL
هام
نوصي باستخدام خدمة الترحيل الجديدة في قاعدة بيانات Azure ل PostgreSQL للحصول على تجربة ترحيل أكثر انسيابية وكفاءة. تعمل هذه الخدمة على تبسيط العملية من خلال دعم مجموعة متنوعة من بيئات المصدر، مما يضمن انتقالا خاليا من المتاعب إلى قاعدة بيانات Azure ل PostgreSQL.
توضح هذه المقالة المشكلات والقيود المعروفة المرتبطة بالترحيل عبر الإنترنت من PostgreSQL إلى قاعدة بيانات Azure ل PostgreSQL باستخدام خدمة ترحيل قاعدة بيانات Azure (DMS).
تكوين الترحيل عبر الإنترنت
أدنى إصدارات مصدر PostgreSQL مدعومة هو 9.4، وأعلى إصدار مستهدف مدعوم هو 14.9.
يتم دعم عمليات الترحيل إلى نفس الإصدار أو إصدار أعلى فقط. على سبيل المثال، يتم دعم ترحيل 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
المصدر .دون عنوان IP DMS بعد الانتهاء من توفير مثيل لخدمة ترحيل قاعدة بيانات Azure.
أضف عنوان IP إلى
pg_hba.conf
الملف:host all 172.16.136.18/10 md5 host replication postgres 172.16.136.18/10 md5
يجب أن يكون لدى المستخدم دور النسخ المتماثل على الخادم الذي يستضيف قاعدة البيانات المصدر.
يجب أن تتطابق مخططات قاعدة البيانات المصدر والهدف.
قيود الحجم
- يمكنك ترحيل ما يصل إلى 1 تيرابايت من البيانات من PostgreSQL إلى قاعدة بيانات Azure ل PostgreSQL، باستخدام خدمة DMS واحدة.
- يسمح DMS للمستخدمين باختيار الجداول داخل قاعدة بيانات يريدون ترحيلها.
خلف الكواليس، 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 غير مدعوم.