1 Kurzbeschreibung
Diese Dokumentation beschreibt die Installation von PostgreSQL 9.4 auf CentOS 7.x, Debian 8.x und grundlegende Datenbankwartungsskripte für Comarch ERP Enterprise.
2 Zielgruppe
3 Voraussetzungen
Als Betriebssystem wird eine korrekte Installation von CentOS 7.x oder Debian 8.x vorausgesetzt. Das Netzwerk muss so eingerichtet sein, dass die Namensauflösung des Rechnernamens möglich ist.
Als Datenbank-Management-System (DBMS) wird für die in dieser Dokumenta-tion beschriebene Vorgehensweise das DMBS von PostgreSQL in der Version 9.4 vorausgesetzt.
Mindestens 20 GB freier Speicher sollten auf der Installationspartition für die Datenbank und Comarch ERP Enterprise zur Verfügung stehen.
Verwenden Sie zur Installation von PostgreSQL 9.4 den Benutzer „root“.
4 Konventionen
Behalten Sie die vorgegebenen Verzeichnisstrukturen, um bei der parallelen Installation mehrerer System eine einheitliche Struktur zu gewährleisten.
Das verwendete Installationsverzeichnis /opt/comarch/CIS530PxPG folgt den Konventionen des unter Unix verwendeten „Filesystem Hierarchy Standard“.
Der in der Dokumentation verwendete Name „CIS530PxPG“ ist ein Platzhalter, der durch den konkreten Namen gemäß Installations-Medium (z. B. „CIS530PBPG“ oder „CIS530PCPG“) zu ersetzen ist.
5 Vorbereitung und Installation
5.1 Lokalisierung
Vor der Installation von PostgreSQL 9.4 muss sichergestellt werden, dass die Lokalisierung de_DE.UTF-8 auf dem System bekannt ist. Bei CentOS werden während der Installation alle Lokalisierungen mit installiert. Bei Debian wir nur eine Lokalisierung installiert. Jede weitere muss nach installiert werden.
Hinweis:
Zwischen de_DE-UTF-8 und de_DE.utf8 besteht kein Unterschied.
Auf beiden Distributionen ermitteln Sie die bekannten Lokalisierungen mit folgendem Befehl:
# locale –a | grep de_DE
de_DE.utf8
Lokalisierung auf Debian 8.x bearbeiten
Sollte die Lokalisierung de_DE.utf8 dem System nicht bekannt sein, dann fügen Sie sie mit folgendem Befehl hinzu:
# dpgk-reconfigure locales
Lokalisierung de_DE.UTF-8 zum Hinzufügen auswählen
Prüfen Sie die vorhandenen Lokalisierungen erneut mit folgendem Befehl:
# locale –a | grep de_DE
5.2 PostgreSQL 9.4 installieren
5.2.1 Debian 8.x „Jessie“
Bei Debian 8.x “Jessie” Linux ist die Version PostgreSQL 9.4 im Standard-Repository enthalten und muss lediglich installiert werden.
- Das APT-Repository aktualisieren:# apt-get update
- PostgreSQL 9.4 und alle abhängigen Pakete installieren:
# apt-get install postgres-9.4 postgres-client-9.4
Nach erfolgreicher Installation wird automatisch ein neuer PostgreSQL-Cluster mit folgenden Parametern eingerichtet.
PostgreSQLCluster ist mit der Lokalisierung de_DE.UTF-8 erstellt worden
Als Lokalisierung wird der Systemstandard de_DE.UTF-8 verwendet.
- PostgreSQL-Dienst starten und beenden:
# systemctl start postgresql.service
# systemctl stop postgresql.service
5.2.2 CentOS 7.x
- Das YUM-Repository aktualisieren:
# yum install http://yum.postgresql.org/9.4/redhat/rhel-7-x86_64/pgdg-redhat94-9.4-1.noarch.rpm - PostgreSQL 9.4 und alle abhängigen Pakete installieren:
# yum groupinstall “PostgreSQL Database Server 9.4 PGDG” - PostgreSQL-Cluster initialisieren:
# /usr/pgsql-9.4/bin/postgresql94-setup initdb - Startskript des PostgreSQL-Diensts aktivieren:
# systemctl enable postgresql-9.4.service - PostgreSQL Dienst starten bzw. Stoppen
# systemctl start postgresql-9.4.service
# systemctl stop postgresql-9.4.service
6 PostgreSQL konfigurieren
6.1 Netzwerkkonfiguration
Mit dem Parameter listen addresses wird die IP-Adresse konfiguriert, auf der der Datenbankserver Verbindungen entgegennimmt. Die Einstellung kann nur vom Benutzer root in der folgenden Datei vorgenommen werden:
# /etc/postgresql/9.4/main/postgresql.conf [Debian]
# /var/lib/pgsql/9.4/main/postgresql.conf [CentOS]
Ändern Sie die Voreinstellung listen_address = ‘localhost’ in listen_address = ‘*’. Der Datenbankserver nimmt nun Verbindungen von allen Adressen entgegen.
Die Änderung erfordert einen Neustart des Datenbankservers mit folgendem Befehl:
# systemctl restart postgresql.service [Debian]
# systemctl restart postgresql-9.4.service [CentOS]
6.2 Client-Authentifizierung
Damit sich die Application-Server von Comarch ERP Enterprise am DBMS authentifizieren können, ergänzen Sie in der Datei pg_hba.conf folgende Zeile:
hosts all all 192.168.2.0/24 md5
Die Datei befindet sich im Konfigurationsverzeichnis und kann nur vom Benutzer root bearbeitet werden.
# /etc/postgresql/9.4/main/pg_hba.conf [Debian]
# /var/lib/pgsql/9.4/main/ pg_hba.conf [CentOS]
Im obigen Beispiel können sich die Application-Server aus dem Subnetz 192.168.2.0/24 an der PostgreSQL-Datenbank authentifizieren.
Die Änderung erfordert einen Neustart des Datenbankservers mit folgendem Befehl:
# systemctl restart postgresql.service [Debian]
# systemctl restart postgresql-9.4.service [CentOS]
6.3 Speicheroptimierung
Die Voreinstellungen einer neu installierten PostgreSQL-Datenbank sind für den Produktivbetrieb nicht geeignet. Ein Produktivsystem erfordert Anpassungen, die von den verfügbaren Ressourcen des verwendeten Servers abhängen. Die Werte können in der Datei postgresql.conf im Verzeichnis /etc/postgesql/9.4/main [Debian] oder /var/lib/psql/9.4/main [CentOS] angepasst werden. Anschließend ist ein Neustart des DBMS erforderlich.
Empfohlene Werte bei 16GB RAM, wobei 2GB RAM für das Linux-Betriebssystem reserviert werden. PostgreSQL stehen somit 14GB RAM zur Verfügung:
- max_connections = 300
- shared_buffers = 3584MB
- effective_cache_size = 10752MB
- work_mem = 12233kB
- maintenance_work_mem = 896MB
- checkpoint_segments = 64
- checkpoint_completion_target = 9
- wal_buffers = 16MB
- default_statistics_target = 100
Weitere Informationen zur Speicheroptimierung finden Sie unter folgenden Adressen:
- http://wiki.postgresql.org/wiki/Tuning_Your_PostgreSQL_Server [Stand: 07.12.2015]
- Configuration calculator for PostgreSQL. http://pgtune.leopard.in.ua/ [Stand: 07.12.2015]
7 Datenbank-Wartungsskripte
Dieser Abschnitt enthält Vorgehensweisen zum Kopieren, Sichern und Wiederherstellen von Datenbanken. Für den Umgang mit den Datenbank-Wartungsskripten müssen die folgenden Voraussetzungen erfüllt sein:
- Debian 8.x oder CentOS 7.x wird verwendet und PostgreSQL 9.4 ist installiert
- Das Skriptverzeichnis ist /scripts/linux/.
- Die Skripte müssen für den Benutzer postgres ausführbar sein.
- Das Datenbankverzeichnis ist /opt/psql_server_data.
- Das Datenbankverzeichnis muss dem Benutzer postgres gehören und von ihm beschreibbar sein.
- Das Zielverzeichnis für die Log-Datei muss für den Benutzer postgres beschreibbar sein.
- Die Programme psql, pg_dump und pg_restore sind für den Benutzer postgres erreichbar und ausführbar.
- Die Sortierung UTF-8 ist dem Linux-Betriebssystem bekannt.
Führen Sie die Skripte nur mit dem Benutzer postgres aus. Ausgehend vom Benutzer root wechseln Sie in die Loginshell des Benutzers postgres wie folgt:
# su – postgres
7.1 Kopieren von Datenbanken (cpypgdb.sh)
PostgreSQL-Datenbanken werden mit dem Skript cpypgdb.sh kopiert. Das Skript befindet sich im Verzeichnis /scripts/linux.
Folgende Parameter sind erforderlich:
- Name der Quell-Datenbank
- Name der Ziel-Datenbank
- Datenbankverzeichnis
- temporäres Verzeichnis
- Pfad und Dateiname der Logdatei
Das temporäre Verzeichnis muss für den Benutzer postgres beschreibbar sein. Außerdem muss ausreichend Speicherplatz für die Quell-Datenbank vorhanden sein.
$ ./cpypgdb.sh CIS530PBPG01 CIS530PBPG02 /opt/psql_server_data \ /tmp/CIS530PBPG.log
7.2 Sichern von Datenbanken (savpgdb.sh)
PostgreSQL-Datenbanken werden mit dem Skript savpgdb.sh in eine Sicherungsdatei gesichert. Das Skript befindet sich im Verzeichnis /scripts/linux/postgres.
Folgende Parameter sind erforderlich:
- Pfad und Dateiname der Sicherungsdatei
- Pfad und Dateiname der Logdatei
- Name der Datenbank, die gesichert werden soll
$ ./savpgdb.sh /opt/comarch/tmp_backup/CIS530PBPG01.dump \ /opt/comarch/tmp_backup/CIS530PBPG01.log CIS530PBPG01
7.3 Wiederherstellen von Datenbanken (rstpgdb.sh)
PostgreSQL-Datenbanken werden mit dem Skript rstpgdb.sh aus einer Sicherungsdatei wiederhergestellt. Das Skript befindet sich im Verzeichnis /scripts/linux/postgres.
Folgende Parameter sind erforderlich:
- Name der Quell-Datenbank
- Name der Ziel-Datenbank
- Pfad und Dateiname der Sicherungsdatei
- Datenbankverzeichnis
- Pfad und Dateiname der Logdatei
$ ./rstpgdb.sh CIS530PBPG01 CIS530PBPG01 \ /opt/comarch/tmp_backup/CIS530PBPG01.dump /opt/psql_server_data \ /opt/comarch/tmp_backup/CIS530PBPG01.log
Hinweis:
Mit dem Skript werden bereits vorhandene Datenbanken überschrieben. Wenn nicht bereits vorhanden, dann werden Benutzerrolle und Tablespace erstellt.
7.4 Manuelles Erstellen von Datenbanken (crtdbenv.sh)
Eine leere PostgreSQL-Datenbank wird mit dem Skript crtdbenv.sh manuell erstellt. Das Skript befindet sich in dem Verzeichnis /scripts/linux/postgres/tools.
Folgende Parameter erwartet das Skript:
- -a: alle Aktionen ausführen (Benutzerrolle, Tablespace und Datenbank erstellen)
- -f: Datenbankverzeichnis
- -n: Name der Datenbank
- -c: optional kann die Datenbank mit einer andern Sortierreihenfolge erstellt werden
$ ./crtdbenv.sh –a –f /opt/psql_server_data –n TEST01
Hinweis:
Mit dem Parameter –c ist es möglich die Datenbank mit einer eigenen Sortiereinstellung zu erstellen. Die entsprechende Lokalisierung muss dem Debian-System bekannt sein. Ist der Parameter nicht angegeben, dann wird die Datenbank mit “de_DE.UTF-8” erstellt.
$ ./crtdbenv.sh –a –f /opt/psql_server_data –n TEST02 –c en_GB.UTF-8
Das PostgreSQL-Konzept erwartet eine Benutzerrolle und einen Tablespace, in dem die Datenbank erstellt wird. Die Benutzerrolle, der Tablespace und die Datenbank müssen mit dem gleichen Namen erstellt werden.
Folgende Parameter sind zum Erstellen einer Datenbank in Einzelschritten erforderlich und müssen in der angegebenen Reihenfolge (Benutzerrolle, Tablespace, Datenbank) erstellt werden:
- -r: erstellt Benutzerrolle
- -t: legt einen Tablespace zur Benutzerrolle an
- -d: erstellt eine Datenbank in dem Tablespace
- -f: Datenbankverzeichnis für den Tablespace
- -n: Name der Benutzerrolle, Tablespace oder Datenbank
Anleitung
- Benutzerrolle TEST01 erstellen:
$ ./crtdbenv.sh –r –n TEST01
- Tablespace TEST01 der Benutzerrolle TEST01 hinzufügen:
$ ./crtdbenv.sh –t –f /opt/psql_server_data –n TEST01
- Datenbank TEST01 dem Tablespace TEST01 hinzufügen:
$ ./crtdbenv.sh –d –n TEST01
7.5 Manuelles Entfernen von Datenbanken (dltdbenv.sh)
Eine vorhandene PostgreSQL-Datenbank wird mit dem Skript dltdbenv.sh gelöscht. Das Skript befindet sich im Verzeichnis /scripts/linux/postgres/tools. Die Benutzerrolle, der Tablespace und die Datenbank haben den gleichen Namen.
Folgende Parameter erwartet das Skript:
- -a: alle Aktionen ausführen (Datenbank, Tablespace und Benutzerrolle erstellen)
- -f: Datenbankverzeichnis
- -n: Name der Datenbank
$ ./dltdbenv.sh –a –f /opt/pg_server_data –n TEST01
Folgende Parameter sind zum Entfernen einer Datenbank in Einzelschritten erforderlich und müssen in der angegebenen Reihenfolge (Datenbank, Tablespace, Benutzerrolle) entfernt werden:
- -r: entfernt eine vorhandene Benutzerrolle
- -t: entfernt einen vorhandenen Tablespace
- -d: entfernt eine vorhandene Datenbank
- -f: entfernt ein vorhandenes Tablespace-Verzeichnis
- -n: Name der Benutzerrolle, des Tablespaces oder der Datenbank
Anleitung
- Datenbank TEST01 entfernen:
$ ./dltdbenv.sh –d –n TEST01
- Tablespace TEST01 entfernen:
$ ./dltdbenv.sh –t –f /opt/pg_server_data –n TEST01
- Benutzerrolle TEST01 entfernen:
$ ./dltdbenv.sh –r –n TEST01
8 Weiterführende Dokumentation zu PostgreSQL
- http://www.postgresql.org/docs [Stand: 07.12.2015]
Enthält aktuelle und archivierte Handbücher für PostgreSQL-Benutzer sowie häufig gestellte Fragen.
- https://wiki.postgresql.org/wiki/Main_Page [Stand: 07.12.2015]
Enthält Benutzer-Dokumentationen, Anleitungen sowie Tipps und Tricks für PostgreSQL.