Nach Update DBI Connect Fehler

LyriC

Member
Jan 4, 2021
21
5
8
48
Hallo zusammen,
ich habe ein Problem mit meinem Mailgateway,
nach dem Update von 6.4.4 zu 7.1.1 nach der Anleitung https://pmg.proxmox.com/wiki/index.php/Upgrade_from_6.x_to_7.0
nun habe ich Fehlermeldungen und komme nicht weiter.
Vielleicht kann mir einer hier bei dem Problem Helfen.
Hier die Fehlermeldung:
Jan 3 11:46:21 pmg pmg-smtp-filter[991]: Starting "1" children
Jan 3 11:46:21 pmg pmg-smtp-filter[1275]: DBI connect('dbname=Proxmox_ruledb;host=/var/run/postgresql;port=5432','root',...) failed: could not connect to server: No such file or directory#012#011Is the server running locally and accepting#012#011connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"? at /usr/share/perl5/PMG/DBTools.pm line 79.
das bekomme ich im Mail Log angezeigt.

Falls die Information wichtig ist, Ich habe keinen Cluster.
Der Postgresql dienst läuft.

root@pmg:~# service postgresql status
● postgresql.service - PostgreSQL RDBMS
Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled)
Active: active (exited) since Mon 2022-01-03 11:28:48 CET; 26min ago
Process: 729 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
Main PID: 729 (code=exited, status=0/SUCCESS)
CPU: 1ms

Jan 03 11:28:48 pmg.it-contact.de systemd[1]: Starting PostgreSQL RDBMS...
Jan 03 11:28:48 pmg.it-contact.de systemd[1]: Finished PostgreSQL RDBMS.

Danke für die Hilfe.
grüße
Michael
 
Ist das ein geclustertes System?

In jedem Fall bitte folgendes überprüfen:
* läuft postgres tatsächlich? `ps auxfw |grep postgres` - sollte viele prozesse (mit 13 in der Zeile) anzeigen.
* als root `psql Proxmox_ruledb` funktioniert?
* in dieser shell funktioniert ein `\dt`?

Was steht denn im postgresql log:
/var/log/postgresql/postgresql-13-main.log

Ich hoffe das hilft!
 
  • Like
Reactions: LyriC
Danke für die Rückmeldung.

Nein das ist kein geclustertes System.
Aber Danke für die Anhaltspunkte, ich denke ich habe dadurch den Fehler gefunden.
Das Problem ist folgendes:
Nach einem reboot sieht das System mit dem Befehl pg_lsclusters so aus:
root@pmg:~# pg_lsclusters
Ver Cluster Port Status Owner Data directory Log file
11 main 5433 down postgres /var/lib/postgresql/11/main /var/log/postgresql/postgresql-11-main.log
13 main 5432 down postgres /var/lib/postgresql/13/main /var/log/postgresql/postgresql-13-main.log

