Das geht eigentlich genauso wie unter allen andere Betriebssystemen auch.
initdb aufrufen um das Datenverzeichnis (=Cluster/Instanz) zu erstellen, dabei sicherstellen dass ein anderer TCP Port verwendet wird.
Wenn die Instanz automatisch gestartet werden soll, dann noch einen Windows Service erstellen.
Mit dem folgenden Befehl wird ein neues Datenverzeichnis unter
c:\Daten\Postgres\inst2 erstellt und als Authentifizierungsmethode "MD5" gewählt:
Code:
"c:\Program Files\PostgreSQL\10\bin\initdb.exe" -U postgres -D c:\Daten\Postgres\inst2 -E UTF8 -A md5
initdb fragt dann nach dem Passwort des superusers "postgres". Das musst Du dann manuell eingeben (und merken!)
Am sichersten ist es wenn Du dann
c:\Daten\Postgres\inst2\postgresql.conf editierst und den TCP Port auf etwas anderes als 5432 änderst. Z.B. 5433
Wenn Du die Instanz immer manuell starten und stoppen willst, brauchst Du nichts weiter tun.
Starten geht dann mit:
Code:
"c:\Program Files\PostgreSQL\10\bin\pg_ctl.exe" start -D c:\Daten\Postgres\inst2
Stoppen mit:
Code:
"c:\Program Files\PostgreSQL\10\bin\pg_ctl.exe" stop -D c:\Daten\Postgres\inst2
Der Windows Service wird auch über pg_ctl eingerichtet:
Code:
"c:\Program Files\PostgreSQL\10\bin\pg_ctl.exe" register -D c:\Daten\Postgres\inst2 -N PostgresInstanz2
Das geht natürlich nur wenn Du vorher die Kommandozeile als Administrator gestartet hast (alle anderen Befehle solltest Du
nicht als Administrator ausführen!)
Falls der Service nicht startet, musst Du die Berechtigungen auf dem Datenverzeichnis überprüfen. In 90% der Fälle ist das der Grund warum eine derart installierte Instanz nicht startet.
Details zu initdb und pg_ctl findest Du im Handbuch: