So verschieben Sie ein PostgreSQL-Datenverzeichnis unter Ubuntu 18.04 an einen neuen Speicherort

Einführung

Datenbanken wachsen mit der Zeit, wobei der Speicherplatz auf dem ursprünglichen Dateisystem manchmal größer wird. Wenn sie sich auf derselben Partition wie der Rest des Betriebssystems befinden, kann dies möglicherweise auch zu E / A-Konflikten führen.

RAID, Netzwerkblockspeicher und andere Geräte können Redundanz bieten und die Skalierbarkeit sowie andere wünschenswerte Funktionen verbessern. Unabhängig davon, ob Sie mehr Speicherplatz hinzufügen, Möglichkeiten zur Leistungsoptimierung evaluieren oder andere Speicherfunktionen nutzen möchten, führt Sie dieses Lernprogramm durch die Verlagerung des PostgreSQL-Datenverzeichnisses.

Voraussetzungen

Um diesen Leitfaden zu vervollständigen, benötigen Sie:

In diesem Beispiel verschieben wir die Daten auf ein Blockspeichergerät, das mit/mnt/volume_nyc1_01 bereitgestellt wird. Wenn Sie Block Storage auf DigitalOcean verwenden, können Sie mitthis guide Ihr Volume bereitstellen, bevor Sie mit diesem Lernprogramm fortfahren.

Unabhängig davon, welchen zugrunde liegenden Speicher Sie verwenden, können Sie mit den folgenden Schritten das Datenverzeichnis an einen neuen Speicherort verschieben.

[[Schritt-1 - Verschieben des Postgresql-Datenverzeichnisses]] == Schritt 1 - Verschieben des PostgreSQL-Datenverzeichnisses

Bevor wir mit dem Verschieben des PostgreSQL-Datenverzeichnisses beginnen, überprüfen wir den aktuellen Speicherort, indem wir eine interaktive PostgreSQL-Sitzung starten. Im folgenden Befehl istpsql der Befehl zum Aufrufen des interaktiven Monitors und-u postgres weistsudo an,psql alspostgres-Benutzer des Systems auszuführen:

sudo -u postgres psql

Verwenden Sie nach dem Öffnen der PostgreSQL-Eingabeaufforderung den folgenden Befehl, um das aktuelle Datenverzeichnis anzuzeigen:

SHOW data_directory;
Output       data_directory
------------------------------
/var/lib/postgresql/10/main
(1 row)

Diese Ausgabe bestätigt, dass PostgreSQL für die Verwendung des Standarddatenverzeichnisses/var/lib/postgresql/10/main konfiguriert ist. Dies ist also das Verzeichnis, das verschoben werden muss. Wenn Sie das Verzeichnis auf Ihrem System bestätigt haben, geben Sie\q ein und drücken SieENTER, um die PostgreSQL-Eingabeaufforderung zu schließen.

Um die Integrität der Daten sicherzustellen, stoppen Sie PostgreSQL, bevor Sie Änderungen am Datenverzeichnis vornehmen:

sudo systemctl stop postgresql

systemctl zeigt nicht das Ergebnis aller Serviceverwaltungsbefehle an. Verwenden Sie den folgenden Befehl, um zu überprüfen, ob Sie den Dienst erfolgreich beendet haben:

sudo systemctl status postgresql

Die letzte Zeile der Ausgabe sollte Ihnen mitteilen, dass PostgreSQL gestoppt wurde:

Output. . .
Jul 12 15:22:44 ubuntu-512mb-nyc1-01 systemd[1]: Stopped PostgreSQL RDBMS.

Nachdem der PostgreSQL-Server heruntergefahren wurde, kopieren wir das vorhandene Datenbankverzeichnis mitrsync an den neuen Speicherort. Wenn Sie das Flag-a verwenden, bleiben die Berechtigungen und andere Verzeichniseigenschaften erhalten, während-v eine ausführliche Ausgabe bereitstellt, damit Sie den Fortschritt verfolgen können. Wir werdenrsync aus dem Verzeichnispostgresql starten, um die ursprüngliche Verzeichnisstruktur am neuen Speicherort nachzuahmen. Durch das Erstellen diesespostgresql-Verzeichnisses im Mount-Point-Verzeichnis und die Beibehaltung des Eigentums des PostgreSQL-Benutzers können Berechtigungsprobleme für zukünftige Upgrades vermieden werden.

[.note] #Note: Stellen Sie sicher, dass das Verzeichnis keinen abschließenden Schrägstrich enthält, der hinzugefügt werden kann, wenn Sie die Tab-Vervollständigung verwenden. Wenn Sie einen abschließenden Schrägstrich einfügen, speichertrsync den Inhalt des Verzeichnisses auf dem Mount-Punkt, anstatt über das Verzeichnis selbst zu kopieren.
#

