Hallo zusammen,
ich vermisse pg_upgrade für ein Upgrade von Postgres 16 auf 17.
Gibt es das nicht für REHL 9?
Auch kann ich die schönen Cluster-Befehle, die ich von Debian gewohnt bin, nicht finden?
Kann mir jemand einen Tipp geben?
Kommandos wie pg_createcluster und pg_upgradecluster sind nicht Teil von PostgreSQL, sondern Zusatzsoftware vom Debian-Paketierer.
Die sind dort auch bitter nötig, weil der Paketierer die Entscheidung getroffen hat, die Konfigurationsdateien nicht ins Datendirectory, sondern in /etc zu legen. Das hat Vorteile, aber auch Nachteile, und zu den Nachteilen gehört, daß das Anlegen eines Clusters nicht so einfach ist.
Der Paketierer der RPM-Pakete hat das nicht so gemacht, und dort kommt man mit initdb und pg_upgrade sehr gut zurecht.
Okay, Danke für die Info.
Bisher finde ich den Debian-Weg besser, er sieht für mich aufgeräumter aus, besonders bei mehr als einem Cluster pro Postgres-Version, aber vielleicht gewöhne ich mich ja noch daran.
Wie macht ihr das mit dem Upgrade?
Ich habe hier einen Postgres Primary und zwei Mirrors.
Die Originaldatenbank soll unangetastet bleiben.
Ich habe jetzt das Upgrade auf dem Haupttestserver (Main) durchgeführt: /usr/pgsql-17/bin/pg_upgrade --old-datadir=/var/lib/pgsql/16/data --new-datadir=/var/lib/pgsql/17/data --old-bindir=/usr/pgsql-16/bin --new-bindir=/usr/pgsql-17/bin --jobs=4 --copy-file-range
Wenn ich es richtig verstanden habe, werden mit der Option --copy-file-range die Dateien kopiert, aber solange sie nicht geändert werden, werden die gleichen Blöcke auf der Festplatte verwendet, solange sie sich auf der gleichen Partition befinden. Als Dateisystem wird xfs verwendet.
Jedenfalls ging es ziemlich schnell.
Bisher habe ich die Mirrors immer mit pg_basebackup vom Primary neu geklont (Dauer bisher > 6 Stunden).
Es gibt sicher schnellere, aber auch ebenfalls zuverlässige Methoden.
Wie geht ihr dabei vor?
Danke!
Ich habe nirgends gefunden, welche Filesysteme copy_file_range effizent unterstützen, aber da XFS --clone unterstützt, sollte es eigentlich dasselbe machen und schnell sein. Ich denke, du hast das richtig verstanden.
Zum Upgrade des Standby gibt es keine einfache, gute Lösung. Meine Empfehlung ist, ihn neu aufzubauen. Es gibt in der Dokumentation eine Anleitung, wie es mit rsync schneller geht. Aber das ist ziemlich kompliziert und nicht perfekt (es kopiert vielleicht mehr als gut wäre, etwa UNLOGGED Tabellen). Ich habe das einmal gemacht, würde es aber nicht unbedingt empfehlen.
Vielen Dank für deine Antwort.
Das mit rsync habe ich gelesen. Ich habe mich aber bisher nicht getraut, weil ich mir nicht sicher war, ob ich es richtig mache bzw. ob es gut Funktioniert.
Da das Upgrade bisher immer mehrere Tage gedauert hat, konnte ich es bisher nur zwischen Weihnachten und Neujahr machen, wenn bei uns niemand arbeitet.
Ein schnelles Upgrade wäre also eine tolle Sache.
Aber die Datensicherheit hat jedenfalls Vorrang!