Die Datenbank startet nicht automatisch :-(
Nach einem Manuellen Start mit pg_ctlcluster 13 main start sieht es wie folgt aus:

Ver Cluster Port Status Owner Data directory Log file
11 main 5433 down postgres /var/lib/postgresql/11/main /var/log/postgresql/postgresql-11-main.log
13 main 5432 online postgres /var/lib/postgresql/13/main /var/log/postgresql/postgresql-13-main.log

Danach läuft auch wieder alles.
Wie bekomme ich das hin das er die automatisch mit startet?
Danke nochmal für Tipps.

grüße
 
Nun habe ich ein großes problem. :-(
ich habe das nun entfernt
apt purge postgresql-11 postgresql-client-11
und nun ist keine datenbank mehr vorhanden.
kann ich auch nicht mehr mit pg_ctlclusters 13 main start starten meldung ist:
root@pmg:~# pg_ctlcluster 13 main start
Error: specified cluster '13 main' does not exist

und mit dem Befehl `systemctl -a |grep postgres` bekomme ich folgenden output:

root@pmg:~# systemctl -a |grep postgres
postgresql.service loaded active exited PostgreSQL RDBMS

gibt es hier eine Möglichkeit das System noch zu retten?
Danke für die Hilfe.
 
Was ist denn noch an postgres paketen installiert?
`dpkg -l |grep postgres`?

normalerweise sind die postgres pakete auch deswegen so versioniert, das eben genau das nicht passiert

* was wurde denn beim purge genau alles entfernt? (dpkg log apt log)
* was ist noch unter /etc/postgresql (`find /etc/postgresql`)
* was unter /var/lib/postgresql `find /var/lib/postgresql/`)
 
Erstmal nochmal Danke für die Hilfe.
Ergebnis von dpkg -l |grep postgres
root@pmg:~# dpkg -l |grep postgres
ii postgresql-13 13.5-0+deb11u1 amd64 The World's Most Advanced Open Source Relational Database
ii postgresql-client-13 13.5-0+deb11u1 amd64 front-end programs for PostgreSQL 13
ii postgresql-client-common 225 all manager for multiple PostgreSQL client versions
ii postgresql-common 225 all PostgreSQL database-cluster manager

dpkg.log
2022-01-03 17:06:01 startup packages remove
2022-01-03 17:06:01 status installed postgresql-11:amd64 11.14-0+deb10u1
2022-01-03 17:06:01 remove postgresql-11:amd64 11.14-0+deb10u1 <none>
2022-01-03 17:06:01 status half-configured postgresql-11:amd64 11.14-0+deb10u1
2022-01-03 17:06:01 status half-installed postgresql-11:amd64 11.14-0+deb10u1
2022-01-03 17:06:01 status triggers-pending postgresql-common:all 225
2022-01-03 17:06:02 status config-files postgresql-11:amd64 11.14-0+deb10u1
2022-01-03 17:06:02 status installed postgresql-client-11:amd64 11.14-0+deb10u1
2022-01-03 17:06:02 remove postgresql-client-11:amd64 11.14-0+deb10u1 <none>
2022-01-03 17:06:02 status half-configured postgresql-client-11:amd64 11.14-0+deb10u1
2022-01-03 17:06:02 status half-installed postgresql-client-11:amd64 11.14-0+deb10u1
2022-01-03 17:06:02 status config-files postgresql-client-11:amd64 11.14-0+deb10u1
2022-01-03 17:06:02 status not-installed postgresql-client-11:amd64 <none>
2022-01-03 17:06:02 startup packages configure
2022-01-03 17:06:02 trigproc postgresql-common:all 225 <none>
2022-01-03 17:06:02 status half-configured postgresql-common:all 225
2022-01-03 17:06:02 status installed postgresql-common:all 225
2022-01-03 17:06:02 startup packages purge
2022-01-03 17:06:02 purge postgresql-11:amd64 11.14-0+deb10u1 <none>
2022-01-03 17:06:02 status config-files postgresql-11:amd64 11.14-0+deb10u1
2022-01-03 17:06:07 status not-installed postgresql-11:amd64 <none>
2022-01-03 17:06:07 startup packages configure

apt.log
Start-Date: 2022-01-03 17:06:01
Commandline: apt purge postgresql-11 postgresql-client-11
Purge: postgresql-11:amd64 (11.14-0+deb10u1), postgresql-client-11:amd64 (11.14-0+deb10u1)
End-Date: 2022-01-03 17:06:07

was ist noch unter /etc/postgresql
root@pmg:/etc/postgresql# ls -lrt
total 0

was unter /var/lib/postgresql
root@pmg:/var/lib/postgresql# ls -lrt
total 0

Ich gehe mal davon aus das es das war für den Server :-( oder kann man da noch was machen?
Danke.

Gruß
 
Ich gehe mal davon aus das es das war für den Server :-( oder kann man da noch was machen?
Danke.
hm - wenn die postgres datenbank weg ist bleibt nur der restore vom backup - aber wieso eine installierte postgres-13 von einem purge von postgres-11 betroffen ist kann ich mir dennoch nicht ganz erklären?
 
Also ich habe ein Backup vom PMG vor dem Update auf 7.1.1, nur leider ist das mit postgresql 11 und dieses habe ich nicht mehr auf dem Server.
Gibt es hier ein kleines HowTo wie ich das wiederherstellen kann?
Oder ist s möglich ein Backup von der postgresql 11 in postgrsql 13 zu importieren?
hm sorry für die vielen fragen.
Danke im Voraus.
beste grüße.
 
Also ich habe ein Backup vom PMG vor dem Update auf 7.1.1, nur leider ist das mit postgresql 11 und dieses habe ich nicht mehr auf dem Server.
Gibt es hier ein kleines HowTo wie ich das wiederherstellen kann?
das klingt mal sehr gut!

Prinzipiell würde ich derzeit an Deiner Stelle:
* ein backup der PMG Maschine machen wie sie derzeit ist (zuerst und am aller wichtigsten) - sicherheitshalber - das PMG backup beinhaltet zwar das Regelsystem, Statistiken und die PMG-relevanten Konfigurationsdateien - aber falls manuell Sachen am System hinzugefügt wurden sind die klarerweise nicht enthalten (auch ist die Netzwerk-config nicht teil des Backups)

danach gibt es 2 Optionen:
* PMG einfach in einer neuen VM/Container/Instanz frisch installieren und das Backup vor dem update einspielen (die PMG backups können bisher von Version 5.0 -> 7.1 problemlos eingespielt werden (einzig downgraden ist nicht (immer möglich))
* auf der bestehenden Maschine einen leeren Postgres 13 cluster anlegen sicherstellen, dass postgres immer korrekt startet und root sich als super-user überall anmelden kann und dann ebenso das Backup wieder einspielen.

sollte das Probleme machen - einfach die Konfigs / Outputs hier posten die die Probleme zeigen

Ich hoffe das hilft!
 
Moin,

erstmal danke für die Rückmeldung und deine Geduld. :)
Ich habe jetzt schon mal eine neue Datenbank mit dem Befehl pg_createcluster 13 main erstellt.
root@pmg:~# pg_lsclusters
Ver Cluster Port Status Owner Data directory Log file
13 main 5432 online postgres /var/lib/postgresql/13/main /var/log/postgresql/postgresql-13-main.log
Die Datenbank startet nun auch automatisch nach einen reboot. :)

die Pfade /var/lib/postgresql/ und /etc/postgresql/ enthalten nun auch wieder ein Ordnerstruktur.

Inhalt:
root@pmg:~# ls -lrt /etc/postgresql/13/main/
conf.d/ environment pg_ctl.conf pg_hba.conf pg_ident.conf postgresql.conf start.conf

Inhalt:
root@pmg:~# ls -lrt /var/lib/postgresql/13/main/
base/ pg_logical/ pg_serial/ pg_subtrans/ pg_wal/
global/ pg_multixact/ pg_snapshots/ pg_tblspc/ pg_xact/
pg_commit_ts/ pg_notify/ pg_stat/ pg_twophase/ postgresql.auto.conf
pg_dynshmem/ pg_replslot/ pg_stat_tmp/ PG_VERSION postmaster.opts

In der Backupdatei sind zwei .sql Dateien enthalten.
Proxmox_ruledb.sql Proxmox_statdb.sql

Nun zu meiner Frage wohin müssen diese beiden .sql DB's zurück importiert werden?
Ich habe es mir Folgenden befehlen versucht leider stoße ich hier auf Error Meldungen.
root@pmg:~# psql Proxmox_ruledb < Proxmox_ruledb.sql
psql: error: FATAL: role "root" does not exist
root@pmg:~# psql Proxmox_statdb < Proxmox_statdb.sql
psql: error: FATAL: role "root" does not exist

Danke im Voraus.
Grüße :)
 
Last edited:
Nun zu meiner Frage wohin müssen diese beiden .sql DB's zurück importiert werden?
prinzipiell würde ich einfach empfehlen die backup datei einfach an die passende stelle zu kopieren (/var/lib/pmg/backup - mit passendem Namen) und sie dann via GUI oder pmgbackup restore wieder herzustellen (falls das nicht geht - zuerst mit pmgdb init eine default datenbank anlegen)

sonst - Proxmox_ruledb enthaelt das Regelsystem (und die Configs, die in der Datenbank sind) Proxmox_statdb.sql die statistik daten

Ich hoffe das hilft :)
 
