إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
توضح هذه المقالة اعتبارات خاصة لاستخدام ملحقات أو وحدات معينة في خادم مرن قاعدة بيانات Azure لـ PostgreSQL.
اعتبارات عامة للامتدادات
لاستخدام ملحق في خادم مرن قاعدة بيانات Azure لـ PostgreSQL، تحتاج إلى:
-
السماح بالتمديد. إذا لم تسمح بالامتداد، أو أي محاولة لتنفيذ
CREATE EXTENSION،ALTER EXTENSION،DROP EXTENSION، أوCOMMENT ON EXTENSIONفشلت مع خطأ يشير إلى أن الامتداد المشار إليه غير مسموح به. - إذا نشر الملحق مكتبة ثنائية مشتركة تتطلب تخصيص الذاكرة المشتركة والوصول إليها، وتحتاج إلى تحميلها عند بدء تشغيل الخادم، فاتبع الإرشادات المتوفرة في مكتبات التحميل.
- إنشاء ملحق في قواعد البيانات حيث تريد أن ينشر الملحق كائنات SQL الموزعة مع هذا الملحق.
- إسقاط التمديد. عندما تريد إزالة جميع كائنات SQL الموزعة من قاعدة البيانات بواسطة ذلك الامتداد.
- تحديث الامتدادات، لتحديث جميع عناصر SQL التي تم نشرها بواسطة ملحق مثبت بالفعل إلى أحدث إصدار.
- عرض الملحقات المثبتة والإصدارات المقابلة لها.
إذا تلقيت أي خطأ أثناء تنفيذ CREATE EXTENSIONALTER EXTENSIONDROP EXTENSIONالأوامر أو COMMENT ON EXTENSION على خادم قاعدة بيانات Azure لـ PostgreSQL المرن، فشاهد قائمة الأخطاء المحتملة، وما الذي يمكن أن يكون سبب كل خطأ.
اعتبارات عامة للوحدات
لاستخدام وحدة نمطية في خادم مرن قاعدة بيانات Azure لـ PostgreSQL، أضفها إلى المعلمة shared_preload_libraries كما هو موضح في مكتبات التحميل.
لا يلزم إدراج الوحدات في القائمة المسموح بها. هذا مطلب حصري للملحقات.
ملحقات ذات اعتبارات محددة
تقوم القائمة التالية بتعداد كافة الملحقات المدعومة التي تتطلب اعتبارات محددة عند استخدامها في خادم مرن قاعدة بيانات Azure لـ PostgreSQL:
AGEdblinkpg_buffercachepg_cronpg_hint_planpg_repackpg_stat_statementspgcryptopostgres_fdwpgstattupletimescaledb
AGE
ملحق Apache AGE هو ملحق رسم بياني ل PostgreSQL مدعوم من قاعدة بيانات Azure ل PostgreSQL. يوفر وظائف قاعدة بيانات الرسم البياني، ودعم استعلام cypher المفتوح، والقدرة على تنفيذ استعلامات معقدة على بيانات الرسم البياني المخزنة في PostgreSQL. Apache AGE هو مشروع مفتوح المصدر تم إصداره بموجب ترخيص Apache 2.0.
تثبيت AGE
لاستخدام AGE، تأكد من السماح بالقائمة الملحق وتحميل مكتبتهوتثبيت الملحق في قاعدة البيانات حيث تخطط لاستخدام وظائفه.
dblink
dblink يسمح لك الملحق بالاتصال من خادم مرن قاعدة بيانات Azure لـ PostgreSQL إلى قاعدة بيانات أخرى أو قاعدة بيانات أخرى في نفس الخادم. تدعم قاعدة بيانات Azure ل PostgreSQL كلا من الاتصالات الواردة والصادرة بأي خادم PostgreSQL. يحتاج الخادم المرسل إلى السماح بالاتصالات الصادرة إلى الخادم المتلقي. وبالمثل، يحتاج الخادم المتلقي للسماح الاتصالات من خادم الإرسال.
إذا كنت تخطط لاستخدام هذا الملحق، فوزع الخوادم الخاصة بك مع تكامل الشبكة الظاهرية. بشكل افتراضي، يسمح تكامل الشبكة الظاهرية بالاتصالات بين الخوادم في الشبكة الظاهرية. يمكنك أيضا اختيار استخدام مجموعات أمان الشبكة لتخصيص الوصول.
pg_buffercache
استخدم الامتداد pg_buffercache لفحص محتويات shared_buffers. باستخدام هذا الامتداد، يمكنك تحديد ما إذا كانت علاقة معينة مخزنة مؤقتا في shared_buffers. يمكن لهذا الإضافة مساعدتك في استكشاف مشاكل الأداء المتعلقة بالتخزين المؤقت.
هذا الامتداد جزء من التثبيت الأساسي ل PostgreSQL، وهو سهل التثبيت.
CREATE EXTENSION pg_buffercache;
pg_cron
الملحق pg_cron هو مجدول مهام بسيط يستند إلى cron ل PostgreSQL يعمل داخل قاعدة البيانات كملحق.
pg_cron يمكن للملحق تشغيل مهام الصيانة المجدولة داخل قاعدة بيانات PostgreSQL. على سبيل المثال، يمكنك تشغيل فراغ دوري لجدول أو إزالة مهام البيانات القديمة.
pg_cron يمكن للملحق تشغيل مهام متعددة بالتوازي، ولكنه يعمل على الأكثر مثيل واحد من الوظيفة في كل مرة. إذا كان من المفترض أن يبدأ تشغيل ثان قبل انتهاء التشغيل الأول، فسيتم وضع التشغيل الثاني في قائمة الانتظار وبدء تشغيله بمجرد اكتمال التشغيل الأول. وبهذه الطريقة، يضمن أن الوظائف تعمل بدقة عدة مرات كما هو مجدول ولا تعمل بشكل متزامن مع نفسها.
تأكد من أن القيمة التي shared_preload_libraries تم تعيينها، تتضمن pg_cron. لا يدعم هذا الملحق تحميل المكتبة كتأثير لتنفيذ إنشاء ملحق. أي محاولة لتشغيل CREATE EXTENSION إذا لم تتم إضافة الملحق إلى shared_preload_libraries، أو لم تتم إعادة تشغيل الخادم بعد إضافته، ينتج عنه خطأ يقول pg_cron can only be loaded via shared_preload_librariesنصه ، والذي يكون Add pg_cron to the shared_preload_libraries configuration variable in postgresql.confتلميحه هو .
لاستخدام pg_cron، تأكد من تحميل مكتبتها المشتركة عند بدء تشغيل الخادم، ومن إدراجها في القائمة المسموح بها، وتثبيتها في أي قاعدة بيانات تريد التفاعل منها مع وظائفها، باستخدام أدوات SQL التي تقوم بإنشائها.
Examples
لحذف البيانات القديمة يوم السبت في الساعة 3:30 صباحا (GMT).
SELECT cron.schedule('30 3 * * 6', $$DELETE FROM events WHERE event_time < now() - interval '1 week'$$);لتشغيل الفراغ كل يوم في الساعة 10:00 صباحا (GMT) في قاعدة البيانات
postgresالافتراضية .SELECT cron.schedule('0 10 * * *', 'VACUUM');لإلغاء جدولة كافة المهام من
pg_cron.SELECT cron.unschedule(jobid) FROM cron.job;لمشاهدة جميع المهام المجدولة حاليا باستخدام
pg_cron.SELECT * FROM cron.job;لتشغيل الفراغ كل يوم في الساعة 10:00 صباحا (GMT) في
testcronقاعدة البيانات.SELECT cron.schedule_in_database('VACUUM','0 10 * * *', 'VACUUM', 'testcron', null, TRUE);
المزيد من الأمثلة
pg_cron بدءا من الإصدار 1.4، يمكنك استخدام cron.schedule_in_database الدالتين و cron.alter_job لجدولة وظيفتك في قاعدة بيانات معينة وتحديث جدول حالي، على التوالي.
cron_schedule_in_database تسمح الدالة باسم المستخدم كمعلمة اختيارية. يتطلب تعيين اسم المستخدم إلى قيمة غير خالية امتياز مستخدم PostgreSQL الفائق وغير مدعوم في خادم مرن قاعدة بيانات Azure لـ PostgreSQL. تظهر الأمثلة السابقة تشغيل هذه الدالة مع حذف معلمة اسم مستخدم اختيارية أو تعيينها إلى null، والتي تقوم بتشغيل المهمة في سياق جدولة المستخدم للوظيفة، والتي يجب أن يكون لها azure_pg_admin امتيازات الدور.
لحذف البيانات القديمة يوم السبت في الساعة 3:30 صباحا (GMT) على قاعدة البيانات DBName.
SELECT cron.schedule_in_database('JobName', '30 3 * * 6', $$DELETE FROM events WHERE event_time < now() - interval '1 week'$$,'DBName');لتحديث اسم قاعدة البيانات للجدول الحالي أو تغييره
SELECT cron.alter_job(job_id:=MyJobID,database:='NewDBName');
pg_hint_plan
تتيح لك الإضافة pg_hint_plan تعديل خطط تنفيذ PostgreSQL باستخدام "تلميحات" في تعليقات SQL، مثل:
/*+ SeqScan(a) */
pg_hint_plan يقرأ الملحق عبارات التلميح في تعليق النموذج الخاص المقدم مع عبارة SQL الهدف. يبدأ الشكل المحدد بتسلسل /*+ الأحرف وينتهي ب */. تتكون عبارات التلميح من أسماء تلميحات والمعلمات التالية محاطة بأقواس ومحددة بمسافات. يمكن أن تحدد الأسطر الجديدة لقابلية القراءة كل عبارة تلميح.
Example:
/*+
HashJoin(a b)
SeqScan(a)
*/
SELECT *
FROM pgbench_branches b
JOIN pgbench_accounts a ON b.bid = a.bid
ORDER BY a.aid;
المثال السابق يجعل المخطط يستخدم نتائج جدول seqscan على a السطح للدمج مع الجدول b ك .hashjoin
لاستخدام الامتداد pg_hint_plan ، تأكد من إدراج الإضافة في قائمة الاسم ، وتحميل مكتبتها، وتثبيت الإضافة في قاعدة البيانات التي تخطط لاستخدام وظيفتها فيها.
pg_repack
عادة ما يطرح مستخدمو الإضافة pg_repack لأول مرة السؤال التالي: هل pg_repack الإضافة أو قابلة للتنفيذ على جانب العميل تشبه psql أم pg_dump؟
pg_repack هو في الواقع كلاهما.
يحتوي pg_repack / lib على التعليمات البرمجية للملحق ، بما في ذلك المخطط وعناصر SQL التي ينشئها ، ومكتبة C التي تنفذ التعليمات البرمجية للعديد من هذه الوظائف.
من ناحية أخرى ، يحتوي pg_repack / bin على التعليمات البرمجية لتطبيق العميل ، والذي يعرف كيفية التفاعل مع عناصر قابلية البرمجة المنفذة في الملحق. يهدف تطبيق العميل هذا إلى تخفيف تعقيد التفاعل مع الواجهات المختلفة التي تظهر بواسطة الملحق من جانب الخادم. يقدم للمستخدم بعض خيارات سطر الأوامر التي يسهل فهمها. تطبيق العميل عديم الفائدة بدون الامتداد الذي تم إنشاؤه في قاعدة البيانات التي يشير إليها. الإضافة على جانب الخادم بحد ذاتها تعمل بالكامل، لكنها تتطلب من المستخدم فهم نمط تفاعل معقد. يتكون هذا النمط من تنفيذ استعلامات لاسترجاع البيانات التي تستخدم كمدخل للدوال التي تنفذها الامتداد، وهكذا.
تم رفض الإذن لإعادة حزمة المخطط
حاليا، لأن الامتداد يمنح أذونات لمخطط إعادة التعبئة، يمكنك فقط دعم الوظائف التشغيلية pg_repack من سياق azure_pg_admin.
قد تلاحظ أنه إذا حاول مالك الجدول، الذي ليس كذلك azure_pg_admin، التشغيل pg_repack، يتلقى الخطأ التالي:
NOTICE: Setting up workers.conns
ERROR: pg_repack failed with error: ERROR: permission denied for schema repack
LINE 1: select repack.version(), repack.version_sql()
لتجنب هذا الخطأ، قم بتشغيل pg_repack من سياق azure_pg_admin.
pg_stat_statements
يمنحك ملحق pg_stat_statements عرضا لكافة الاستعلامات التي يتم تشغيلها على قاعدة البيانات الخاصة بك. هذه المعلومات مفيدة لفهم أداء حمل عمل الاستعلام على نظام إنتاج.
يتم تحميل ملحق pg_stat_statements مسبقا على shared_preload_libraries كل خادم مرن قاعدة بيانات Azure لـ PostgreSQL لتوفير وسيلة لتتبع إحصائيات تنفيذ عبارة SQL.
لأسباب أمنية، يجب عليك إدراج إضافة pg_stat_statementsفي القائمة وتثبيتها باستخدام أمر CREATE EXTENSION.
الإعداد pg_stat_statements.track، الذي يتحكم في عبارات التي يتعقبها الملحق، والإعدادات الافتراضية إلى top، مما يعني أنه يتم تعقب جميع العبارات الصادرة مباشرة من قبل العملاء. هناك مستويان تعقب آخران هما none و all. يمكنك تكوين هذا الإعداد كمعلمة.
هناك مقايضة بين معلومات تنفيذ الاستعلام التي توفرها الإضافة pg_stat_statements وأداء الخادم، حيث تسجل كل عبارة SQL. إذا لم تكن تستخدم الإضافة pg_stat_statements بنشاط، قم بتعيين pg_stat_statements.track على none. قد تعتمد pg_stat_statements بعض خدمات المراقبة التابعة لجهات خارجية على تقديم رؤى أداء الاستعلام، لذا تأكد من ما إذا كان الأمر كذلك بالنسبة لك.
pgcrypto
يدعم قاعدة بيانات Azure لـ PostgreSQL التشفير على مستوى التطبيق على مستوى العمود من خلال ملحق pgcrypto PostgreSQL. يتيح ملحق pgcrypto للتطبيقات استدعاء وظائف التشفير بشكل صريح في عبارات PostgreSQL SQL لتشفير قيم عمود أو تجزئتها باستخدام خوارزميات التشفير التي توفرها مكتبة OpenSSL الأساسية.
بدءا من Azure Linux 3.0، يستخدم نظام التشغيل OpenSSL 3.0، والذي ينقل العديد من خوارزميات التشفير الأقدم والأضعف وواجهات برمجة التطبيقات منخفضة المستوى إلى موفر قديم منفصل لا يتم تحميله افتراضيا. يشجع هذا التغيير على استخدام خوارزميات تشفير حديثة وأكثر أمانا وواجهات برمجة تطبيقات OpenSSL EVP (Envelope) عالية المستوى.
ونتيجة لذلك، لا تتوفر خوارزميات التشفير التي يصنفها OpenSSL 3.0 على أنها قديمة بشكل افتراضي للاستخدام من قبل pgcrypto على خوادم قاعدة بيانات Azure لـ PostgreSQL التي تعمل Azure Linux 3.0.
خوارزميات التشفير القديمة
خوارزميات التشفير القديمة التالية موجودة في موفر OpenSSL 3.0 القديم ولا تتوفر بشكل افتراضي على خوادم قاعدة بيانات Azure لـ PostgreSQL التي تعمل Azure Linux 3.0. ربما سمحت إصدارات النظام الأساسي السابقة ل pgcrypto باستخدام هذه الخوارزميات، ولكن Azure Linux 3.0 لم يعد يدعمها.
خوارزميات التشفير المتماثلة (الشفرات):
- السمك المنفوخ (BF-CBC)
- يلقي
- DES (DES منفرد؛ وليس 3DES)
- فكرة
- RC2
- RC4
- RC5
- البذرة
ملخص الرسائل وخوارزميات التجزئة:
- MD2
- MD4
- MDC2
- RIPEMD-160
- SHA-1 (مهمل للتوقيعات الرقمية ولكن قد يظل مسموحا به لسيناريوهات HMAC محددة اعتمادا على التكوين)
- دوامة
ترقيات قاعدة بيانات Azure لـ PostgreSQL إلى Azure Linux 3.0 هي جزء من تحسينات المنصات المستمرة. يجب أن تضمن التطبيقات التي تعتمد على pgcrypto أنها تستخدم خوارزميات تشفير حديثة ومدعمة عند إجراء تشفير على مستوى التطبيق على مستوى العمود.
postgres_fdw
postgres_fdw يمكنك الملحق من الاتصال من خادم مرن قاعدة بيانات Azure لـ PostgreSQL إلى خادم آخر أو إلى قاعدة بيانات أخرى في نفس الخادم. تدعم قاعدة بيانات Azure ل PostgreSQL كلا من الاتصالات الواردة والصادرة بأي خادم PostgreSQL. يحتاج الخادم المرسل إلى السماح بالاتصالات الصادرة إلى الخادم المتلقي. وبالمثل، يحتاج الخادم المتلقي للسماح الاتصالات من خادم الإرسال.
إذا كنت تخطط لاستخدام هذا الملحق، فوزع الخوادم الخاصة بك مع تكامل الشبكة الظاهرية. بشكل افتراضي، يسمح تكامل الشبكة الظاهرية بالاتصالات بين الخوادم في الشبكة الظاهرية. يمكنك أيضا اختيار استخدام مجموعات أمان الشبكة لتخصيص الوصول.
pgstattuple
عند استخدام الملحق pgstattuple لمحاولة الحصول على إحصائيات المجموعة من الكائنات المحفوظة في pg_toast المخطط في إصدارات PostgreSQL من 11 إلى 13، تتلقى خطأ "تم رفض الإذن للمخطط pg_toast".
تم رفض الإذن pg_toast المخطط
لا يمكن للعملاء الذين يستخدمون إصدارات PostgreSQL من 11 إلى 13 على قاعدة بيانات Azure لـ PostgreSQL الخادم المرن استخدام الملحق pgstattuple على الكائنات داخل pg_toast المخطط.
في PostgreSQL 16 و17، يمنح الدور pg_read_all_data تلقائيا ل azure_pg_admin، مما يسمح pgstattuple بالعمل بشكل صحيح. في PostgreSQL 14 و15، يمكن للعملاء منح pg_read_all_data الدور azure_pg_admin يدويا لتحقيق نفس النتيجة. ومع ذلك، في PostgreSQL 11 إلى 13، pg_read_all_data الدور غير موجود.
لا يمكن للعملاء منح الأذونات الضرورية مباشرة. إذا كنت بحاجة للعمل pgstattuple للوصول إلى الكائنات تحت المخططpg_toast، تابع في إنشاء طلب دعم Azure support.
مقياس الوقت
الملحق timescaledb هو قاعدة بيانات سلسلة زمنية مجمعة كملحق ل PostgreSQL. يوفر وظائف تحليلية موجهة للوقت وتحسينات ومقاييس PostgreSQL لأحمال عمل السلاسل الزمنية.
تعرف على المزيد حول TimescaleDB، وهي علامة تجارية مسجلة لشركة Timescale, Inc. توفر قاعدة بيانات Azure ل PostgreSQL إصدار TimescaleDB Apache-2.
تثبيت TimescaleDB
لاستخدام timescaledb، تأكد من إدراج الملحق في القائمة المسموح بها ، وتحميل مكتبته ، وتثبيت الملحق في قاعدة البيانات التي تخطط لاستخدام وظائفها عليها.
يمكنك الآن إنشاء TimescaleDB hypertable من البداية أو ترحيل بيانات السلاسل الزمنية الحالية في PostgreSQL.
لمزيد من المعلومات حول استعادة قاعدة بيانات مقياس الوقت باستخدام pg_dump و pg_restore، راجع وثائق مقياس الوقت.
استعادة قاعدة بيانات مقياس الوقت باستخدام النسخ الاحتياطي للمقياس الزمني
أثناء تشغيل SELECT timescaledb_post_restore() الإجراء، قد تحصل على أذونات مرفوضة عند تحديث العلامة timescaledb.restoring . يحدث هذا الخطأ بسبب الإذن المحدود ALTER DATABASE في خدمات قاعدة بيانات PaaS السحابية. في هذه الحالة، يمكنك تنفيذ أسلوب بديل باستخدام timescaledb-backup الأداة لإجراء نسخ احتياطي واستعادة قاعدة بيانات مقياس الوقت. النسخ الاحتياطي ل Timescaledb هو برنامج يجعل تفريغ قاعدة بيانات TimescaleDB واستعادتها أبسط وأقل عرضة للخطأ وأكثر أداء.
للقيام بذلك، اتبع الخطوات التالية:
تثبيت الأدوات كما هو موضح في تثبيت timescaledb-backup.
إنشاء هدف قاعدة بيانات Azure لـ PostgreSQL خادم مرن وقاعدة بيانات.
تمكين ملحق مقياس الوقت.
امنح الدور
azure_pg_adminللمستخدم الذي يستخدمه ts-restore.قم بتشغيل ts-restore لاستعادة قاعدة البيانات.
لمزيد من المعلومات حول هذه الأدوات المساعدة، راجع النسخ الاحتياطي لمقياس الوقت.
الملحقات وترقية الإصدار الرئيسي
يوفر قاعدة بيانات Azure لـ PostgreSQL ميزة ترقية الإصدار الرئيسي الموضعي التي تقوم بالترقية الموضعية للخادم المرن قاعدة بيانات Azure لـ PostgreSQL، مع تفاعل بسيط فقط من المستخدم. تعمل ترقية الإصدار الرئيسي الموضعي على تبسيط عملية ترقية قاعدة بيانات Azure ل PostgreSQL، مما يقلل من تعطل المستخدمين والتطبيقات التي تصل إلى الخادم. لا تدعم ترقيات الإصدار الرئيسي الموضعي ملحقات محددة، وهناك بعض القيود على ترقية ملحقات معينة.
الملحقات anonو Apache AGEdblinkorafcepostgres_fdwو و timescaledb غير مدعومة لجميع إصدارات الخادم المرن قاعدة بيانات Azure لـ PostgreSQL عند استخدام ميزة تحديث الإصدار الرئيسي الموضعي.
وحدات ذات اعتبارات محددة
تعد القائمة التالية جميع الوحدات النمطية المدعومة التي تتطلب اعتبارات محددة عند استخدامها في خادم مرن قاعدة بيانات Azure لـ PostgreSQL:
pg_failover_slots
pg_failover_slots
تعمل الوحدة pg_failover_slots النمطية على تحسين قاعدة بيانات Azure ل PostgreSQL عند التشغيل مع كل من النسخ المتماثل المنطقي والخوادم الممكنة عالية التوفر. وهو يعالج بشكل فعال التحدي داخل محرك PostgreSQL القياسي الذي لا يحافظ على فتحات النسخ المتماثل المنطقية بعد تجاوز الفشل. يعد الحفاظ على هذه الفتحات أمرا بالغ الأهمية لمنع إيقاف النسخ المتماثل مؤقتا أو عدم تطابق البيانات أثناء تغييرات دور الخادم الأساسي، ما يضمن استمرارية التشغيل وتكامل البيانات.
يبسط الملحق عملية تجاوز الفشل من خلال إدارة النقل الضروري وتنظيف ومزامنة فتحات النسخ المتماثل، مما يوفر انتقالا سلسا أثناء تغييرات دور الخادم.
يمكنك العثور على مزيد من المعلومات والإرشادات حول استخدام الوحدة النمطية pg_failover_slots على صفحة GitHub الخاصة بها.
لاستخدام الوحدة pg_failover_slots ، تأكد من تحميل مكتبتها عند بدء الخادم.