Debian Synapse PostgreSQL

Alle weiteren Dienste, die nicht in die drei oberen Foren gehören.
Antworten
Benutzeravatar
Stefan
Beiträge: 1438
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: 5647
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: 2630
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: 2630
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: 2630
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

Benutzeravatar
Stefan
Beiträge: 1438
Registriert: 08.09.2002 14:31:59
Lizenz eigener Beiträge: GNU General Public License

Re: Debian Synapse PostgreSQL

Beitrag von Stefan » 24.01.2025 13:15:10

Hallo zusammen,

erstmal vielen Dank für die vielen hilfrechen Nachrichten.
Ich habe mich in der Tat mit PostgreSQL nicht wirklich beschäftigt :|
Nachdem feststand, dass die Daten liegen in 11. Dafür würde auch sprechen, dass in Synapse kein Port angegeben war, denn Port 5432 ist der Default für PostgreSQL.

Habe ich mich für den Weg entschieden:

su - postgres ## Login as PostgreSQL user
pg_lsclusters ## Show all running PostgreSQL Instances

pg_dropcluster --stop 15 main
pg_upgradecluster --method=upgrade --link 11 main


Ich weiß, dass Backup - Der Rechner läuft auf einem proxmox und hier habe ich Backups.

Generell kenne ich mich aber mit PostgreSQL wirklich nicht gut aus.
Ich könnte doch dann die 13 Datenbank stoppen und dann auch löschen?

pg_lsclusters

Code: Alles auswählen

Ver Cluster Port Status Owner    Data directory              Log file
13  main    5433 online postgres /var/lib/postgresql/13/main /var/log/postgresql/postgresql-13-main.log
15  main    5432 online postgres /var/lib/postgresql/15/main /var/log/postgresql/postgresql-15-main.log
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

Benutzeravatar
jph
Beiträge: 1087
Registriert: 06.12.2015 15:06:07
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Münsterland

Re: Debian Synapse PostgreSQL

Beitrag von jph » 24.01.2025 13:54:13

Stefan hat geschrieben: ↑ zum Beitrag ↑
21.01.2025 13:00:26
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[/code]
Du hast drei Cluster mit drei unterschiedlichen Versionen auf drei unterschiedlichen Ports aktiv. Ein pg_upgradecluster legt den neuen Cluster als Kopie des alten an. Danach sind der alte und der neue Cluster aktiv, wobei der neue Cluster einen anderen Port verwendet. Der alte Cluster wird mit pg_dropcluster entfernt. Bei der Gelegenheit kann man auch die Ports bereinigen, so dass der neue Cluster den Standardport 5432 verwendet.

Schau erst mal in die Konfiguration deines Synapse, mit welchem Cluster sich der verbindet. Wenn dort die Portnummer 5432 steht, dann verbindet er sich nach wie vor mit dem 11er-Cluster.

Wenn Synapse der einzige Nutzer ist und dieser sich vermittels 5432 mit dem 11er-Cluster verbindet, dann schlage ich folgendes Vorgehen vor:
  • Matrix-Synapse stoppen.
  • Den 13er-Cluster mit pg_dropcluster löschen, da dieser nicht verwendet wird.
  • Den 15er-Cluster mit pg_dropcluster löschen, da dieser nicht verwendet wird.
  • Den 11er-Cluster mit pg_upgradecluster auf 15 aktualisieren.
  • Den Port des neuen Clusters mit pg_lsclusters herausfinden.
  • Diesen Port in die Konfiguration von Matrix-Synapse eintragen und Matrix-Synapse starten.
Optional, wenn alles funktioniert:
  • Matrix-Synapse stoppen.
  • Den 11er-Cluster mit pg_dropcluster löschen, da dieser nicht mehr verwendet wird.
  • Den 15er-Cluster den Standardport 5432 geben.
  • Port 5432 in die Konfiguration von Matrix-Synapse eintragen und Matrix-Synapse starten.

Antworten