Debian Synapse PostgreSQL

Alle weiteren Dienste, die nicht in die drei oberen Foren gehören.
Antworten
Benutzeravatar
Stefan
Beiträge: 1437
Registriert: 08.09.2002 14:31:59
Lizenz eigener Beiträge: GNU General Public License

Debian Synapse PostgreSQL

Beitrag von Stefan » 21.01.2025 13:00:26

Hallo zusammen,

ich habe auf einem Debian 12 Matriox Synapse laufen und habe beim letzten Update Probleme mit PostgreSQL

https://github.com/element-hq/synapse/issues/18086

Da ich kein Docker am laufen habe und mich mit PostgreSQL nicht wirklich auskenne wollte ich hiwer einmal Nachfragen wie ich das update mit migration am besten mache.

Ich wollte mich eigentlich an diese Anleitung halten:

Code: Alles auswählen

su - postgres                                    ## Login as PostgreSQL user
pg_lsclusters                                     ## Show all running PostgreSQL Instances
pg_dropcluster --stop 17 main         ## 17 is my newest installed Version
pg_upgradecluster -v 17 11 main     ##  Upgrade and Migrate to my newest Version
Alle Dienste wurden gestoppt und ein Backup angelegt:

Code: Alles auswählen

systemctl stop mautrix-signal
root@matrixserver:/home/stefan# systemctl stop mautrix-whatsapp
root@matrixserver:/home/stefan# systemctl stop matrix-synapse.service
root@matrixserver:/home/stefan# pg_lsclusters
Ver Cluster Port Status Owner    Data directory              Log file
11  main    5432 online postgres /var/lib/postgresql/11/main /var/log/postgresql/postgresql-11-main.log
13  main    5433 online postgres /var/lib/postgresql/13/main /var/log/postgresql/postgresql-13-main.log
15  main    5434 online postgres /var/lib/postgresql/15/main /var/log/postgresql/postgresql-15-main.log


dpkg -l postgresql

Code: Alles auswählen

Gewünscht=Unbekannt/Installieren/R=Entfernen/P=Vollständig Löschen/Halten
| Status=Nicht/Installiert/Config/U=Entpackt/halb konFiguriert/
         Halb installiert/Trigger erWartet/Trigger anhängig
|/ Fehler?=(kein)/R=Neuinstallation notwendig (Status, Fehler: GROSS=schlecht)
||/ Name           Version      Architektur  Beschreibung
+++-==============-============-============-==================================================
ii  postgresql     15+248       all          object-relational SQL database (supported version)
Ich gehe davon aus, dass die 15v die Datenbank ist und in der homeserver.yaml steht kein Port. 5434 ist der Standartport.


ss -ntl

Code: Alles auswählen

State   Recv-Q   Send-Q     Local Address:Port      Peer Address:Port  Process  
LISTEN  0        244            127.0.0.1:5434           0.0.0.0:*              
LISTEN  0        244            127.0.0.1:5433           0.0.0.0:*              
LISTEN  0        224            127.0.0.1:5432           0.0.0.0:*              
LISTEN  0        511              0.0.0.0:8448           0.0.0.0:*              
LISTEN  0        50             127.0.0.1:8008           0.0.0.0:*              
LISTEN  0        128              0.0.0.0:22             0.0.0.0:*              
LISTEN  0        511              0.0.0.0:80             0.0.0.0:*              
LISTEN  0        511              0.0.0.0:443            0.0.0.0:*              
LISTEN  0        4096           127.0.0.1:29328          0.0.0.0:*              
LISTEN  0        4096           127.0.0.1:29318          0.0.0.0:*              
LISTEN  0        1024             0.0.0.0:2812           0.0.0.0:*              
LISTEN  0        50                 [::1]:8008              [::]:*              
LISTEN  0        511                 [::]:8448              [::]:*              
LISTEN  0        244                [::1]:5434              [::]:*              
LISTEN  0        244                [::1]:5433              [::]:*              
LISTEN  0        224                [::1]:5432              [::]:*              
LISTEN  0        128                 [::]:22                [::]:*              
LISTEN  0        511                 [::]:80                [::]:*              
LISTEN  0        511                 [::]:443               [::]:*              
LISTEN  0        1024                [::]:2812              [::]:*  

root@matrixserver:/home/stefan#


Ich verstehe aktuell den ganzen Vorgang nicht. Normalerweise nimmt man einfach pg_upgrade, wenn man von einer PostgreSQL-Version auf eine neuere aktualisiert oder halt pg_dropcluster und pg_upgradecluster.

Kann mir hier einer einen Tipp geben ?
Ein Betriebssystem sie zu knechten, sie alle zu finden, Ins Dunkle zu treiben und ewig zu binden, Im Lande Microsoft wo die Schatten drohen.

