هذا هو الأمر pg_upgrade الذي يمكن تشغيله في مزود الاستضافة المجانية OnWorks باستخدام إحدى محطات العمل المجانية المتعددة على الإنترنت مثل Ubuntu Online أو Fedora Online أو محاكي Windows عبر الإنترنت أو محاكي MAC OS عبر الإنترنت
برنامج:
اسم
pg_upgrade - ترقية مثيل خادم PostgreSQL
موجز
pg_upgrade -b أولدبيندير -B نيوبيندير -d com.olddatadir -D نيوداتادير [خيار...]
الوصف
يسمح pg_upgrade (المعروف سابقًا باسم pg_migrator) بتشغيل البيانات المخزنة في ملفات بيانات PostgreSQL
تمت ترقيته إلى إصدار رئيسي لاحق من PostgreSQL دون تفريغ البيانات / إعادة تحميلها عادةً
مطلوب لترقيات الإصدار الرئيسي ، على سبيل المثال من 8.4.7 إلى الإصدار الرئيسي الحالي من
PostgreSQL. إنه غير مطلوب للترقيات الثانوية ، على سبيل المثال من 9.0.1 إلى 9.0.4.
تضيف إصدارات PostgreSQL الرئيسية بانتظام ميزات جديدة تعمل غالبًا على تغيير تخطيط
جداول النظام ، ولكن نادراً ما يتغير تنسيق تخزين البيانات الداخلية. يستخدم pg_upgrade هذا
حقيقة لإجراء ترقيات سريعة عن طريق إنشاء جداول نظام جديدة وإعادة استخدام القديم ببساطة
ملفات بيانات المستخدم. إذا قام إصدار رئيسي مستقبلي بتغيير تنسيق تخزين البيانات بطريقة ما
الذي يجعل تنسيق البيانات القديم غير قابل للقراءة ، لن تكون pg_upgrade قابلة للاستخدام لمثل هذا
ترقيات. (سيحاول المجتمع تجنب مثل هذه المواقف).
يبذل pg_upgrade قصارى جهده للتأكد من أن المجموعات القديمة والجديدة متوافقة مع النظام الثنائي ، على سبيل المثال
من خلال التحقق من إعدادات وقت الترجمة المتوافقة ، بما في ذلك ثنائيات 32/64 بت. إنها
من المهم أن تكون أي وحدات خارجية متوافقة أيضًا مع النظام الثنائي ، على الرغم من أن هذا لا يمكن أن يكون كذلك
فحص بواسطة pg_upgrade.
يدعم pg_upgrade الترقيات من 8.4.X وما بعده إلى الإصدار الرئيسي الحالي من
PostgreSQL ، بما في ذلك إصدارات اللقطة وألفا.
OPTIONS
يقبل pg_upgrade وسيطات سطر الأوامر التالية:
-b بندير
- قديم بندير =بندير
دليل PostgreSQL القابل للتنفيذ القديم ؛ متغيرات البيئة بجبينولد
-B بندير
- جديد بيندير =بندير
دليل PostgreSQL القابل للتنفيذ الجديد ؛ متغيرات البيئة جديد
-c
--التحقق من
تحقق من المجموعات فقط ، ولا تغير أي بيانات
-d DATADIR
- datadir القديم =DATADIR
دليل بيانات الكتلة القديم ؛ متغيرات البيئة PGDATAOLD
-D DATADIR
- datadir الجديد =DATADIR
دليل بيانات الكتلة الجديد ؛ متغيرات البيئة جديد
-j
--وظائف
عدد العمليات أو الخيوط المتزامنة للاستخدام
-k
--حلقة الوصل
استخدم الروابط الصلبة بدلاً من نسخ الملفات إلى المجموعة الجديدة (استخدم نقاط الوصلات على
ويندوز)
-o الخيارات
- خيارات قديمة الخيارات
خيارات لتمريرها مباشرة إلى القديم بوستجرس يأمر؛ دعوات خيارات متعددة
ملحقة
-O الخيارات
- خيارات جديدة الخيارات
الخيارات لتمريرها مباشرة إلى الجديد بوستجرس يأمر؛ دعوات خيارات متعددة
ملحقة
-p ميناء
- المنفذ القديم =ميناء
رقم منفذ الكتلة القديم ؛ متغيرات البيئة PGPORTOLD
-P ميناء
- منفذ جديد =ميناء
رقم منفذ الكتلة الجديد ؛ متغيرات البيئة جديد
-r
--يحتفظ
الاحتفاظ بملفات SQL و log حتى بعد إتمامها بنجاح
-U اسم المستخدم
--اسم المستخدم =اسم المستخدم
اسم مستخدم تثبيت الكتلة ؛ متغيرات البيئة PGUSER
-v
- الإسراف
تمكين التسجيل الداخلي المطول
-V
--الإصدار
عرض معلومات الإصدار ، ثم الخروج
-?
--مساعدة
اعرض المساعدة ، ثم اخرج
الاستعمال
هذه هي الخطوات لإجراء ترقية باستخدام pg_upgrade:
1. اختياريًا نقل المجموعة القديمة: إذا كنت تستخدم تثبيتًا خاصًا بإصدار معين
الدليل ، على سبيل المثال /opt/PostgreSQL/9.1 ، لا تحتاج إلى نقل الكتلة القديمة. ال
تستخدم جميع أدوات التثبيت الرسومية أدلة التثبيت الخاصة بالإصدار.
إذا لم يكن دليل التثبيت خاصًا بالإصدار ، على سبيل المثال / usr / local / pgsql ، فهو كذلك
ضروري لنقل دليل تثبيت PostgreSQL الحالي حتى لا يتدخل
مع تثبيت PostgreSQL الجديد. بمجرد إيقاف تشغيل خادم PostgreSQL الحالي ،
من الآمن إعادة تسمية دليل تثبيت PostgreSQL ؛ بافتراض الدليل القديم
هو / usr / local / pgsql ، يمكنك القيام بما يلي:
mv / usr / local / pgsql /usr/local/pgsql.old
لإعادة تسمية الدليل.
2. بالنسبة لعمليات التثبيت من المصدر ، قم ببناء الإصدار الجديد: قم بإنشاء مصدر PostgreSQL جديد باستخدام
تكوين الأعلام المتوافقة مع الكتلة القديمة. ستتحقق pg_upgrade
pg_controldata للتأكد من توافق جميع الإعدادات قبل بدء الترقية.
3. ثبّت ثنائيات PostgreSQL الجديدة: ثبّت ثنائيات الخادم الجديد ودعمه
الملفات. يتم تضمين pg_upgrade في التثبيت الافتراضي.
بالنسبة لعمليات التثبيت المصدر ، إذا كنت ترغب في تثبيت الخادم الجديد في مكان مخصص ، فاستخدم
متغير البادئة:
اجعل البادئة = / usr / local / pgsql.new install
4. قم بتهيئة كتلة PostgreSQL الجديدة: قم بتهيئة الكتلة الجديدة باستخدام initdb. مرة أخرى،
استخدام متوافق initdb الأعلام التي تطابق الكتلة القديمة. العديد من المثبتات التي تم إنشاؤها مسبقًا تفعل ذلك
هذه الخطوة تلقائيًا. ليست هناك حاجة لبدء الكتلة الجديدة.
5. تثبيت ملفات الكائنات المشتركة المخصصة: قم بتثبيت أي ملفات كائن مشترك مخصصة (أو DLLs)
المستخدمة من قبل الكتلة القديمة في الكتلة الجديدة ، على سبيل المثال pgcrypto.so ، سواء كانت من
مساهمة أو مصدر آخر. لا تقم بتثبيت تعريفات المخطط ، على سبيل المثال
pgcrypto.sql ، لأنه سيتم ترقيتها من المجموعة القديمة. أيضا ، أي العرف
يجب أيضًا أن تكون ملفات البحث عن النص الكامل (قاموس ، مرادف ، قاموس المرادفات ، كلمات الإيقاف)
نسخها إلى الكتلة الجديدة.
6. ضبط المصادقة: pg_upgrade سيتم الاتصال بالخوادم القديمة والجديدة عدة
مرات ، لذلك قد ترغب في تعيين المصادقة على النظير في pg_hba.conf أو استخدام ملف
~ / .pgpass ملف (انظر القسم 31.15 ، "ملف كلمة المرور" ، في الوثائق).
7. أوقف كلا الخادمين: تأكد من إيقاف استخدام خادمي قاعدة البيانات ، على يونكس ، على سبيل المثال:
pg_ctl -D /opt/PostgreSQL/8.4 توقف
pg_ctl -D /opt/PostgreSQL/9.0 توقف
أو على Windows ، باستخدام أسماء الخدمة المناسبة:
NET STOP postgresql-8.4
NET STOP postgresql-9.0
يمكن أن تظل الخوادم الاحتياطية المتدفقة للنسخ المتماثل وسجلات الشحن قيد التشغيل حتى أ
خطوة لاحقة.
8. تحقق من الخوادم الاحتياطية: إذا كنت تقوم بترقية Streaming Replication و Log-Shipping
الخوادم الاحتياطية ، تحقق من تشغيل الخوادم الاحتياطية القديمة
pg_controldata مقابل مجموعات المجموعات الابتدائية والاستعدادية القديمة. تحقق من أن "أحدث
تطابق قيم موقع نقطة التفتيش "في جميع المجموعات. (سيكون هناك عدم تطابق إذا كان قديمًا
تم إغلاق الخوادم الاحتياطية قبل الابتدائية القديمة.)
9. قم بتشغيل pg_upgrade: قم دائمًا بتشغيل ثنائي pg_upgrade للخادم الجديد ، وليس الخادم القديم.
تتطلب pg_upgrade مواصفات بيانات المجموعة القديمة والجديدة والقابلة للتنفيذ
(bin) الدلائل. يمكنك أيضًا تحديد قيم المستخدم والمنافذ ، وما إذا كنت تريد ملف
البيانات مرتبطة بدلاً من نسخها (الافتراضي).
إذا كنت تستخدم وضع الارتباط ، فستكون الترقية أسرع بكثير (بدون نسخ ملف) وستستخدم أقل
على القرص ، لكنك لن تكون قادرًا على الوصول إلى المجموعة القديمة بمجرد بدء تشغيل المجموعة الجديدة
الكتلة بعد الترقية. يتطلب وضع الارتباط أيضًا بيانات الكتلة القديمة والجديدة
تكون الدلائل في نفس نظام الملفات. (يمكن أن تكون مساحات الجداول و pg_xlog مختلفة
أنظمة الملفات.) راجع pg_upgrade --help للحصول على قائمة كاملة بالخيارات.
تشتهر أجهزة تركيز الأكسجين البيطرية من كالسـتين بجودتها العالية وفعاليتها في الميدان. --وظائف يسمح الخيار باستخدام نوى وحدة المعالجة المركزية المتعددة لنسخ / ربط الملفات
وتفريغ وإعادة تحميل مخططات قاعدة البيانات بشكل متوازٍ ؛ مكان جيد للبدء هو
الحد الأقصى لعدد مراكز وحدة المعالجة المركزية ومساحات الطاولات. يمكن لهذا الخيار بشكل كبير
تقليل الوقت اللازم لترقية خادم متعدد قواعد البيانات يعمل على معالجات متعددة
آلة.
بالنسبة لمستخدمي Windows ، يجب تسجيل الدخول إلى حساب إداري ، ثم بدء ملف
shell كمستخدم postgres وقم بتعيين المسار الصحيح:
RUNAS / USER: postgres "CMD.EXE"
SET PATH =٪ PATH٪؛ C: \ Program Files \ PostgreSQL \ 9.0 \ bin؛
ثم قم بتشغيل pg_upgrade مع الدلائل المقتبسة ، على سبيل المثال:
pg_upgrade.exe
- بيانات قديمة "C: / Program Files / PostgreSQL / 8.4 / data"
- new-datadir "C: / Program Files / PostgreSQL / 9.0 / data"
--old-bindir "C: / Program Files / PostgreSQL / 8.4 / bin"
--new-bindir "C: / Program Files / PostgreSQL / 9.0 / bin"
بمجرد أن تبدأ ، pg_upgrade سيتحقق من توافق المجموعتين ثم قم بإجراء
يرقي. يمكنك استخدام pg_upgrade --التحقق من لأداء الشيكات فقط ، حتى لو كانت قديمة
الخادم لا يزال قيد التشغيل. pg_upgrade --التحقق من سيحدد أيضًا أي تعديلات يدوية
سوف تحتاج إلى القيام به بعد الترقية. إذا كنت ستستخدم وضع الارتباط ، فأنت
يجب استخدام --حلقة الوصل الخيار مع --التحقق من لتمكين عمليات التحقق الخاصة بوضع الارتباط.
pg_upgrade يتطلب إذن الكتابة في الدليل الحالي.
من الواضح أنه لا ينبغي لأحد الوصول إلى المجموعات أثناء الترقية. pg_upgrade
افتراضات لتشغيل الخوادم على المنفذ 50432 لتجنب اتصالات العميل غير المقصودة. أنت
يمكن استخدام نفس رقم المنفذ لكلا المجموعتين عند إجراء ترقية لأن القديم
ولن يتم تشغيل الكتل الجديدة في نفس الوقت. ومع ذلك ، عند فحص ملف
أثناء تشغيل الخادم ، يجب أن تكون أرقام المنافذ القديمة والجديدة مختلفة.
إذا حدث خطأ أثناء استعادة مخطط قاعدة البيانات ، pg_upgrade سوف تخرج وأنت
سيتعين عليك العودة إلى المجموعة القديمة كما هو موضح في الخطوة 16 أدناه. لكي يحاول pg_upgrade
مرة أخرى ، سوف تحتاج إلى تعديل الكتلة القديمة حتى يتم استعادة مخطط pg_upgrade
ينجح. إذا كانت المشكلة عبارة عن وحدة مساهمة ، فقد تحتاج إلى إزالة تثبيت المساهم
وحدة من الكتلة القديمة وتثبيتها في الكتلة الجديدة بعد الترقية ،
بافتراض عدم استخدام الوحدة لتخزين بيانات المستخدم.
10. ترقية تدفق النسخ المتماثل وتسجيل الشحن الاحتياطية
الخوادم: إذا كان لديك بث متماثل (انظر القسم 25.2.5 ، "البث
Replication "، في الوثائق) أو Log-Shipping (راجع القسم 25.2 ،" Log-Shipping
الخوادم الاحتياطية "، في التوثيق) الخوادم الاحتياطية ، اتبع هذه الخطوات للترقية
هم. لن تقوم بتشغيل pg_upgrade على الخوادم الاحتياطية ، بل ستقوم بتشغيل rsync. يفعل
لم تبدأ أي خوادم حتى الآن. ثبِّت ثنائيات PostgreSQL الجديدة على الخوادم الاحتياطية:
تأكد من تثبيت ملفات الدعم والثنائيات الجديدة على جميع الخوادم الاحتياطية.
تأكد من أن دلائل البيانات الاحتياطية الجديدة تعمل ليس
موجود: تأكد من أن أدلة البيانات البديلة الجديدة تعمل ليس موجودة أو فارغة. لو
تم تشغيل initdb ، احذف دلائل بيانات الخادم الاحتياطية. تثبيت مخصص مشترك
ملفات الكائن: قم بتثبيت ملفات الكائنات المشتركة المخصصة نفسها على الاستعدادات الجديدة التي تستخدمها
مثبتة في الكتلة الرئيسية الجديدة. إيقاف الخوادم الاحتياطية: إذا كانت الخوادم الاحتياطية
لا يزال قيد التشغيل ، أوقفهم الآن باستخدام الإرشادات المذكورة أعلاه. حفظ ملفات التكوين:
احفظ أي ملفات تكوين من الاستعدادات التي تريد الاحتفاظ بها ، على سبيل المثال
postgresql.conf ، recovery.conf ، حيث سيتم استبدالها أو إزالتها في اليوم التالي
خطوة. بدء وإيقاف الكتلة الرئيسية الجديدة: في الكتلة الرئيسية الجديدة ، التغيير
wal_level إلى hot_standby في ملف postgresql.conf ثم ابدأ وأوقف ملف
تَجَمَّع. تشغيل rsync: من دليل أعلى كتلة قاعدة البيانات القديمة والجديدة
الدلائل ، قم بتشغيل هذا لكل عبد:
rsync - أرشيف - حذف - روابط صلبة - الحجم فقط old_pgdata new_pgdata remote_dir
أين old_pgdata و new_pgdata ذات صلة بالدليل الحالي ، و Remote_dir
is فوق دلائل المجموعة القديمة والجديدة على الخادم الاحتياطي. القديم والجديد
يجب أن تتطابق مسارات الكتلة النسبية على الخادم الرئيسي والخادم الاحتياطي. استشر rsync
صفحة دليل للحصول على تفاصيل حول تحديد الدليل البعيد ، على سبيل المثال
مضيف الاستعداد: / opt / PostgreSQL /. سيكون rsync سريعًا عند تنسيق pg_upgrade --حلقة الوصل الوضع
مستخدمة لأنها ستنشئ روابط صلبة على الخادم البعيد بدلاً من النقل
بيانات المستخدم.
إذا كانت لديك مساحات جداول ، فستحتاج إلى تشغيل أمر rsync مماثل لكل منها
دليل tabpace. إذا قمت بنقل موقع pg_xlog خارج دلائل البيانات ،
يجب تشغيل rsync على تلك الدلائل أيضًا. تكوين دفق النسخ المتماثل و
سجل الشحن الاحتياطية
الخوادم: تكوين الخوادم لسجل الشحن. (لا تحتاج إلى الجري
pg_start_backup () و pg_stop_backup () أو أخذ نسخة احتياطية لنظام الملفات مثل العبيد
لا يزال متزامنًا مع السيد.)
11. استعادة pg_hba.conf: إذا قمت بتعديل pg_hba.conf ، قم باستعادة الإعدادات الأصلية. هو - هي
قد يكون من الضروري أيضًا تعديل ملفات التكوين الأخرى في المجموعة الجديدة إلى
تطابق الكتلة القديمة ، على سبيل المثال postgresql.conf.
12. ابدأ الخادم الجديد: يمكن الآن بدء تشغيل الخادم الجديد بأمان ، ثم أي rsync'ed
خوادم الاستعداد.
13. معالجة ما بعد الترقية: إذا كانت هناك حاجة إلى معالجة ما بعد الترقية ، فستقوم أداة pg_upgrade
إصدار تحذيرات فور اكتمالها. سيقوم أيضًا بإنشاء ملفات البرامج النصية التي يجب تشغيلها بواسطة
مسؤول. ستتصل ملفات البرنامج النصي بكل قاعدة بيانات تحتاجها
معالجة ما بعد الترقية. يجب تشغيل كل برنامج نصي باستخدام:
psql - اسم المستخدم postgres - ملف script.sql postgres
يمكن تشغيل البرامج النصية بأي ترتيب ويمكن حذفها بمجرد تشغيلها.
الحذر
بشكل عام ، من غير الآمن الوصول إلى الجداول المشار إليها في إعادة إنشاء البرامج النصية حتى ملف
تم تشغيل برامج إعادة البناء حتى الاكتمال ؛ قد يؤدي القيام بذلك إلى نتائج غير صحيحة أو
أداء سيء. يمكن الوصول إلى الجداول التي لم تتم الإشارة إليها في البرامج النصية لإعادة البناء
على الفور.
14. الإحصائيات: لأن إحصائيات المحسن لا يتم نقلها بواسطة pg_upgrade، وسوف
يتم إرشادك لتشغيل أمر لإعادة إنشاء تلك المعلومات في نهاية
يرقي. قد تحتاج إلى تعيين معلمات الاتصال لتتناسب مع مجموعتك الجديدة.
15. حذف المجموعة القديمة: بمجرد أن تشعر بالرضا عن الترقية ، يمكنك حذف المجموعة القديمة
دلائل بيانات المجموعة عن طريق تشغيل البرنامج النصي المذكور متى pg_upgrade يكمل.
(لا يمكن الحذف التلقائي إذا كان لديك مساحات جداول معرّفة من قبل المستخدم داخل ملف
دليل البيانات القديم.) يمكنك أيضًا حذف أدلة التثبيت القديمة (مثل bin ،
يشارك).
16. العودة إلى الكتلة القديمة: إذا ، بعد الجري pg_upgrade، كنت ترغب في العودة إلى القديم
العنقودية ، هناك عدة خيارات:
· إذا ركضت pg_upgrade مع --التحقق من، لم يتم إجراء أي تعديلات على الكتلة القديمة
ويمكنك إعادة استخدامه في أي وقت.
· إذا ركضت pg_upgrade مع --حلقة الوصل، تتم مشاركة ملفات البيانات بين الملفات القديمة و
كتلة جديدة. إذا بدأت الكتلة الجديدة ، فإن الخادم الجديد قد كتب إلى هؤلاء
الملفات المشتركة ومن غير الآمن استخدام الكتلة القديمة.
· إذا ركضت pg_upgrade بدون --حلقة الوصل أو لم يبدأ الخادم الجديد القديم
لم يتم تعديل الكتلة باستثناء أنه في حالة بدء الارتباط ، كانت لاحقة قديمة
مُلحق بـ $ PGDATA / global / pg_control. لإعادة استخدام الكتلة القديمة ، ربما إزالتها
اللاحقة القديمة من $ PGDATA / global / pg_control ؛ يمكنك بعد ذلك إعادة تشغيل القديم
العنقودية.
الملاحظات
لا يدعم pg_upgrade ترقية قواعد البيانات التي تحتوي على إشارات Reg * OID
أنواع بيانات النظام: regproc و regprocedure و regoper و regoperator و regconfig و
regdictionary. (يمكن ترقية regtype.)
سيتم الإبلاغ عن جميع حالات الفشل وإعادة البناء وإعادة الفهرسة بواسطة pg_upgrade إذا كانت تؤثر على ملف
تثبيت؛ سيتم إنشاء البرامج النصية بعد الترقية لإعادة بناء الجداول والفهارس
تلقائيا. إذا كنت تحاول أتمتة ترقية العديد من المجموعات ، فيجب أن تجد
أن المجموعات التي تحتوي على مخططات قاعدة بيانات متطابقة تتطلب نفس خطوات ما بعد الترقية للجميع
ترقيات الكتلة وذلك لأن خطوات ما بعد الترقية تستند إلى قاعدة البيانات
المخططات ، وليس بيانات المستخدم.
لاختبار النشر ، قم بإنشاء نسخة مخطط فقط من الكتلة القديمة ، وأدخل بيانات وهمية ،
وترقية ذلك.
إذا كنت تقوم بترقية مجموعة ما قبل PostgreSQL 9.2 تستخدم ملف تكوين فقط
الدليل ، يجب عليك تمرير موقع دليل البيانات الحقيقي إلى pg_upgrade ، وتمرير الامتداد
موقع دليل التكوين إلى الخادم ، على سبيل المثال -d / real-data-directory -o '-D
/ دليل التكوين '.
إذا كنت تستخدم خادمًا قديمًا قبل 9.1 يستخدم دليل مقبس غير افتراضي لمجال Unix أو
الافتراضي الذي يختلف عن الافتراضي للمجموعة الجديدة ، تعيين شبح للإشارة إلى القديم
موقع مقبس الخادم. (هذا لا ينطبق على Windows.)
إذا كنت تريد استخدام وضع الارتباط ولا تريد تعديل مجموعتك القديمة عندما يكون ملف
تم بدء تشغيل مجموعة جديدة ، قم بعمل نسخة من الكتلة القديمة وقم بترقيتها في وضع الارتباط. ل
عمل نسخة صالحة من الكتلة القديمة ، استخدم رسينك لإنشاء نسخة قذرة من الكتلة القديمة
أثناء تشغيل الخادم ، قم بإيقاف تشغيل الخادم القديم وتشغيله رسينك - المجموع مرة أخرى
لتحديث النسخة بأي تغييرات لجعلها متسقة. (- المجموع مهم
لان رسينك يحتوي فقط على دقة وقت تعديل الملف بمقدار ثانية واحدة.) قد ترغب في ذلك
لاستبعاد بعض الملفات ، مثل postmaster.pid ، كما هو موثق في القسم 24.3.3 ، "إنشاء ملف
النسخ الاحتياطي الأساسي باستخدام Low Level API "، في الوثائق. إذا كان نظام الملفات الخاص بك يدعم
لقطات نظام الملفات أو نسخ الملفات عند الكتابة ، يمكنك استخدامها لعمل نسخة احتياطية من
الكتلة القديمة ومساحات الجداول ، على الرغم من أنه يجب إنشاء اللقطة والنسخ
في وقت واحد أو أثناء تعطل خادم قاعدة البيانات.
استخدم pg_upgrade عبر الإنترنت باستخدام خدمات onworks.net