2010-09-01 15 views
48

Besteht Gefahr laufen /etc/init.d/postgresql restart ?? Wir hatten gerade einen Vorfall, bei dem einige Beziehungen "verschwanden" und ich den besagten Befehl ausführte. Ich wurde vom Systemadministrator geplagt, aber er begründete nicht, warum das eine schlechte Sache war. Ich habe die Webapp in den Wartungsmodus versetzt, so dass zu diesem Zeitpunkt keine Transaktionen/Anfragen stattfanden.Neustart postgres


Danke Jungs ... Also in Kürze wird es nichts beschädigen, aber es könnte viele wertvolle diagnostische Informationen verlieren.

+1

Meinst du "er hat nicht gerechtfertigt"? – JanC

+15

Auch kleine Notiz. Auf den meisten Systemen ist der Befehl /etc/init.d/postgresql neustart – keithhackbarth

Antwort

45

Nein, es besteht keine Gefahr, Postgres mit der init.d-Methode neu zu starten.

Es ist jedoch keine gute Idee, es neu zu starten, weil etwas Seltsames passiert ist, da es die Menge an Informationen stark einschränkt, die Sie sammeln können, um die Ursache zu finden und die Möglichkeiten zu begrenzen.

Auch in all den Jahren, die ich mit postgresql beteiligt war, habe ich nie eine Situation, in der ein Neustart das Problem "behoben". Der unmittelbare "Vorfall" könnte gelöst werden, aber wenn es ein Problem gibt, wird es immer noch da sein.

+1

Danke. Ich wusste, dass es das Routenproblem nicht beheben würde, aber sysadmin war nicht verfügbar und die Clients wollten ihre Site sichern. – Simon

+2

Sie sollten dies genau beobachten und/oder ein Skript schreiben, das regelmäßig überprüft, ob der Fehler erneut auftritt, damit Sie beim nächsten Mal mehr Zeit haben, Daten zu sammeln und das Problem zu beheben, bevor der Kunde anruft. –

3

Die Beziehungen verschwinden nicht wegen eines Neustarts, Sie könnten einige laufende Transaktionen verlieren, aber das war's. PostgreSQL zerstört Ihre Datenbank beim Neustart nicht, keine Sorge.

5

Die einzige Möglichkeit, wie Relationen bei einem Neustart von Postgres verschwinden würden, wäre, ob es sich um temporäre Tabellen oder um angelegte Beziehungen innerhalb einer offenen Transaktion handelt. Beim Neustart der Datenbank würden alle Verbindungen geschlossen und somit alle temporären Tabellen gelöscht und offene Transaktionen rückgängig gemacht. Aber alles, was ausgeführt wurde, wäre vor einem Neustart sicher.