Debian 7 3.2.0-4 64 - MSI nVidia GeForce 7600 GS - 8 DDR2 SDRAM 800 MHz Quad-CoreIntel Xeon : 2,67 GHz - Gigabyte GA-EP45-DS3 - 256GB SSD 840 Pro Gnome 3

schwedenmann
Beiträge: 5642
Registriert: 30.12.2004 15:31:07
Wohnort: Wegberg

Re: Debian Synapse PostgreSQL

Beitrag von schwedenmann » 21.01.2025 15:11:26

Hallo



Ich mach das immer so, ohne su postgres, nur als normaler root-account

• bei Debian/Ubuntu von 13 auf 14

#pg_lsclusters
#pg_dropcluster 14 main --stop
#pg_upgradecluster 13 main
#pg_lsclusters,( jetzt ist 14 online , 13 down)
#pg_dropcluster 13 main --stop

Hier am Beispiel von 13 auf 14
mfg
schwedenmann


P.S.

Das datadir ist doch in /var/lib/postgresql/.... ?

Benutzeravatar
schorsch_76
Beiträge: 2628
Registriert: 06.11.2007 16:00:42
Lizenz eigener Beiträge: MIT Lizenz

Re: Debian Synapse PostgreSQL

Beitrag von schorsch_76 » 22.01.2025 08:27:27

Du hast offenbar 3 PostgreSQL Versionen am laufen. 11.13.15. 11 war bei Buster, 13 bei bullseye und 15 bei bookworm der Standard.

Bei PSQL wird die alte Version nicht entfernt wenn ein Full Upgrade gemacht wird. Die neue Version bekommt als Port den nächsten der Verfügbar ist. 5432 = std = 11 bei dir. 5433 = 13. 5434 = 15.

Bei PSQL ist die Datenstruktur abhängig von der Version. Es kann änderungen geben. Es gibt ein paar Möglichkeiten für ein Upgrade. Die sicherste Version ist ein voller pg_dump und dann ein import in die neue Datenbank.

Die andere Option ist pg_upgrade. Hier gibt es die Möglichkeit eines inplace Upgrades oder einer Kopie.

Die Frage ist: Welche Version soll als Ziel laufen? Die 15 welche bei bookworm Standard ist oder 17 aus dem pgdg Repo?

Wenn du dich an deine Anleitung halten möchtest wohl 17. Hierzu musst du das Repo aus [1] aktivieren und dann postgresql-17 installieren.

Bei deinen drei Installationen sagtest du das dein Standardport 5434 ist. Das wäre PSQL 15.

Hier wäre der Upgrade Prozess dann wie folgt mit pg_dump (der sichersten Version eines Upgrades).

Erstellen des Fullbackups

Code: Alles auswählen

su - postgres
pg_dumpall -p 5434 -f fulldump.sql 
Jetzt könntest du alle alten Versionen entfernen und anschliessend deine Zielversion installieren. Falls du in der pg_hba.conf oder der postgresql.conf Änderungen vorgenommen hast sichere auch diese Dateien. Jede PSQL Version hat unter /etc/postgresql/15/main/ ihre configurationen (hier am Beispiel 15).

mit

Code: Alles auswählen

su - postgres
psql -f fulldump.sql
Wird dein Vollbackup wiederhergestellt. Alle Datenbanken, alle Nutzer und alle Gruppen werden erstellt. Auch alle Berechtigungen werden gesetzt.

Deine Änderungen aus der pg_hba.conf und postgresql.conf must du dann auch noch übernehmen.

[1] https://www.postgresql.org/download/linux/debian/

Benutzeravatar
schorsch_76
Beiträge: 2628
Registriert: 06.11.2007 16:00:42
Lizenz eigener Beiträge: MIT Lizenz

Re: Debian Synapse PostgreSQL

Beitrag von schorsch_76 » 22.01.2025 08:43:38

Bezogen auf das Ticket bei github.

In deiner Config von Synapse musst du den Port auf deine Datenbank anpassen. 5432 = Standardport von Postgresql. Falls du das nicht angepasst hast wird immer noch PSQL 11 verwendet. Das lauscht bei dir auf Port 5432

https://element-hq.github.io/synapse/la ... l#database

Benutzeravatar
schorsch_76
Beiträge: 2628
Registriert: 06.11.2007 16:00:42
Lizenz eigener Beiträge: MIT Lizenz

Re: Debian Synapse PostgreSQL

Beitrag von schorsch_76 » 22.01.2025 09:35:05

Falls dir meine Beschreibung zu wenig ist, hast du hier die offizielle Doku wie man das macht.

https://www.postgresql.org/docs/current/upgrading.html

Antworten