غير قادر على الترقية إلى PostgreSQL 15/

مرحباً، لقد قرأت هذا المنشور: PostgreSQL 15 update - وحاولت الترقية إلى الإصدار 15، ولكن عند تشغيل أمر إعادة البناء، واجهت أخطاء لم أكن على دراية بها، ولم يحل أي من بحثي المشكلة. سأكون ممتناً لأي مساعدة يمكنني الحصول عليها هنا.

يشكو من أن كل من Locale و postgres تم تهيئتهما من الإصدار 13، وهو غير متوافق مع 15.

WARNING: Docker version 20.10.7 deprecated, recommend upgrade to 24.0.7 or newer.
x86_64 arch detected.
WARNING: containers/app.yml file is world-readable. You can secure this file by running: chmod o-rwx containers/app.yml
Ensuring launcher is up to date
Fetching origin
Launcher is up-to-date
Stopping old container
+ /usr/bin/docker stop -t 600 app
app
2.0.20250129-0720: Pulling from discourse/base
Digest: sha256:01b8516e5504c0e9bc3707773015ff4407be03a89154194ff3b5b8699291bc26
Status: Image is up to date for discourse/base:2.0.20250129-0720
docker.io/discourse/base:2.0.20250129-0720
/usr/local/lib/ruby/gems/3.3.0/gems/pups-1.2.1/lib/pups.rb
/usr/local/bin/pups --stdin
I, [2025-02-25T12:02:47.588312 #1]  INFO -- : Reading from stdin
I, [2025-02-25T12:02:47.603317 #1]  INFO -- : File > /etc/service/postgres/run  chmod: +x  chown:
I, [2025-02-25T12:02:47.608602 #1]  INFO -- : File > /etc/service/postgres/log/run  chmod: +x  chown:
I, [2025-02-25T12:02:47.614271 #1]  INFO -- : File > /etc/runit/3.d/99-postgres  chmod: +x  chown:
I, [2025-02-25T12:02:47.619607 #1]  INFO -- : File > /root/install_postgres  chmod: +x  chown:
I, [2025-02-25T12:02:47.623993 #1]  INFO -- : File > /root/upgrade_postgres  chmod: +x  chown:
I, [2025-02-25T12:02:47.624696 #1]  INFO -- : Replacing data_directory = '/var/lib/postgresql/15/main' with data_directory = '/shared/postgres_data' in /etc/postgresql/15/main/postgresql.conf
I, [2025-02-25T12:02:47.628520 #1]  INFO -- : Replacing (?-mix:#?listen_addresses *=.*) with listen_addresses = '*' in /etc/postgresql/15/main/postgresql.conf
I, [2025-02-25T12:02:47.629701 #1]  INFO -- : Replacing (?-mix:#?synchronous_commit *=.*) with synchronous_commit = $db_synchronous_commit in /etc/postgresql/15/main/postgresql.conf
I, [2025-02-25T12:02:47.635680 #1]  INFO -- : Replacing (?-mix:#?shared_buffers *=.*) with shared_buffers = $db_shared_buffers in /etc/postgresql/15/main/postgresql.conf
I, [2025-02-25T12:02:47.636635 #1]  INFO -- : Replacing (?-mix:#?work_mem *=.*) with work_mem = $db_work_mem in /etc/postgresql/15/main/postgresql.conf
I, [2025-02-25T12:02:47.637658 #1]  INFO -- : Replacing (?-mix:#?default_text_search_config *=.*) with default_text_search_config = '$db_default_text_search_config' in /etc/postgresql/15/main/postgresql.conf
I, [2025-02-25T12:02:47.638584 #1]  INFO -- : Replacing (?-mix:#?checkpoint_segments *=.*) with checkpoint_segments = $db_checkpoint_segments in /etc/postgresql/15/main/postgresql.conf
I, [2025-02-25T12:02:47.639215 #1]  INFO -- : Replacing (?-mix:#?logging_collector *=.*) with logging_collector = $db_logging_collector in /etc/postgresql/15/main/postgresql.conf
I, [2025-02-25T12:02:47.639833 #1]  INFO -- : Replacing (?-mix:#?log_min_duration_statement *=.*) with log_min_duration_statement = $db_log_min_duration_statement in /etc/postgresql/15/main/postgresql.conf
I, [2025-02-25T12:02:47.640892 #1]  INFO -- : Replacing (?-mix:^#local +replication +postgres +peer$) with local replication postgres  peer in /etc/postgresql/15/main/pg_hba.conf
I, [2025-02-25T12:02:47.641570 #1]  INFO -- : Replacing (?-mix:^host.*all.*all.*127.*$) with host all all 0.0.0.0/0 md5 in /etc/postgresql/15/main/pg_hba.conf
I, [2025-02-25T12:02:47.642114 #1]  INFO -- : Replacing (?-mix:^host.*all.*all.*::1\/128.*$) with host all all ::/0 md5 in /etc/postgresql/15/main/pg_hba.conf
I, [2025-02-25T12:02:47.642818 #1]  INFO -- : > if [ -f /root/install_postgres ]; then
  /root/install_postgres && rm -f /root/install_postgres
elif [ -e /shared/postgres_run/.s.PGSQL.5432 ]; then
  socat /dev/null UNIX-CONNECT:/shared/postgres_run/.s.PGSQL.5432 || exit 0 && echo postgres already running stop container ; exit 1
fi

فشل في تعيين اللغة!
[error] character map file `UTF-8' not found: No such file or directory
فشل في تعيين اللغة!
[error] default character map file `ANSI_X3.4-1968' not found: No such file or directory
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
        LANGUAGE = "en_US.UTF-8",
        LC_ALL = "en_US.UTF-8",
        LANG = "en_US.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
/bin/bash: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8)
popen failure: Cannot allocate memory
initdb: error: program "postgres" is needed by initdb but was not found in the same directory as "/usr/lib/postgresql/15/bin/initdb"
I, [2025-02-25T12:02:49.979779 #1]  INFO -- : Generating locales (this might take a while)...
  en_US.UTF-8... done
Generation complete.
Upgrading PostgreSQL from version 13 to 15

I, [2025-02-25T12:02:49.980481 #1]  INFO -- : > HOME=/var/lib/postgresql USER=postgres exec chpst -u postgres:postgres:ssl-cert -U postgres:postgres:ssl-cert /usr/lib/postgresql/15/bin/postmaster -D /etc/postgresql/15/main
I, [2025-02-25T12:02:49.983148 #1]  INFO -- : Terminating async processes
2025-02-25 12:02:50.007 UTC [51] FATAL:  database files are incompatible with server
2025-02-25 12:02:50.007 UTC [51] DETAIL:  The data directory was initialized by PostgreSQL version 13, which is not compatible with this version 15.10 (Debian 15.10-1.pgdg120+1).

شكراً جزيلاً مقدماً!

هذه ربما تكون الأخطر - تحتاج إلى المزيد من ذاكرة الوصول العشوائي (RAM) أو تحتاج إلى إضافة مساحة تبديل (swap).

يرجى نشر مخرجات هذه التشخيصات السريعة:

شكراً لوقتك. لقد فاتني تمامًا أمر الذاكرة، إليك النتائج التي طلبتها:

root@glorious-discourse-forum:~# cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=18.04
DISTRIB_CODENAME=bionic
DISTRIB_DESCRIPTION="Ubuntu 18.04.5 LTS"
root@glorious-discourse-forum:~# uptime
 13:27:58 up 1341 days, 22:37,  2 users,  load average: 0.07, 0.03, 0.00
root@glorious-discourse-forum:~# df -h /
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1        49G   41G  7.7G  85% /
root@glorious-discourse-forum:~# free
              total        used        free      shared  buff/cache   available
Mem:        2040976      416492      436628       20940     1187856     1433788
Swap:       2097148       85248     2011900
root@glorious-discourse-forum:~# swapon
NAME      TYPE SIZE  USED PRIO
/swapfile file   2G 83.3M   -2
root@glorious-discourse-forum:~# vmstat 5 5
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0  85248 436692 444416 743440    8    8   268    88    0    0  3  1 96  0  0
 0  0  85248 436684 444416 743440    0    0     0     0   50   87  0  0 100  0  0
 0  0  85248 436716 444416 743440    0    0     0     8   48   78  0  0 100  0  0
 0  0  85248 436716 444416 743440    0    0     0     6   39   63  0  0 100  0  0
 0  0  85248 436716 444416 743440    0    0     0     0   54   91  0  0 100  0  0
root@glorious-discourse-forum:~# dmesg|egrep -i "memory|oom|kill"
root@glorious-discourse-forum:~# ps auxrc
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root      5781  0.0  0.1  40100  3332 pts/6    R+   13:28   0:00 ps

شكرًا. أعتقد أنه يمكنك محاولة إضافة 2 جيجابايت أو 4 جيجابايت من مساحة التبديل. لكن الرسالة المتعلقة بـ Docker القديم، وتشغيل 18.04LTS، تعني أنك ستكون في وضع أفضل بكثير إذا انتقلت إلى مثيل جديد مع تثبيت نظام تشغيل جديد ونظيف: 24.04 مفضل. أقوم بتشغيل كل من 24.04 و 22.04 حاليًا.

قد يكون الانتقال إلى مثيل جديد ونظيف أقل جهدًا بشكل عام من محاولة الترقية في المكان. قد يكون حتى أقل تعطيلًا. من المحتمل جدًا أن تواجه بعض وقت التعطل بغض النظر عما تفعله.

الخطوة الأولى هي أخذ نسخة احتياطية (مع التنزيلات) وتنزيلها للاحتفاظ بها بأمان. خذ أيضًا نسخة من ملف app.yml الخاص بك.

لقد قمت بالترحيل بالأمس، لأسباب مماثلة. أيضًا، يمكنني الحصول على جهاز أفضل بنفس التكلفة عن طريق التبديل إلى عرض أحدث من مزود الاستضافة.

لقد اتبعت وصفة الترحيل والنصائح هنا

أيضًا للحصول على أفضل النتائج اقرأ
MKJ\u0026rsquo;s Opinionated Discourse Deployment Configuration

أنت أيضًا تعاني من نقص في مساحة القرص، خاصة إذا أضفت مساحة تبديل. عادة ما أقوم بتشغيل
du -kx / | sort -n | tail -55
أو ما شابه ذلك لمعرفة ما إذا كان هناك أي شيء كبير لا ينبغي أن يكون هناك.

إعجاب واحد (1)

نهج آخر للهجرة، بدلاً من النسخ الاحتياطي والاستعادة، هو استخدام rsync. لم أقم بذلك، ولكن إليك وصفة:

القضية الأخرى هي أن إصدار Docker ونظام التشغيل لديك بحاجة إلى ترقية.

يتطلب إصدار Docker 24.0.7 أو أحدث إصدار Ubuntu LTS أعلى من 18. الخدمة طويلة الأجل على هذا LTS خارج الدعم.

لقد رأيت عددًا قليلاً من المواقع يتم ترقيتها باستخدام 18.04، لكن معظمها لم يفعل ذلك.

لقد رأيت أشخاصًا يديرون عملية dist-upgrade، لكن نجاحها غير مؤكد، وهل تريد حقًا بقايا نظام التشغيل القديم الذي يبلغ من العمر 6 سنوات قد تسبب مشاكل للسنوات الخمس القادمة التي يدعم فيها 24.04؟ أيضًا، ترقية 18.04 توصلك فقط إلى 20.04، وهو جيد لمدة 60 يومًا تقريبًا، لذلك ستحتاج إلى تشغيل 3 ترقيات لتصل إلى أحدث نظام تشغيل.

إذًا واجهت نفس هذا الخطأ بالضبط إلا أنني شغلت ./launcher rebuild، لم أكن أتابع المنتديات والتحذيرات وقمت بتشغيل التحديث بشكل أعمى نوعًا ما. كيف يمكنني إيقاف/إرجاع هذا التشغيل؟ هل يكفي الضغط على Ctrl+C للخروج من التشغيل؟

ماذا حدث؟ هل كان هناك خطأ؟ هل طلب منك إعادة البناء مرة أخرى؟

هل قمت بترقية دوكر؟

هل جربت

 ./launcher start app

هل نظرت إلى تحديث PostgreSQL 15؟

توقف عن فعل أي شيء بعد DETAIL: The data directory was initialized by PostgreSQL version 13, which is not compatible with this version 15.10 (Debian 15.10-1.pgdg120+1).
قمت بإعادة تشغيل الخادم وهذا أعاد الخادم.
تشغيل المزيد من التحديثات الآن مع تعثر Docker على 20 لسبب ما وتبعية أخرى. يا لها من طريقة جيدة لقضاء ليلة الجمعة هاها

مؤسف.

أود الانتظار حتى يوم الاثنين والانتقال إلى جهاز ظاهري جديد. أعتقد أن هذا الجهاز الظاهري تجاوز نهاية عمره الافتراضي.

تمكنت من تحديث نظام التشغيل المضيف، وإصدار Docker، ثم نجح تحديث قاعدة البيانات، وأعطيته أيضًا المزيد من ذاكرة الوصول العشوائي (RAM) ههه، يفترض أن يكون جيدًا لمدة 5 سنوات أخرى، أليس كذلك؟ هاها

[اقتباس=“FireAllianceNX, المشاركة:12, الموضوع:354397”]
يفترض أن يكون جيدًا لمدة 5 سنوات أخرى، أليس كذلك؟
[/اقتباس]

إذا قمت بترقيات نظام التشغيل (خاصةً docker)، فمن المحتمل أن يكون الأمر كذلك!

إعجابَين (2)