PostgreSQL 15 Update

Upgrade auf ARM (aarch64) mit nicht-standardmäßigem Locale

Ich habe gerade einige Zeit damit verbracht, ein fehlerhaftes Upgrade auf einem einzelnen Server mit zwei Container-Setups zu beheben.

  1. Die CPU ist ARM
  2. Discourse war mit dem Locale en_UK.UTF-8 konfiguriert

Schritt für Schritt habe ich herausgefunden, dass:

  1. tianon/postgres-upgrade:13-to-15 funktioniert nicht auf ARM
  2. Die Locale-Konfiguration wird in share/${CONTAINER}/postgres_data/postgresql.conf gespeichert

Ich begann damit, den env:-Teil des Datencontainers auszukommentieren, um sicherzustellen, dass er Standard-Locales verwendet.

Um aus dem Upgrade-Chaos herauszukommen, habe ich einen gefährlichen Schritt unternommen und angenommen, dass die Kollationsunterschiede zwischen en_GB und en_US vernachlässigbar sind. Ich habe den gesamten Cluster rücksichtslos auf en_US aktualisiert:

UPDATE pg_database SET datctype='en_US.UTF-8', datcollate='en_US.UTF-8';

Ich bin mir nicht sicher, ob dieser Schritt erforderlich ist, \u003cabbr title=“Your Mileage May Vary”\u003eYMMV\u003c/abbr\u003e. Ich überlasse ihn hier für sachkundigere Personen zur Kommentierung und empfehle ihn auf keinen Fall für verschiedene Sprachen!

Dann habe ich das Locale in postgresql.conf ersetzt:

sed -i -e 's/en_GB/en_US/g' shared/data/postgres_data/postgresql.conf
sudo -H -u discourse ./launcher rebuild data
...
UPGRADE OF POSTGRES COMPLETE

:tada:

Glauben Sie nicht, dass es einfach war: Ich erwähne nicht den langen Weg der Erkundung von Optionen, insbesondere da die Admin-Oberfläche nicht verfügbar war, als ich eingriff, und das letzte Backup 6 Tage alt war. Ich musste herumfummeln, bevor ich zu einer ordnungsgemäßen – oder zumindest funktionierenden – Lösung gelangen konnte.

Ich hoffe, das spart einigen Leuten Zeit.

5 „Gefällt mir“