Ich habe noch kein neues System aufgesetzt bin gerade noch am alt System.
Habe dort eine neue Datenbank erstellt mit dem pg_createcluster Befehl, wollte nun die Backup SQL Files in die Datenbank importieren.
Ich stoße dabei leider nur auf folgenden Fehler.
root@pmg:~# psql Proxmox_ruledb < Proxmox_ruledb.sql
psql: error: FATAL: role "root" does not exist
root@pmg:~# psql Proxmox_statdb < Proxmox_statdb.sql
psql: error: FATAL: role "root" does not exist

Gibt es einen Trick wie ich die .sql files zurück in die Datenbank schreiben kann?

Grüße
 
prinzipiell sollte:
Code:
pmgconfig init
pmgdb init

da schon helfen
danach wie gesagt mit `pmgbackup restore` arbeiten
 
Ok, soweit habe ich die Sachen versucht, leider stoße ich hier auf Fehler.
erst habe ich die DB gedroppt und neu erstellt und dann die Befehle pmgconfig init und pmgdb init durchgeführt.
Bei den beiden befehlen kam es schon zu Fehlern. siehe weiter unten.
root@pmg:~# pg_dropcluster --stop 13 main
root@pmg:~# pg_createcluster --start 13 main
Creating new PostgreSQL cluster 13/main ...
/usr/lib/postgresql/13/bin/initdb -D /var/lib/postgresql/13/main --auth-local peer --auth-host md5
The files belonging to this database system will be owned by user "postgres".
This user must also own the server process.

