39. ترقية البرمجيات¶
لأن PostGIS يعمل ضمن PostgreSQL، فإن كل تثبيت لـ PostGIS يتكون في الواقع من إصدارين من البرمجيات: إصدار PostgreSQL وإصدار PostGIS. وكمبدأ عام، يمكن نظريًا تشغيل كل إصدار من PostGIS ضمن عدد من إصدارات PostgreSQL، والعكس صحيح.
عمليًا، يحدد زوج الإصدارات المتاح بالضبط مَن قام بتحزيم توزيعة PostgreSQL التي تستخدمها. وتتضمن معظم حزم Linux إصدارين من PostGIS لكل إصدار من PostgreSQL، مما يتيح ترقية الجزأين إما بشكل مستقل أو في آن واحد، بحسب تفضيلاتك.
يمكن النظر إلى الترقيات من حيث ترقية كل مكوّن على حدة.
39.1. ترقية PostgreSQL¶
هناك نوعان من سيناريوهات ترقية PostgreSQL:
"الترقية الصغرى" عندما يزداد إصدار البرنامج على مستوى "التصحيح" (patch). مثلًا من 8.4.3 إلى 8.4.4، أو من 9.0.1 إلى 9.0.3. ولا مشكلة في الزيادة بأكثر من إصدار تصحيح واحد. تُصلح الترقيات الصغرى الأخطاء لكنها لا تضيف أي ميزات جديدة ولا تغيّر السلوك.
"الترقية الكبرى" عندما يزداد الإصدار "الرئيسي" (major) أو "الفرعي" (minor). مثلًا من 8.4.5 إلى 9.0.0، أو من 9.0.5 إلى 9.1.1. تضيف الترقيات الكبرى ميزات جديدة وتغيّر السلوك.
39.1.1. الترقيات الصغرى لـ PostgreSQL¶
في "الترقيات الصغرى" لا يلزم أي إجراء خاص. ما عليك إلا تثبيت البرنامج الجديد وإعادة تشغيل الخادم.
39.1.2. الترقيات الكبرى لـ PostgreSQL¶
في "الترقيات الكبرى" هناك طريقتان لتنفيذ الترقية.
39.1.2.1. التفريغ/الاستعادة (Dump/Restore)¶
يتضمن التفريغ والاستعادة تحويل جميع البيانات إلى صيغة محايدة تجاه المنصة (تمثيلات نصية) عند التفريغ، ثم إعادتها إلى التمثيلات الأصلية عند الاستعادة، لذا قد يستغرق ذلك وقتًا طويلًا ويستهلك المعالج بكثافة. لكن إذا كنت تنتقل إلى معمارية أو نظام تشغيل جديد فهو إجراء لا بد منه. كما أنه مسار ترقية مجرَّب ومفهوم جيدًا، لذا إذا لم تكن قاعدة بياناتك كبيرة جدًا فلا يوجد سبب لعدم الالتزام به.
فرّغ بياناتك باستخدام
pg_dumpallمن قاعدة البيانات القديمة.ثبّت الإصدار الجديد من PostgreSQL والإصدار نفسه من PostGIS الذي تستخدمه في قاعدة بياناتك القديمة. يجب أن يتطابق إصدار PostGIS حتى تشير تعريفات الدوال في ملف التفريغ إلى إصدار متوقع من مكتبة PostGIS.
هيّئ منطقة البيانات الجديدة باستخدام البرنامج
initdbمن البرنامج الجديد.شغّل الخادم الجديد على منطقة البيانات الجديدة.
استعد ملف التفريغ باستخدام
pg_restore.
39.1.2.2. pg_upgrade¶
تتيح الأداة pg_upgrade ترقية مجلدات بيانات PostgreSQL دون الحاجة إلى خطوة تفريغ/استعادة. ولا تستطيع الأداة التعامل مع التغييرات في ملفات البيانات نفسها، لكنها تتعامل مع التغييرات الأكثر شيوعًا وتكرارًا في جداول النظام التي تحدث في الترقيات الكبرى لـ PostgreSQL.
ملاحظة
التعليمات الكاملة لتشغيل عملية الترقية موجودة في صفحة pg_upgrade على موقع PostgreSQL.
يتوقع البرنامج pg_upgrade أن يكون لديه وصول إلى كلا إصداري PostgreSQL اللذين يعمل عليهما، القديم والجديد، لذا سيتعين عليك تثبيتهما كليهما.
ثبّت الإصدار الجديد من PostgreSQL الذي ستستخدمه.
ثبّت في PostgreSQL الجديد الإصدار نفسه من PostGIS الذي تستخدمه في PostgreSQL القديم.
هيّئ منطقة بيانات PostgreSQL الجديدة باستخدام النسخة الجديدة من
initdb.تأكد من إيقاف خادمي PostgreSQL القديم والجديد كليهما.
شغّل pg_upgrade، مع الحرص على استخدام الملف التنفيذي من تثبيت البرنامج الجديد.
pg_upgrade --old-datadir "/var/lib/postgres/12/data" --new-datadir "/var/lib/postgres/13/data" --old-bindir "/usr/pgsql/12/bin" --new-bindir "/usr/pgsql/13/bin"
إذا أنشأ pg_upgrade أي ملفات
.sql، فشغّلها الآن.شغّل الخادم الجديد.
39.2. ترقية PostGIS¶
يتعامل PostGIS مع الترقيات الصغرى والكبرى من خلال آلية EXTENSION. فإذا كنت قد فعّلت الإمكانات المكانية في قاعدة بياناتك باستخدام CREATE EXTENSION postgis، فيمكنك تحديث قاعدة بياناتك باستخدام الآلية نفسها.
أولًا، ثبّت البرنامج الجديد حتى يصبح متاحًا لقاعدة البيانات.
ثم شغّل تعليمات SQL لترقية امتداد PostGIS الخاص بك.
-- If you are upgrading from PostGIS 2.5 or later
-- and want the latest installed version
SELECT postgis_extensions_upgrade();
-- If you are upgrading from an earlier version
-- you have to specifically turn on the version you want
ALTER EXTENSION postgis UPDATE TO '2.5.5';