Das Versionsverzeichnis10 ist nicht unbedingt erforderlich, da wir den Speicherort explizit in der Dateipostgresql.confdefiniert haben, aber das Befolgen der Projektkonvention wird sicherlich nicht schaden, insbesondere wenn in der Datei ein Bedarf besteht Zukunft, um mehrere Versionen von PostgreSQL auszuführen:

sudo rsync -av /var/lib/postgresql /mnt/volume_nyc1_01

Sobald der Kopiervorgang abgeschlossen ist, benennen wir den aktuellen Ordner mit der Erweiterung.bakum und behalten ihn bei, bis wir bestätigt haben, dass der Umzug erfolgreich war. Auf diese Weise können Sie Verwirrungen vermeiden, die dadurch entstehen können, dass Verzeichnisse mit ähnlichen Namen sowohl am neuen als auch am alten Speicherort vorhanden sind:

sudo mv /var/lib/postgresql/10/main /var/lib/postgresql/10/main.bak

Jetzt können wir PostgreSQL so konfigurieren, dass es an seinem neuen Speicherort auf das Datenverzeichnis zugreift.

[[Schritt 2 - Zeigen auf den neuen Datenort]] == Schritt 2 - Zeigen auf den neuen Datenort

Standardmäßig istdata_directory in der Datei/etc/postgresql/10/main/postgresql.conf auf/var/lib/postgresql/10/main eingestellt. Bearbeiten Sie diese Datei, um das neue Datenverzeichnis wiederzugeben:

sudo nano /etc/postgresql/10/main/postgresql.conf

Suchen Sie die Zeile, die mitdata_directory beginnt, und ändern Sie den folgenden Pfad, um die neue Position wiederzugeben. Im Kontext dieses Tutorials sieht die aktualisierte Direktive folgendermaßen aus:

/etc/postgresql/10/main/postgresql.conf

. . .
data_directory = '/mnt/volume_nyc1_01/postgresql/10/main'
. . .

Speichern und schließen Sie die Datei, indem SieCTRL + X,Y und dannENTER drücken. Dies ist alles, was Sie tun müssen, um PostgreSQL für die Verwendung des neuen Datenverzeichnisses zu konfigurieren. An dieser Stelle müssen Sie nur den PostgreSQL-Dienst erneut starten und prüfen, ob er tatsächlich auf das richtige Datenverzeichnis verweist.

[[Schritt-3 -—- Neustart-postgresql]] == Schritt 3 - Neustart von PostgreSQL

Nachdem Sie die Direktivedata-directory in der Dateipostgresql.conf geändert haben, starten Sie den PostgreSQL-Server mitsystemctl:

sudo systemctl start postgresql

Um zu bestätigen, dass der PostgreSQL-Server erfolgreich gestartet wurde, überprüfen Sie seinen Status erneut mitsystemctl:

sudo systemctl status postgresql

Wenn der Dienst ordnungsgemäß gestartet wurde, wird am Ende der Ausgabe dieses Befehls die folgende Zeile angezeigt:

Output. . .
Jul 12 15:45:01  ubuntu-512mb-nyc1-01[1]: Started PostgreSQL RDBMS.
. . .

Öffnen Sie abschließend die PostgreSQL-Eingabeaufforderung, um sicherzustellen, dass das neue Datenverzeichnis tatsächlich verwendet wird.

sudo -u postgres psql

Überprüfen Sie den Wert für das Datenverzeichnis erneut:

SHOW data_directory;
Output            data_directory
-----------------------------------------
/mnt/volume_nyc1_01/postgresql/10/main
(1 row)

Dies bestätigt, dass PostgreSQL den neuen Speicherort für das Datenverzeichnis verwendet. Nehmen Sie sich anschließend einen Moment Zeit, um sicherzustellen, dass Sie auf Ihre Datenbank zugreifen und mit den darin enthaltenen Daten interagieren können. Nachdem Sie die Integrität vorhandener Daten überprüft haben, können Sie das Sicherungsdatenverzeichnis entfernen:

sudo rm -Rf /var/lib/postgresql/10/main.bak

Damit haben Sie Ihr PostgreSQL-Datenverzeichnis erfolgreich an einen neuen Speicherort verschoben.

Fazit:

Wenn Sie mitverfolgt haben, sollte Ihre Datenbank mit ihrem Datenverzeichnis am neuen Speicherort ausgeführt werden, und Sie haben einen wichtigen Schritt zur Skalierung Ihres Speichers ausgeführt. Vielleicht möchten Sie auch5 Common Server Setups For Your Web Application lesen, um Ideen zum Erstellen einer Serverinfrastruktur zu erhalten, mit deren Hilfe Sie Webanwendungen skalieren und optimieren können.

Related