The database cluster will be initialized with locale "en_US.UTF-8".
The default database encoding has accordingly been set to "UTF8".
The default text search configuration will be set to "english".

Data page checksums are disabled.

fixing permissions on existing directory /var/lib/postgresql/13/main ... ok
creating subdirectories ... ok
selecting dynamic shared memory implementation ... posix
selecting default max_connections ... 100
selecting default shared_buffers ... 128MB
selecting default time zone ... Europe/Berlin
creating configuration files ... ok
running bootstrap script ... ok
performing post-bootstrap initialization ... ok
syncing data to disk ... ok

Success. You can now start the database server using:

pg_ctlcluster 13 main start

Ver Cluster Port Status Owner Data directory Log file
13 main 5432 online postgres /var/lib/postgresql/13/main /var/log/postgresql/postgresql-13-main.log
root@pmg:~# pmgconfig init
Use of uninitialized value $domain in concatenation (.) or string at /usr/share/perl5/PMG/Utils.pm line 642.
root@pmg:~# pmgdb init
could not change directory to "/root": Permission denied
Initialize rule database
could not change directory to "/root": Permission denied
root@pmg:~# pmgbackup restore help

Ich habe dann dennoch versuch das Backup zurück zu spielen.
Hierfür habe ich den Befehl: pmgbackup restore --filename pmg-backup_2022_01_03_61D2C264.tgz --database 1 --statistic 1 Benutzt.
Hier ist die Rückmeldung:
root@pmg:~# pmgbackup restore --filename pmg-backup_2022_01_03_61D2C264.tgz --database 1 --statistic 1
starting restore: /var/lib/pmg/backup/pmg-backup_2022_01_03_61D2C264.tgz
config_backup.tar: OK
Proxmox_ruledb.sql: OK
Proxmox_statdb.sql: OK
version.txt: OK
Destroy existing rule database
could not change directory to "/root": Permission denied
Create new database
could not change directory to "/root": Permission denied
run analyze to speed up database queries
could not change directory to "/root": Permission denied
ANALYZE
Analyzing/Upgrading existing Databases...done
Use of uninitialized value $domain in concatenation (.) or string at /usr/share/perl5/PMG/Utils.pm line 642.
could not change directory to "/root": Permission denied
could not change directory to "/root": Permission denied
could not change directory to "/root": Permission denied
could not change directory to "/root": Permission denied
could not change directory to "/root": Permission denied
could not change directory to "/root": Permission denied
could not change directory to "/root": Permission denied
could not change directory to "/root": Permission denied
could not change directory to "/root": Permission denied
could not change directory to "/root": Permission denied
could not change directory to "/root": Permission denied
could not change directory to "/root": Permission denied
Failed to start pmg-smtp-filter.service: Unit pmg-smtp-filter.service is masked.
command 'systemctl start pmg-smtp-filter' failed: exit code 1
Failed to start pmgtunnel.service: Unit pmgtunnel.service is masked.
command 'systemctl start pmgtunnel' failed: exit code 1
Failed to start pmgmirror.service: Unit pmgmirror.service is masked.
command 'systemctl start pmgmirror' failed: exit code 1
Failed to start pmgpolicy.service: Unit pmgpolicy.service is masked.
command 'systemctl start pmgpolicy' failed: exit code 1
restore finished
Das sieht nicht wirklich so aus als hätte das funktioniert. :-(

Danke im Voraus.
 
could not change directory to "/root": Permission denied
could not change directory to "/root": Permission denied
die meldungen sind harmlos (und sollten in einer der naechsten versionen nicht mehr auftreten)

Use of uninitialized value $domain in concatenation (.) or string at /usr/share/perl5/PMG/Utils.pm line 642.
sieht auf den ersten blick danach aus als wuerde in /etc/resolv.conf keine search domain stehen - siehe:
https://pmg.proxmox.com/pmg-docs/pmg-admin-guide.html#_configuration_files_overview

failed to start pmg-smtp-filter.service: Unit pmg-smtp-filter.service is masked.

sieht so aus als waere der letzte teil der upgrade-anleitung (bevor das Problem mit der verschwundenen Datenbank angefangen hat) nicht abgeschlossen worden:
https://pmg.proxmox.com/wiki/index....to_7.0#After_the_Proxmox_Mail_Gateway_upgrade


sprich - services unmasken - resolv.conf richtig setzen - system neu starten - GUI ansehen und vergleichen ob alles da ist

Ich hoffe das hilft :)
 
