Hi Leute,
Ich hab mich mal hingesetzt und ein paar Infos zu PostgreSQL zusammengetragen. Vielleicht wird damit die Installation und Pflege der Pokerprogramme etwas einfacher.
Ich stell den Text einfach mal hier rein und bei Interesse können wir das gern ergänzen.
-----------------------------------------------------------------------------------------------------------------------------------
PostgreSQL Einführung
- Was ist PostgreSQL?
PostgreSQL ist ein relationales Datenbanksystem, dass Anwendungen wie z.B. Pokertracker, Holdemmanager oder auch Anwendern Funktionen zur Verwaltung von Daten in relationalen Strukturen zur Verfügung stellt. Diese Verwaltung erfolgt über die SQL Abfragesprache.
Zusammengefasst heißt das, dass PostgreSQL nur die Basis für die Datenverwaltung zur Verfügung stellt und alles andere die Aufgabe der Anwendung oder des Anwenders ist. Es gibt übrigens diverse andere Datenbanksysteme, die bekanntesten dürften Oracle und Microsoft SQL Server sein, diese haben nur den Nachteil, dass sie eine nicht unerhebliche Stange Geld kosten. PostgreSQL ist dagegeben kostenlos verfügbar und außerdem sehr ausgereift und stabil.
--------------------------------------------------------------------------------------------------------------------------------
- PostgreSQL für Pokerprogramme
Fast alle Pokerprogramme benutzen PostgreSQL als Datenbanksystem. Das bedeutet, dass PostgreSQL nur EINMAL installiert werden muss und alle Pokerprogramme können die Datenverwaltung auf ihre eigene Art nutzen, d.h. sie legen ein oder mehrere Datenbanken an.
Als Einschränkung sollte hier darauf hingewiesen werden, dass es Versionsinkompatibilitäten gibt. Meines Wissens nach unterstützt der Elephant nur Postgresql Versionen 8.3.x, Der Pokerace Cache funktioniert dagegen nur mit Versionen <= 8.2.x.
--------------------------------------------------------------------------------------------------------------------------------
- Verschiedene PostgreSQL Versionen
Auf einem PC können verschiedene Versionen (z.B. eine 8.2.x und eine 8.3.x) installiert werden, diese müssen aber unterschiedliche Ports benutzen, was bei der Installation eingestellt werden muss. Der Default Port ist 5432, eine weitere PostgreSQL Version könnte z.B. 5433 benutzen.
--------------------------------------------------------------------------------------------------------------------------------
- PostgreSQL im System
Ist PostgreSQL erfolgreich installiert, läuft immer ein PostgreSQL Dienst (zu erkennen unter Systemsteuerung->Verwaltung->Dienste o.ä.). Pro PostgreSQL Installation (siehe vorher) gibt es einen solchen Dienst. Arbeitet ein Programm mit PostgreSQL, so werden weitere "postgres.exe" Prozesse gestartet, die im Taskmanager zu erkennen sind.
Es ist nicht ungewöhnlich, dass z.B. bei geöffnetem Pokerprogramm 10 oder mehr postgres.exe Prozesse laufen. Im Prinzip kann man sagen, dass für jede neue Abfrage/Datenbank oder für jeden neuen Benutzer eine neue Postgres.exe
erzeugt wird. Nach einem Rechnerneustart sollten es aber erstmal nur wenige sein.
--------------------------------------------------------------------------------------------------------------------------------
- PostgreSQL Datenverwaltung
Die gespeicherten Daten in den verschiedenen Datenbanken werden ausschließlich von PostgreSQL verwaltet und liegen im data Unterverzeichnis der PostgreSQL Installation. Grundsätzlich gilt: Finger weg von den Dateien in den PostgreSQL Unterverzeichnissen, keine Dateien löschen, keine Dateien oder Verzeichnisse verschieben wenn ihr nicht wisst was ihr tut.
Es gibt Windows Optimierungsprogramme die Dateien mit Größe 0 löschen, macht ihr dies im Postgresql Pfad wird PostgreSQL danach nicht mehr laufen. Es ist auch keine gültige Datensicherung das data Verzeichnis zu sichern
(Es gibt Wege die Datenbank daraus wieder herzustellen, das ist aber nur für Fortgeschrittene).
Wie schon gesagt obliegt die Definition der Datenbanken der Anwendung bzw. dem Anwender. Dies bedeutet, dass eine Pokertracker 2 Datenbank nicht mit einer Elephant, Pokertracker 3 oder was auch immer Datenbank kompatibel ist. Programme die Pokertracker 2 unterstützen, wie z.B. Gamblers Little Help oder PokerAce ... funktionieren daher grundsätzlich nicht mit Datenbanken von anderen Pokerprogrammen, es sei denn, dies wird explizit eingebaut, wie es z.B. bei Spadeeye gemacht wurde.
--------------------------------------------------------------------------------------------------------------------------------
- PostgreSQL Benutzer
Auf die Daten in einer Datenbank dürfen nur berechtigte Benutzer zugreifen, diese werden normalerweise bei der Installation von PostgreSQL bzw. bei der Installation eines Pokerprogramms installiert. Üblicherweise heißt dieser Benutzer postgres, das Kennwort ist abhängig vom Pokerprogramm (PT2 postgres, PT3 dbpass, HM postgrespass (?), Elephant Benutzer elephant <unbekannt
bzw. der Eingabe bei der Installation. Dieser Benutzer hat nichts mit dem normalen Windows Benutzer zu tun und wird für den Zugriff auf eine Datenbank des PostgreSQL Systems benötigt.
Beispiel: ich habe ein PostgreSQL Version 8.2.9 System installiert und der Benutzer heißt postgres mit dem Kennwort postgres (von einer Pokertracker 2 Installation). Sowohl Holdemmmanager als auch Pokertracker 3 können mit diesem Datenbanksystem arbeiten und ihre eigenen Datenbanken anlegen. Dazu muss ich den Programmen bei der Installation bzw. Konfiguration nur sagen mit welchem Benutzer dies zu erfolgen hat - im Beispiel der Benutzer postgres mit dem Kennwort postgres.
Passwort vergessen: es steht in der Registry:
HKEY_LOCAL_MACHINE\SOFTWARE\PTrack Wert PSQLPWD (je nach Version variiert die Stelle etwas, am besten nach PSQLPWD suchen).
--------------------------------------------------------------------------------------------------------------------------------
- PostgreSQL Administration
Die Verwaltung von PostgreSQL Datenbanken erfolgt soweit erforderlich und nicht von den Pokerprogrammen unterstützt über das Windows Programm pgadminIII (zu finden über das Windows Startmenü nach erfolgreicher Postgresql Installation).
Im Hauptfenster werden die installierten PostgreSQL Server angezeigt, über einen Doppelklick verbindet man
sich damit.
Jetzt kann in die verschiedenen Datenbanken verzweigt werden (anklicken). Mit rechter Maustaste sind weitere Funktionen aufrufbar. Dies sind z.B. Funktionen für die Wartung (cluster, analyze,...), Backup und Restore etc.
Hier können auch Datenbanken gelöscht werden (unwiderruflich!).
Ausserdem gibt es ein Abfrage Tool, mit dem direkt SQL Abfragen an die Datenbank gestellt werden können.
Wer Lust dazu hat, kann hier auch eigene Datenbanken definieren (die erste kleine Adressverwaltung?) und per SQL damit rumspielen.
--------------------------------------------------------------------------------------------------------------------------------
- Installation (Standalone)
Aktuelle Versionen gibt es bei
www.postgresql.org.
Im Normalfall benötigt man die Windows Installer Version (also nicht die "One Click Installer" Version!).
Link: pgInstaller
Update: für Postgresql 8.4 sollte der One Click Installer eingesetzt werden.
Einige Pokerprogramme gibt es in einer Version mit PostgreSQL und ohne. Man sollte also schon vorher wissen ob PostgreSQL bereits auf dem Rechner installiert ist oder nicht.
Vor der Installation: Eine Datenbank wird im Laufe der Zeit immer größer und benötigt je nach Handanzahl etliche Gigabyte an Speicher. Ihr solltet also schon vorher sicherstellen, dass die Installationspartition groß genug ist, evt. sollte Postgresql auf einer D: oder was auch immer Partition installiert werden.
Installation am Beispiel einer 8.3.3.1 Version ohne Ausführung aus einem Pokerprogramm heraus.
1. Zip Datei postgresql-8.3.3-1.zip komplett in ein temporäres Verzeichnis entpacken.
2. README.TXT Datei lesen und verstehen.
2a. Bei Vista Benutzerkontensteuerung ausschalten. Die Installation muss selbstverständlich als Administrator
ausgeführt werden.
3. SETUP.BAT ausführen.
4. Sprache auswählen, hier German/Deutsch
5. Meldungen lesen und verstehen, jeweils <Weiter> klicken
6. Installationsoptionen: die angewählten Optionen so lassen wie sie sind,
Wichtig ist unten die "aktuelle Position". Hier wird der Installationspfad eingestellt, also ggf.
z.B. D:\postgresql oder ähnliches einstellen.
7. Dienste Konfiguration: Hier wird die Grundinstallation für den Postgresql Hauptdienst eingestellt.
Die vorgegebenen Werte sollten unverändert bleiben, ein Kennwort für den Windowsbenutzer sollte
von euch vergeben und bestätigt werden (z.B. postgres). Dieser Benutzer ist NICHT der Benutzer, der später aus der Anwendung auf Datenbanken zugreifen will, sondern dieser Benutzer ist ein Windows Benutzer, dessen einzige Aufgabe der Start des Postgresql Dienstes ist. Ist dieser Benutzer bereits vorhanden, so muss das vorher vergebene Kennwort eingegeben werden.
Ggf. kann ein Benutzer mit dem DOS Befehl net user delete gelöscht werden. Näheres dazu findet sich in der weiter unten erwähnten Deinstallationsanleitung.
8. Datenbank Cluster initialisieren: auch hier alle Einstellungen lassen (ggf. kann der Port verändert werden),
für Netzwerkinstallationen
optional den Haken bei Adressen setzen.
Hier muss jetzt Benutzername und Kennwort für den Postgresql Datenbankbenutzer eingegeben werden.
Der Einfachheit halber kann auch hier als Kennwort postgres eingegeben und bestätigt werden.
Dieser Benutzer ist der Benutzer über den die Pokerprogramme nachher auf Daten zugreifen. Daher unbedingt die Einstellungen notieren.
9. In den folgenden Einstellungsseiten alles unverändert lassen.
10. Anschließend kann die Installation gestartet werden.
--------------------------------------------------------------------------------------------------------------------------------
Deinstallation:
How-To: Deinstallation von PostgreSQL
--------------------------------------------------------------------------------------------------------------------------------
- Updates:
Plant man ein Update seiner PostgreSQL Version solltet man vorher unbedingt immer ein Backup seiner Datenbanken machen.
Ein Update mit Datenübernahme ist nur innerhalb einer PostgreSQL Version möglich, also z.B. von 8.3.1 auf 8.3.3. Mit ein bisschen Glück funktioniert das und die Daten sind noch da. Ansonsten Deinstallation und Neuinstallation.
Bei einem Update z.B. von 8.2.x auf 8.3.x wird die neue Version parallel installiert. Es sind also folgende Vorgehensweisen möglich:
- Backup der Datenbanken, Deinstallation von alter Version, Installation von neuer Version, Einlesen der Backups über pgadminIII
oder
- Backup der Datenbanken, Installation von neuer Version auf anderem Port (z.B. 5433), einspielen der Backups über pgadminIII, (Deinstallation der alten Version, falls gewünscht).
Beim Einlesen von Backups in neueren Versionen sollte beachtet werden, dass dies nicht uneingeschränkt funktioniert. Es scheint z.B. nicht möglich zu sein, ein 8.0.x Backup direkt in eine 8.3.x Version einzuspielen! Von 8.2.x auf 8.3.x funktioniert es, wie ich aus eigener Erfahrung weiß.
--------------------------------------------------------------------------------------------------------------------------------
- Wartung von Datenbanken
Allgemein:
Eine relationale Datenbank sollte regelmäßig gewartet werden. Prinzipbedingt werden die Abfragen immer langsamer je mehr Daten in der Datenbank sind, d.h. es empfiehlt sich, Daten die nicht mehr benötigt werden zu löschen (das englische Wort dafür ist in diesem Zusammenhang purge).
Das Löschen eines Datensatzes aus einer Datenbank führt aber im Normalfall nicht dazu, dass der benötigte Speicherplatz in den Datenbankdateien frei gegeben wird, dieser wird nur als gelöscht gekennzeichnet und für neue Daten verwendet. Wenn man also Festplattenplatz zurückgewinnen will muss man weitere Maßnahmen durchführen.
Für Postgresql heißt das, es sollten die Operationen vacuum/analyze und falls unterstützt cluster durchgeführt werden. Anschließend empfiehlt es sich dann noch die Festplatte oder den Postgresql Bereich der Festplatte zu defragmentieren (falls ihr ein Defragmentierprogramm wie z.B. defraggler benutzt, das auch Verzeichnisse defragmentieren kann).
Nochmal allgemein die Vorgehensweise zur Optimierung:
- Daten löschen (purgen)
- Datenbank optimieren (vacuum/analyze und ggf. cluster)
- Festplatte defragmentieren (vorher Postgres SQL Dienst stopppen!)
Wartung mit den verschiedenen Pokerprogrammmen:
Pokertracker2:
- Löschen von Daten über Utilties -> Database maintenance & options -> purge bzw. advanced purge
- Vacuum/analyze über Utilities -> Postgresql database functions -> compress. (vacuum/analyze anwählen). Alternativ empfiehlt sich das Tool ptdefrag von HughJazz82 (siehe Sticky im Pokertracker Bereich), das auch eine Clusterung durchführt. Diese Funktionen können bei Bedarf auch über pgadminIII ausgeführt werden. Für das Clustering benötigt man aber spezielle SQL Statements.
Pokertracker3:
- Das Löschen von Daten ist zur Zeit (Beta 17) nur sehr einfach implementiert. Entweder alles löschen oder gar nichts. Dies entfällt also erstmal.
- Für die Optimierung gibt es einen eigenen Menüpunkt Database -> Housekeeping (Die Funktionen sind alternativ auch beim manuellen Import zu finden). Dort alle Optionen anwählen und je nach Datenmenge einige Minuten bis Stunden warten. Es wird auch ein Cache für den schnelleren Zugriff aufgebaut.
Holdemmanager:
- Für das Löschen von Daten gibt es in den aktuellen Versionen (1.06.03) Options -> Purge Hands
- Anschließend Options -> Vacuum/analyze database
Elephant:
- Dazu ist mir leider nichts bekannt.
Anschließend gelegentlich wie vorher beschrieben defragmentieren.
--------------------------------------------------------------------------------------------------------------------------------
- Troubleshooting:
- Wenn man keine Verbindung zur Datenbank bekommt kann dies mehre Ursachen haben:
- falscher Benutzername / Kennwort? Das sollte aus der Fehlermeldung ersichtlich sein. Standardbenutzer und -passwörter: PT2 postgres postgres, PT3 postgres dbpass, HM postgres postgrespass (?), Elephant: elephant <unbekannt>.
- Postgresql Server Dienst läuft nicht - kontrollieren in der Systemsteuerung -> Verwaltung -> Dienste (o.ä.)
Ansätze für Neustart:
- Dienst dort neu starten, alternativ auch über pgadminIII möglich
- Rechner neu starten
- Datei .\data\postmaster.pid löschen (im Postgresql Installationsverzeichnis. Es handelt sich evt. um eine versteckte Datei. Anschließend nochmal den Neustart versuchen
- Firewall / Virenscanner deaktivieren und nochmal den Neustart versuchen
- Falls es dann immer noch nicht geht ist eine tiefergreifende Analyse erforderlich. Es gibt z.B. *.LOG Dateien in den Postgresql Verzeichnissen, die Hinweise auf Fehler liefern können. Das Internet isteine ergiebige Quelle für weitere Forschungen.
- Kommt man so nicht weiter hilft am besten eine Deinstallation und Neuinstallation. Die Daten könnten dabei natürlich verloren gehen.
- Partition voll
Es gibt eine Anleitung wie das Postgresql Verzeichnis auf eine andere Partition verschoben werden kann.
Aber: bei vielen hat das nicht geklappt (bei anderen schon) - daher vorher unbedingt Backups machen und die Anleitung genauestens befolgen.
Monarco hat freundlicherweise eine automatische Übersetzung erstellt, die ich hier reinkopiert und ein bisschen ergänzt habe:
>>
Schritt 1: Machen sie ein Backup Ihrer aktuellen Datenbanken (nur für den Fall).
Schritt 1A: Beenden aller Pokerprogramme und stoppen des PostgreSQL Server Dienstes in der Systemsteuerung
oder über pgadminIII
Schritt 2: Kopieren (nicht ausschneiden/einfügen, also nicht im ursprünglichen Verzeichnis löschen) sie ihr gesamtes "Data"-Verzeichnis auf die neue Partition. Ich gehe davon aus, dass es D:\Data sein wird.
Anschließend kann dieses neue Verzeichnis umbenannt werden, z.B. statt D:\Data können Sie es D:\Postgres82-Daten nennen. Ich empfehle, dass der neue Dateiname keine Leerzeichen enthält, da dieses nur Probleme verursachen wird.
Wichtig bei Problemen: Der Besitzer dieses Ordners sollte der Benutzer postgres sein, unter XP Home kann man das nicht über die Sicherheitseinstellungen ändern, dafür z.B. folgendes Tool einsetzen: http://www.fajo.de/portal/index.php?lang=de&option=content&task=view&id=6&Itemid=0
In Ihrem neuen Verzeichnis auf D finden Sie 5 Dateien:
postmaster.opts
PG_VERSION
pg_hba.conf
pg_ident.conf
postgresql.conf
Sie sollten die *. conf Dateien löschen. Sie können die Postmaster-Datei auch löschen
(sie wird sich automatisch neu erstellen). Löschen Sie nicht die PG_VERSION Datei.
Gehen Sie zurück in das ursprüngliche Daten-Verzeichnis auf C:
Löschen Sie dort alle Unterverzeichnisse und PG_VERSION zusammen mit postmaster.opts.
Dort sollten nur noch die 3 conf Dateien seien und sonst nichts.
Öffnen sie Postgresql.conf in einem Texteditor.
Ganz oben gibt es einen Abschnitt namens:
#------------------------------------------------- --------------------------
# FILE LOCATIONS
#------------------------------------------------- --------------------------
In diesem Abschnitt gibt es eine Zeile, welche so beginnt:
# data_directory =
Sie können entweder diese Zeile ersetzen oder ganz einfach eine neue Zeile einfügen
(also bleibt die ursprüngliche Zeile als Referenz zurück, auch wenn das in diesem Fall nichts bringt)
Die Neue Zeile sollte wie folgt aussehen:
data_directory = 'D:/Data' # use data in another directory
oder
data_directory = 'D:/data-PostGres82' # use data in another directory
oder was auch immer. Geben sie nur den Pfad Ihres neuen Daten-Verzeichnisses an.
HINWEIS Achten sie auf die Richtung der Schrägstriche oben, und vergessen Sie nicht die einfachen Anführungszeichen (obwohl, wenn Sie keine Leerzeichen im Namen haben, dürften sie nicht erforderlich sein). Wenn Sie "normale" Windows Schrägstriche nehmen, müssen Sie sie verdoppeln, glaube ich. Ich weiß, dass es mit umgekehrten Schrägstriche funktioniert.
Starten Sie Postgres neu und es sollte gut gehen. Wenn Sie ein Problem haben überprüfen Sie die Berechtigungen für das Verzeichnis, in dem neuen Standort und stellen Sie sicher, dass der Postgres-Benutzer die volle Kontrolle über das neue Verzeichnis hat (und alle Unter-Verzeichnisse und Dateien). Aber ich glaube dies sollte kein Problem sein.
Zusatz: in neueren Postgresql Versionen muss zusätzlich der Pfad zum data Verzeichnis im folgenden Registry Schlüssel angepasst werden:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services
>> Ende der Anleitung
--------------------------------------------------------------------------------------------------------------------------------
- SQL Tuning
Warnung: fehlerhafte Änderungen an den Konfigurationsdateien können dazu führen, dass der Dienst nicht mehr startet!
(ein Beitrag von TBone98:
SQL Tuning - so geht's!!!)
(übersetzt aus dem Pokertracker Forum)
Standardmäßig sind die PostgreSQL Settings so eingestellt, dass die Datenbank auch auf älteren Systemen problemlos läuft. Durch Anpassen einiger Memory-Parameter kann ein Performancesprung erzielt werden.
Dazu öffnet man die "postgresql.conf" Datei, die sich im SQL-Verzeichnis im "Data"-Ordner befindet. Wahlweise kann man sie auch über Start->Programs->PostgreSQL->Configuration Files->Edit postgresql.conf öffnen!
Dort müssen folgende Werte geändert bzw. gesetzt werden:
1) "shared_buffers = xMB" und setzt den Wert auf 1/4 des vorhandenen Arbeitsspeichers. Bei 2GB sind das 512MB.
2) "work_mem = xMB" und setzt diesen Wert auf 1/64 des vorhandenen Arbeitsspeichers (also 32MB bei 2GB)
3) "maintenance_work_mem = xMB" und setzt diesen Wert auf 1/16 des vorhandenen Arbeitsspeichers (128MB bei 2GB)
Achtung!!!!:
Bei den Punkten 2) und 3) ist darauf zu achten, dass das "'#"-Zeichen (=Kommentarzeichen) am Anfang der Zeile entfernt werden MUSS, damit die Änderung auch wirksam wird. Vor den Änderungen empfiehlt es sich wie immer, eine Sicherheitskopie zu machen.
Danach die Datei abspeichern und die SQL-Konfiguration per
Start->Programs->PostgreSQL->Reload Configurations
neu starten.
Oder den Postgresql Server Dienst neu starten
Oder den Rechner neu starten.
Für Vista-User:
Wenn ihr ne Fehlermeldung beim Versuch die Datei zu speichern bekommt, müsst ihr die "postgresql.conf" als Admin öffnen. Dazu rechtsclickt ihr die Start->Programs->PostgreSQL->Configuration Files->Edit postgresql.conf und wählt "Run as administrator".
Linux-User:
Wenn ihr PostgreSQL auf Linux laufen habt, kann folgende Fehlermeldung erscheinen:
"
EDT DETAIL: Will not verify client certificates.
EDT FATAL: could not create shared memory segment: Invalid argument
EDT DETAIL: Failed system call was shmget(key=5432001, size=549330944, 03600)."
In diesem Fall müsst ihr in "/etc/sysctl.conf" die folgende Zeile editieren:
"kernel.shmmax = N"
Hier muss "N" so verändert werden, dass der Wert größer ist als der Wert, den ihr gerade bei "shared_buffers" in der "postgresql.conf" eingetragen habt. Dabei ist darauf zu achten, dass hier die Größe nicht in MEGAbytes sondern in Bytes angegeben werden muss. Habt ihr in der "postgresql.conf" also 512MB eingetragen, solltet ihr hier "kernel.shmmax = 550000000" setzen. Den Mindestwert hierfür könnt ihr auch aus der Fehlermeldung aus dem Wert "size=X" entnehmen.
Ergänzung 22.11.08: im PT3 Forum gibt es einen
Artikel zum Tuning der Postgresql Datenbank
--------------------------------------------------------------------------------------------------------------------------------
Nützliche Links
Deutschsprachiges Postgresql Forum.
-------------------------------------------------------------------------------------------------------------------------------------------------------