حلقة نجاح ترقية Postgres بسبب هجرة سابقة من Postgres 8 إلى 10

في حلقة تكرار من:

لإكمال الترقية، أعد البناء مرة أخرى باستخدام: ./launcher rebuild app

يجب أن يكون هناك شيء ما مفقود لدي. السجل الكامل أدناه. أقدر أي مساعدة.

root@discuss:/var/discourse# ./launcher rebuild app
التأكد من أن أداة التشغيل محدثة
جلب الأصل
أداة التشغيل محدثة
إيقاف الحاوية القديمة
+ /usr/bin/docker stop -t 60 app
app
cd /pups && git pull && /pups/bin/pups --stdin
محدث بالفعل.
I, [2020-05-26T20:43:00.459915 #1]  INFO -- : تحميل --stdin
I, [2020-05-26T20:43:00.466076 #1]  INFO -- : > locale-gen $LANG && update-locale
I, [2020-05-26T20:43:00.497010 #1]  INFO -- : توليد الإعدادات اللغوية (قد يستغرق ذلك بعض الوقت)...
اكتمل التوليد.

I, [2020-05-26T20:43:00.497661 #1]  INFO -- : > mkdir -p /shared/postgres_run
I, [2020-05-26T20:43:00.500629 #1]  INFO -- :
I, [2020-05-26T20:43:00.501124 #1]  INFO -- : > chown postgres:postgres /shared/postgres_run
I, [2020-05-26T20:43:00.503417 #1]  INFO -- :
I, [2020-05-26T20:43:00.503867 #1]  INFO -- : > chmod 775 /shared/postgres_run
I, [2020-05-26T20:43:00.505796 #1]  INFO -- :
I, [2020-05-26T20:43:00.506199 #1]  INFO -- : > rm -fr /var/run/postgresql
I, [2020-05-26T20:43:00.508341 #1]  INFO -- :
I, [2020-05-26T20:43:00.508752 #1]  INFO -- : > ln -s /shared/postgres_run /var/run/postgresql
I, [2020-05-26T20:43:00.510785 #1]  INFO -- :
I, [2020-05-26T20:43:00.511166 #1]  INFO -- : > socat /dev/null UNIX-CONNECT:/shared/postgres_run/.s.PGSQL.5432 || exit 0 && echo postgres already running stop container ; exit 1
2020/05/26 20:43:00 socat[26] E connect(6, AF=1 "/shared/postgres_run/.s.PGSQL.5432", 36): لا يوجد ملف أو دليل
I, [2020-05-26T20:43:00.515245 #1]  INFO -- :
I, [2020-05-26T20:43:00.515542 #1]  INFO -- : > rm -fr /shared/postgres_run/.s*
I, [2020-05-26T20:43:00.518166 #1]  INFO -- :
I, [2020-05-26T20:43:00.518509 #1]  INFO -- : > rm -fr /shared/postgres_run/*.pid
I, [2020-05-26T20:43:00.520876 #1]  INFO -- :
I, [2020-05-26T20:43:00.521215 #1]  INFO -- : > mkdir -p /shared/postgres_run/12-main.pg_stat_tmp
I, [2020-05-26T20:43:00.523438 #1]  INFO -- :
I, [2020-05-26T20:43:00.523931 #1]  INFO -- : > chown postgres:postgres /shared/postgres_run/12-main.pg_stat_tmp
I, [2020-05-26T20:43:00.526034 #1]  INFO -- :
I, [2020-05-26T20:43:00.530519 #1]  INFO -- : ملف > /etc/service/postgres/run  chmod: +x  chown:
I, [2020-05-26T20:43:00.534602 #1]  INFO -- : ملف > /etc/service/postgres/log/run  chmod: +x  chown:
I, [2020-05-26T20:43:00.538528 #1]  INFO -- : ملف > /etc/runit/3.d/99-postgres  chmod: +x  chown:
I, [2020-05-26T20:43:00.542481 #1]  INFO -- : ملف > /root/upgrade_postgres  chmod: +x  chown:
I, [2020-05-26T20:43:00.542896 #1]  INFO -- : > chown -R root /var/lib/postgresql/12/main
I, [2020-05-26T20:43:00.638174 #1]  INFO -- :
I, [2020-05-26T20:43:00.638520 #1]  INFO -- : > [ ! -e /shared/postgres_data ] && install -d -m 0755 -o postgres -g postgres /shared/postgres_data && sudo -E -u postgres /usr/lib/postgresql/12/bin/initdb -D /shared/postgres_data || exit 0
I, [2020-05-26T20:43:00.640938 #1]  INFO -- :
I, [2020-05-26T20:43:00.641292 #1]  INFO -- : > chown -R postgres:postgres /shared/postgres_data
I, [2020-05-26T20:43:00.672801 #1]  INFO -- :
I, [2020-05-26T20:43:00.673456 #1]  INFO -- : > chown -R postgres:postgres /var/run/postgresql
I, [2020-05-26T20:43:00.676098 #1]  INFO -- :
I, [2020-05-26T20:43:00.676587 #1]  INFO -- : > /root/upgrade_postgres
initdb: تحذير: تم تفعيل مصادقة «trust» للاتصالات المحلية
يمكنك تغيير ذلك عن طريق تعديل pg_hba.conf أو استخدام الخيار -A، أو
--auth-local و--auth-host، في المرة القادمة التي تشغل فيها initdb.
debconf: تأخير تكوين الحزمة، لأن apt-utils غير مثبت
mv: لا يمكن نقل '/shared/postgres_data' إلى '/shared/postgres_data_old/postgres_data': الدليل ليس فارغًا
mv: لا يمكن نقل '/shared/postgres_data_new' إلى '/shared/postgres_data/postgres_data_new': الدليل ليس فارغًا
I, [2020-05-26T20:43:15.530374 #1]  INFO -- : ترقية PostgreSQL من الإصدار 10 إلى 12
الملفات التابعة لنظام قاعدة البيانات هذا ستكون مملوكة للمستخدم «postgres».
يجب أن يكون هذا المستخدم أيضًا مالكًا لعملية الخادم.

سيتم تهيئة عنقود قاعدة البيانات بالإعدادات اللغوية «en_US.UTF-8».
تم تعيين ترميز قاعدة البيانات الافتراضي وفقًا لذلك إلى «UTF8».
سيتم تعيين إعدادات البحث النصي الافتراضية إلى «الإنجليزية».

تم تعطيل تجزئات صفحات البيانات.

إصلاح الأذونات على الدليل الموجود /shared/postgres_data_new ... تم
إنشاء المجلدات الفرعية ... تم
اختيار تنفيذ الذاكرة المشتركة الديناميكية ... posix
اختيار max_connections الافتراضي ... 100
اختيار shared_buffers الافتراضي ... 128MB
اختيار المنطقة الزمنية الافتراضية ... Etc/UTC
إنشاء ملفات التكوين ... تم
تشغيل سكريبت التمهيد ... تم
تنفيذ التهيئة بعد التمهيد ... تم
مزامنة البيانات مع القرص ... تم


نجاح. يمكنك الآن بدء تشغيل خادم قاعدة البيانات باستخدام:

/usr/lib/postgresql/12/bin/pg_ctl -D /shared/postgres_data_new -l logfile start

Hit:1 http://deb.debian.org/debian buster InRelease
Get:2 http://security.debian.org/debian-security buster/updates InRelease [65.4 kB]
Get:3 http://deb.debian.org/debian buster-updates InRelease [49.3 kB]
Get:4 http://apt.postgresql.org/pub/repos/apt buster-pgdg InRelease [84.6 kB]
Get:5 http://security.debian.org/debian-security buster/updates/main amd64 Packages [201 kB]
Hit:6 https://deb.nodesource.com/node_10.x buster InRelease
Get:7 http://apt.postgresql.org/pub/repos/apt buster-pgdg/main amd64 Packages [171 kB]
تم جلب 571 kB في 1 ثانية (810 kB/s)
قراءة قوائم الحزم...
قراءة قوائم الحزم...
بناء شجرة التبعيات...
قراءة معلومات الحالة...
سيتم تثبيت الحزم الإضافية التالية:
  postgresql-client-10
الحزم المقترحة:
  postgresql-doc-10
سيتم تثبيت الحزم الجديدة التالية:
  postgresql-10 postgresql-client-10
0 تم ترقية، 2 تم تثبيتها حديثًا، 0 سيتم إزالتها و 9 غير مرفوعة.
يلزم جلب 6,390 kB من الأرشيفات.
بعد هذه العملية، سيتم استخدام 30.6 MB من مساحة القرص الإضافية.
Get:1 http://apt.postgresql.org/pub/repos/apt buster-pgdg/main amd64 postgresql-client-10 amd64 10.13-1.pgdg100+1 [1,428 kB]
Get:2 http://apt.postgresql.org/pub/repos/apt buster-pgdg/main amd64 postgresql-10 amd64 10.13-1.pgdg100+1 [4,961 kB]
تم جلب 6,390 kB في 2 ثانية (4,017 kB/s)
تحديد حزمة postgresql-client-10 التي لم يتم تحديدها سابقًا.
(قراءة قاعدة البيانات ... 43929 ملفًا ومجلدًا مثبتًا حاليًا.)
التحضير لفك ضغط .../postgresql-client-10_10.13-1.pgdg100+1_amd64.deb ...
فك ضغط postgresql-client-10 (10.13-1.pgdg100+1) ...
تحديد حزمة postgresql-10 التي لم يتم تحديدها سابقًا.
التحضير لفك ضغط .../postgresql-10_10.13-1.pgdg100+1_amd64.deb ...
فك ضغط postgresql-10 (10.13-1.pgdg100+1) ...
إعداد postgresql-client-10 (10.13-1.pgdg100+1) ...
update-alternatives: تحذير: فرض إعادة تثبيت البديل /usr/share/postgresql/12/man/man1/psql.1.gz لأن مجموعة الروابط psql.1.gz معطلة
إعداد postgresql-10 (10.13-1.pgdg100+1) ...
إنشاء عنقود PostgreSQL جديد 10/main ...
/usr/lib/postgresql/10/bin/initdb -D /var/lib/postgresql/10/main --auth-local peer --auth-host md5
الملفات التابعة لنظام قاعدة البيانات هذا ستكون مملوكة للمستخدم «postgres».
يجب أن يكون هذا المستخدم أيضًا مالكًا لعملية الخادم.

سيتم تهيئة عنقود قاعدة البيانات بالإعدادات اللغوية «C.UTF-8».
تم تعيين ترميز قاعدة البيانات الافتراضي وفقًا لذلك إلى «UTF8».
سيتم تعيين إعدادات البحث النصي الافتراضية إلى «الإنجليزية».

تم تعطيل تجزئات صفحات البيانات.

إصلاح الأذونات على الدليل الموجود /var/lib/postgresql/10/main ... تم
إنشاء المجلدات الفرعية ... تم
اختيار max_connections الافتراضي ... 100
اختيار shared_buffers الافتراضي ... 128MB
اختيار المنطقة الزمنية الافتراضية ... Etc/UTC
اختيار تنفيذ الذاكرة المشتركة الديناميكية ... posix
إنشاء ملفات التكوين ... تم
تشغيل سكريبت التمهيد ... تم
تنفيذ التهيئة بعد التمهيد ... تم
مزامنة البيانات مع القرص ... تم

نجاح. يمكنك الآن بدء تشغيل خادم قاعدة البيانات باستخدام:

pg_ctlcluster 10 main start

تحذير: دليل stats_temp_directory المحدد /var/run/postgresql/10-main.pg_stat_tmp
غير قابل للكتابة لمالك العنقود. لن تتم إضافة هذا الإعداد في
postgresql.conf.
Ver Cluster Port Status Owner    Data directory              Log file
10  main    5433 down   postgres /var/lib/postgresql/10/main /var/log/postgresql/postgresql-10-main.log
update-alternatives: تحذير: فرض إعادة تثبيت البديل /usr/share/postgresql/12/man/man1/postmaster.1.gz لأن مجموعة الروابط postmaster.1.gz معطلة
invoke-rc.d: تعذر تحديد مستوى التشغيل الحالي
invoke-rc.d: رفض policy-rc.d تنفيذ البدء.
معالجة المحفزات لـ postgresql-common (213.pgdg100+1) ...
بناء قواميس PostgreSQL من حزم myspell/hunspell المثبتة...
إزالة ملفات القواميس القديمة:
إيقاف خادم قاعدة بيانات PostgreSQL 10: main.
إيقاف خادم قاعدة بيانات PostgreSQL 12: main.
إجراء فحوصات الاتساق
-----------------------------
فحص إصدارات العناقيد                                   تم
فحص ما إذا كان مستخدم قاعدة البيانات هو مستخدم التثبيت                  تم
فحص إعدادات اتصال قاعدة البيانات                       تم
فحص المعاملات المعدة مسبقًا                          تم
فحص أنواع البيانات reg* في جداول المستخدمين                 تم
فحص contrib/isn مع عدم تطابق تمرير bigint       تم
فحص الجداول WITH OIDS                               تم
فحص أعمدة المستخدم «sql_identifier» غير الصالحة          تم
إنشاء نسخة احتياطية من الكائنات العالمية                             تم
إنشاء نسخة احتياطية من مخططات قاعدة البيانات
  discourse
  postgres
  template1
                                                        تم
فحص وجود المكتبات المطلوبة                 تم
فحص ما إذا كان مستخدم قاعدة البيانات هو مستخدم التثبيت                  تم
فحص المعاملات المعدة مسبقًا                          تم

إذا فشل pg_upgrade بعد هذه النقطة، يجب عليك إعادة تهيئة
العنقود الجديد قبل المتابعة.

تنفيذ الترقية
------------------
تحليل جميع الصفوف في العنقود الجديد                       تم
تجميد جميع الصفوف في العنقود الجديد                        تم
حذف الملفات من pg_xact الجديد                             تم
نسخ pg_xact القديم إلى الخادم الجديد                           تم
تعيين معرف المعاملة التالي والعصر للعنقود الجديد       تم
حذف الملفات من pg_multixact/offsets الجديد                تم
نسخ pg_multixact/offsets القديم إلى الخادم الجديد              تم
حذف الملفات من pg_multixact/members الجديد                تم
نسخ pg_multixact/members القديم إلى الخادم الجديد              تم
تعيين معرف multixact التالي والإزاحة للعنقود الجديد        تم
إعادة تعيين أرشيفات WAL                                      تم
تعيين عدادات frozenxid و minmxid في العنقود الجديد       تم
استعادة الكائنات العالمية في العنقود الجديد                 تم
استعادة مخططات قاعدة البيانات في العنقود الجديد
  template1
  discourse
  postgres
                                                        تم
نسخ ملفات علاقات المستخدم
  /shared/postgres_data/base/16400/2613
  /shared/postgres_data/base/16400/2683
  /shared/postgres_data/base/16400/16728
  /shared/postgres_data/base/16400/16728_fsm
  /shared/postgres_data/base/16400/16728_vm
  /shared/postgres_data/base/16400/16731
  /shared/postgres_data/base/16400/84163
  /shared/postgres_data/base/16400/84163_fsm
  /shared/postgres_data/base/16400/84163_vm
……
                                                        تم
تعيين معرف OID التالي للعنقود الجديد                            تم
مزامنة دليل البيانات مع القرص                                 تم
إنشاء سكريبت لتحليل العنقود الجديد                      تم
إنشاء سكريبت لحذف العنقود القديم                       تم

اكتمل الترقية
----------------
لا يتم نقل إحصائيات المحسن بواسطة pg_upgrade، لذا،
بمجرد بدء تشغيل الخادم الجديد، يُنصح بتشغيل:
./analyze_new_cluster.sh

سيؤدي تشغيل هذا السكريبت إلى حذف ملفات بيانات العنقود القديم:
./delete_old_cluster.sh
-------------------------------------------------------------------------------------
اكتملت ترقية POSTGRES

يتم تخزين قاعدة بيانات الإصدار 10 القديمة في /shared/postgres_data_old

لإكمال الترقية، أعد البناء مرة أخرى باستخدام:

./launcher rebuild app
-------------------------------------------------------------------------------------

يبدو أن هناك بعض الملفات المتبقية من قبل عامين منذ آخر ترقية:

mv: لا يمكن نقل '/shared/postgres_data' إلى '/shared/postgres_data_old/postgres_data': المجلد غير فارغ
mv: لا يمكن نقل '/shared/postgres_data_new' إلى '/shared/postgres_data/postgres_data_new': المجلد غير فارغ

هل يمكنك نقل هذه الملفات إلى مكان آخر قبل إعادة البناء؟

هذا كل شيء! شكرًا لك، @Falco.

شكرًا لك، تمت إضافة هذا إلى الأسئلة الشائعة. سأضيف أيضًا اكتشافًا لهذه الحالة في سكريبت الترقية.