Hallo,

erstmal vielen Danke für die Hilfe, das System läuft nun wieder.
leider sind die Spamquarantäne komplett leer. :-(
Gibt es eine Möglichkeit die Daten wieder zu holen?
Danke im Voraus
 
  • Like
Reactions: Stoiko Ivanov
Gibt es eine Möglichkeit die Daten wieder zu holen?
(einfach) leider nicht...

das pmgbackup speichert bewusst keine daten, die nur temporär sind (z.b Greylisting Einträge und eben Mails in Quarantäne) - macht auch nicht wirklich sinn die von einem Backup von vor einem Tag wieder zurückzuspielen (da dazwischen ja das Mail beispielsweise schon zugestellt hätte werden können).

Potentiell sind bis heute Abend noch die queue-files der mails in /var/spool/pmg zu finden (mit `find /var/spool/pmg` mal einen blick auf die files werfen) - aber bei dem Zustand des Systems gestern Abend (ein systemd-timer räumt die Quarantäne in der Nacht auf ) würde ich nicht davon ausgehen.
 
  • Like
Reactions: LyriC
ok, nochmal vielen vielen Dank für die Hilfestellung.
Echt super von Dir!

Tausend dank nochmal und noch einen schönen Abend. :)

Thread kann geschlossen werden.
 

About

The Proxmox community has been around for many years and offers help and support for Proxmox VE, Proxmox Backup Server, and Proxmox Mail Gateway.
We think our community is one of the best thanks to people like you!

Get your subscription!

The Proxmox team works very hard to make sure you are running the best software and getting stable updates and security enhancements, as well as quick enterprise support. Tens of thousands of happy customers have a Proxmox subscription. Get yours easily in our online shop.

Buy now!