Hallo,
ich hab das noch nicht ganz kappiert. Ich möchte eine postgres-postgis Datenbank – unter debian lenny – aufsetzen und weiß, dass die Datenmenge den Platz in meiner /var übersteigt. Deshalb habe ich eine leere Partition meiner Festplatte als /Daten eingehängt.
Ich hab mit
$ /usr/lib/postgresql/8.3/bin/postgres -D /Daten/pgsql/data/
LOG: Datenbanksystem wurde am 2009-01-05 23:26:18 CET heruntergefahren
LOG: Autovacuum-Launcher startet
LOG: Datenbanksystem ist bereit um Verbindungen anzunehmen
gestartet.
Wie komme ich jetzt dort als user rauf und erzeuge eine Datenbank? Mit createdb … erzeuge ich doch eine datenbank die dann im cluster unter /var/lib… liegt, oder?
Oder sollte ich doch kein neues cluster erzeugen und den ordner unter /var/lib nach /Daten kopieren und einen symlink zurück nach /var/lib legen?
Danke
Torsten
Nein, Mit initdb erzeugst Du einen DB-Cluster, in diesem liegen dann die einzelnen Datenbanken.
Eine Instance von PG verwaltet einen Cluster.
Oder sollte ich doch kein neues cluster erzeugen und den ordner unter /var/lib nach /Daten kopieren und einen symlink zurück nach /var/lib legen?
Danke
Torsten
Je nachdem, was Du machen willst. Wenn vorhandene Daten erhalten bleiben sollen und nur weiterer Platz geschaffen werden soll, kannst Du das entweder mit dem kopieren und dem Symlink machen oder für neue Datenbanken/Tabellen/Indexe einfach neue Tablespaces auf Deiner neuen Platte nutzen. Mit verschiedenen Tablespaces zu arbeiten hätte zudem noch den Vorteil, schneller zu sein (Aufteilen von Tabellen und Indexe auf versch.Tablespaces und damit Platten)
.oO( kann es sein, daß Dir das aber auch schon gestern im IRC erklärt wurde? )
Jetzt nachdem ich weiß, dass es so etwas gibt würde ich das gern machen. Ich weiß nur noch nicht wie. Wenn ich als # su postgres
$ CREATE TABLESPACE eingebe bekomme ich: bash: CREATE: command not found
Hab ich noch was vergessen zu installieren oder muss man das anders machen?
Danke
Torsten
Du landest nach su - postgres in einer normalen Shell, hier der bash. In dieser mußt Du psql starten und in psql Dein CREATE TABLESPACE machen. Als Einzeiler:
su - postgres -c "psql template1 -c 'create tablespace ...'"
ungetestet, sollte aber gehen. Anschaulicher ist es aber, psql interaktiv zu benutzen.
Danke Andreas,
ich bin bis jetzt davon ausgegangen, mit su postgres schon in einer postgres-shell zu sein.
Jetzt habe ich aber das Problem, das postgres und ich als user keine Schreibberechtigung zu haben scheine
postgres=# CREATE TABLESPACE digit OWNER torsten LOCATION '/Daten/pgsql/data'
;
FEHLER: konnte Zugriffsrechte für Verzeichnis »/Daten/pgsql/data« nicht setzen: Die Operation ist nicht erlaubt
Der Ordner /Daten gehört aber mir als user. Zu welcher Gruppe gehört postgres und die postgresql-user per default auf einem debian?
Was ist grundsätzlich noch zu beachten wenn ich auf einem Speichermedium schreib- und lesezugriff als postgresuser haben will?
Danke
Torsten
Ich muss mich hier mal einmischen: deine Probleme sind nur sehr bedingt auf PostgreSQL basierend. Du solltest schon wissen, wie man mit einem Unix-System umgeht, bevor du dich an dessen Nutzung (in dem Fall PostgreSQL) wagst.
All die Fehler, die du bisher hattest sind Probleme der Systemadministration, nicht der Datenbank.
Stimmt. Sie sind aber trotzdem, wenn auch nur bedingt, mit PostgreSQL verknüpft. Schön, dass Andreas mir mitteilte, dass das Verzeichnis dem gehören sollte der den Server-Prozess laufen läßt. Danke Andreas. Das ist dann wohl eher ein PostgreSQL auf einem System (hier Debian) Problem und konnte, soweit ich das sehe und sah, nicht mit Wissen über das BS behoben werden. Ich frag ja gar nicht wie ich die Eigentümer und Rechte der Dateien in meinem BS festlegen kann…
Ich bin halt absoluter Anfänger was Datenbanken im Allgemeinen und PostgreSQL im besonderen betrifft. Soll/kann ich das noch irgendwohin schreiben um nicht allzusehr zu nerven?
Das wäre allerdings dann wirklich Offtopic, daher lese ich Dir die man-page von chown & chmod auch nicht vor.
Allgemein: versteh, daß es sich um einen Server handelt. Der kann ja auch woanders laufen als Dein Client (hier psql), und damit ist dann wohl auch klar, daß da ein anderer User für den Serverprozeß verantwortlich ist.
Ich bin halt absoluter Anfänger was Datenbanken im Allgemeinen und PostgreSQL im besonderen betrifft. Soll/kann ich das noch irgendwohin schreiben um nicht allzusehr zu nerven?
Dort sind die Parameter und die Bedingungen im einzelnen erklärt.
Das ist dann wohl eher ein PostgreSQL auf einem System (hier Debian) Problem und konnte, soweit ich das sehe und sah, nicht mit Wissen über das BS behoben werden.
Ich entschuldige mich, der Eindruck kam jedenfalls auf, da du vorher auch nichts mit der Fehlermeldung der Shell anfangen konntest.
Ich bin halt absoluter Anfänger was Datenbanken im Allgemeinen und PostgreSQL im besonderen betrifft.
Mal anders herum gefragt: was weisst du bereits und wo schaust du nach, wenn du auf Probleme stößt? Ist dir die umfangreiche Online Dokumentation bekannt?