أفضل الممارسات pg_dump pg_restore لقاعدة بيانات Azure ل PostgreSQL - الخادم المرن

ينطبق على: قاعدة بيانات Azure ل PostgreSQL - خادم مرن

تستعرض هذه المقالة الخيارات وأفضل الممارسات لتسريع pg_dump pg_restore. كما يشرح أفضل تكوينات الخادم لتنفيذ pg_restore.

أفضل الممارسات pg_dump

يمكنك استخدام الأداة المساعدة pg_dump لاستخراج قاعدة بيانات Azure لقاعدة بيانات خادم PostgreSQL المرنة في ملف برنامج نصي أو ملف أرشيف. يتم سرد بعض خيارات سطر الأوامر التي يمكنك استخدامها لتقليل وقت التفريغ الإجمالي باستخدام pg_dump في الأقسام التالية.

تنسيق الدليل (-Fd)

يقوم هذا الخيار إخراج أرشيف بتنسيق الدليل يمكنك إدخاله إلى pg_restore. بشكل افتراضي، يتم ضغط الإخراج.

وظائف متوازية (-j)

باستخدام pg_dump، يمكنك تشغيل مهام تفريغ بشكل متزامن باستخدام خيار المهام المتوازية. يقلل هذا الخيار من إجمالي وقت تفريغ ولكن يزيد الحمل على خادم قاعدة البيانات. نوصي بالوصول إلى قيمة مهمة متوازية بعد مراقبة مقاييس الخادم المصدر عن كثب، مثل استخدام وحدة المعالجة المركزية والذاكرة وعمليات الإدخال/الإخراج (الإدخال/الإخراج في الثانية).

عند تعيين قيمة لخيار المهام المتوازية، يتطلب pg_dump ما يلي:

  • يجب أن يساوي عدد الاتصالات عدد المهام المتوازية +1، لذا تأكد من تعيين max_connections القيمة وفقا لذلك.
  • يجب أن يكون عدد المهام المتوازية أقل من أو يساوي عدد وحدات المعالجة المركزية الظاهرية المخصصة لخادم قاعدة البيانات.

الضغط (-Z0)

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

انتفاجات الجدول والتفريغ

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

select schemaname,relname,n_dead_tup,n_live_tup,round(n_dead_tup::float/n_live_tup::float*100) dead_pct,autovacuum_count,last_vacuum,last_autovacuum,last_autoanalyze,last_analyze from pg_stat_all_tables where n_live_tup >0;

dead_pct العمود في هذا الاستعلام هو النسبة المئوية للمجموعات الميتة عند مقارنتها بالمجموعات الحية. قد تشير القيمة العالية dead_pct للجدول إلى أن الجدول لا يتم تفريغه بشكل صحيح. لمزيد من المعلومات، راجع الضبط التلقائي في قاعدة بيانات Azure ل PostgreSQL - الخادم المرن.

لكل جدول تحدده، يمكنك إجراء تحليل تفريغ يدوي عن طريق تشغيل ما يلي:

vacuum(analyze, verbose) <table_name> 

استخدام خادم PITR

يمكنك تنفيذ pg_dump على خادم متصل أو مباشر. يقوم بعمل نسخ احتياطية متسقة حتى إذا كان يتم استخدام قاعدة البيانات. لا يمنع المستخدمين الآخرين من استخدام قاعدة البيانات. ضع في اعتبارك حجم قاعدة البيانات واحتياجات العمل أو العملاء الأخرى قبل بدء عملية pg_dump. قد تكون قواعد البيانات الصغيرة مرشحة جيدة لأداء pg_dump على خادم الإنتاج.

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

بناء جملة pg_dump

استخدم بناء الجملة التالي pg_dump:

pg_dump -h <hostname> -U <username> -d <databasename> -Fd -j <Num of parallel jobs> -Z0 -f sampledb_dir_format

أفضل الممارسات pg_restore

يمكنك استخدام الأداة المساعدة pg_restore لاستعادة قاعدة بيانات خادم مرنة ل Azure Database for PostgreSQL من أرشيف تم إنشاؤه بواسطة pg_dump. يتم سرد بعض خيارات سطر الأوامر لتقليل وقت الاستعادة الإجمالي في الأقسام التالية.

استعادة متوازية

باستخدام مهام متزامنة متعددة، يمكنك تقليل الوقت المستغرق لاستعادة قاعدة بيانات كبيرة على خادم هدف متعدد vCore. يمكن أن يكون عدد المهام مساويا لعدد وحدات vCPUs المخصصة للخادم الهدف أو أقل منه.

معلمات الخادم

إذا كنت تقوم باستعادة البيانات إلى خادم جديد أو خادم غير إنتاجي، يمكنك تحسين معلمات الخادم التالية قبل تشغيل pg_restore:

work_mem = 32 ميغابايت
max_wal_size = 65536 (64 غيغابايت)
checkpoint_timeout = 3600 #60min
maintenance_work_mem = 2097151 (2 غيغابايت)
autovacuum = إيقاف التشغيل
wal_compression = في

بعد اكتمال الاستعادة، تأكد من تحديث جميع هذه المعلمات بشكل مناسب وفقا لمتطلبات حمل العمل.

إشعار

اتبع التوصيات السابقة فقط إذا كانت هناك مساحة كافية من الذاكرة والقرص. إذا كان لديك خادم صغير مع 2 أو 4 أو 8 vCores، فقم بتعيين المعلمات وفقا لذلك.

اعتبارات أخرى

  • تعطيل قابلية الوصول العالية (HA) قبل تشغيل pg_restore.
  • تحليل كافة الجداول التي يتم ترحيلها بعد اكتمال الاستعادة.

بناء جملة pg_restore

استخدم بناء الجملة التالي pg_restore:

pg_restore -h <hostname> -U <username> -d <db name> -Fd -j <NUM> -C <dump directory>

  • -Fd: تنسيق الدليل.
  • -j: عدد الوظائف.
  • -C: ابدأ الإخراج بأمر لإنشاء قاعدة البيانات نفسها ثم أعد الاتصال بها.

فيما يلي مثال على كيفية ظهور بناء الجملة هذا:

pg_restore -h <hostname> -U <username> -j <Num of parallel jobs> -Fd -C -d <databasename> sampledb_dir_format

اعتبارات الجهاز الظاهري

إنشاء جهاز ظاهري في نفس المنطقة ومنطقة التوفر، ويفضل أن يكون لديك كل من الخوادم الهدف والمصدر. أو، كحد أدنى، قم بإنشاء الجهاز الظاهري الأقرب إلى الخادم المصدر أو الخادم الهدف. نوصي باستخدام أجهزة Azure الظاهرية مع SSD محلي عالي الأداء.

لمزيد من المعلومات حول وحدات SKU، راجع:

الخطوات التالية