Vous n'êtes pas identifié(e).
Pages : 1
Bonjour à tous,
je utilise postgreSQL 8.1.4.
L'installation à été réalisée sur le /etc/postgresql/8.1/
Donc les données sont sauvegardées dans le répertoire
/etc/postgresql/8.1/main/pgdata.
Ce que moi je voudrais pouvoir faire, c'est que toutes les données de toutes mes bases, soient sauvegardées sur la partition /usr/local/pgsql.
Tout en sachant que postgres fonctionne déjà avec des bases de données d'autres applications
Comment faire?
Merci d'avance pour vos réponses
Hors ligne
PostgreSQL te permet de créer des tablespaces, c'est à dire des espaces de stockage.
Par exemple :
CREATE TABLESPACE espace_secondaire LOCATION '/usr/local/pgsql';
Tu peux ensuite décider déplacer n'importe quel objet ( tables, index, fonction ) dans ce nouvel espace :
ALTER TABLE t1 SET TABLESPACE espace_secondaire;
Plus d'info : http://docs.postgresqlfr.org/8.1/manage … paces.html
damien clochard
http://dalibo.org | http://dalibo.com
Hors ligne
PostgreSQL te permet de créer des tablespaces, c'est à dire des espaces de stockage.
Par exemple :CREATE TABLESPACE espace_secondaire LOCATION '/usr/local/pgsql';
Tu peux ensuite décider déplacer n'importe quel objet ( tables, index, fonction ) dans ce nouvel espace :
ALTER TABLE t1 SET TABLESPACE espace_secondaire;
Plus d'info : http://docs.postgresqlfr.org/8.1/manage … paces.html
Merci pour vos réponses
En fait ce que je voulais ce n'est pas de créer un espace secondaire mais plutôt de déplacer l'espace principal.
car malheureusement la personne qui avez installé postgresql l'avait fait sur la partition système et il n'a plus espace et je dois déplacer doit les données déjà existantes.
En cherchant dans les forums j'ai vue une solution sous Windows alors que moi je suis sur Debian
Solution windows
- Il faut stopper ton service postgresql
- copier tout le contenu de C:\Program Files\PostgreSQL\8.1\data dans E:\PostgreSQL\DATA
- aller dans le regedit HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\pgsql-8.1
et modifier la chaine ImagePath
"C:\Program Files\PostgreSQL\8.1\bin\pg_ctl.exe" runservice -N "pgsql-8.1" -D "C:\Program Files\PostgreSQL\8.1\data\"
en
"C:\Program Files\PostgreSQL\8.1\bin\pg_ctl.exe" runservice -N "pgsql-8.1" -D "E:\PostgreSQL\DATA\"
- dans HKEY_LOCAL_MACHINE\SOFTWARE\PostgreSQL\Services\pgsql-8.1
modifier la chaine Data Directory
- dans HKEY_LOCAL_MACHINE\SOFTWARE\PostgreSQL\Installations\{un GUID}
modifier la chaine Data Directory
Avant de relancer le service, il faut donner les droits d'ecriture sur ce nouvel emplacement à l'user postgres
par exemple en utilisant cette commande : cacls E:\PostgreSQL\DATA /T /E /G postgres:C
si tu veux creer une base vide à un autre emplacement, c'est la meme procedure mais d'abord un petit initdb :
initdb -D E:\PostgreSQL\DATA
Merci d'avance
Hors ligne
Merci pour vos réponses
En fait ce que je voulais ce n'est pas de créer un espace secondaire mais plutôt de déplacer l'espace principal.
car malheureusement la personne qui avez installé postgresql l'avait fait sur la partition système et il n'a plus espace et je dois déplacer doit les données déjà existantes.
En cherchant dans les forums j'ai vue une solution sous Windows alors que moi je suis sur Debian
Solution windows
- Il faut stopper ton service postgresql
- copier tout le contenu de C:\Program Files\PostgreSQL\8.1\data dans E:\PostgreSQL\DATA
- aller dans le regedit HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\pgsql-8.1
et modifier la chaine ImagePath
"C:\Program Files\PostgreSQL\8.1\bin\pg_ctl.exe" runservice -N "pgsql-8.1" -D "C:\Program Files\PostgreSQL\8.1\data\"
en
"C:\Program Files\PostgreSQL\8.1\bin\pg_ctl.exe" runservice -N "pgsql-8.1" -D "E:\PostgreSQL\DATA\"
- dans HKEY_LOCAL_MACHINE\SOFTWARE\PostgreSQL\Services\pgsql-8.1
modifier la chaine Data Directory
- dans HKEY_LOCAL_MACHINE\SOFTWARE\PostgreSQL\Installations\{un GUID}
modifier la chaine Data Directory
Avant de relancer le service, il faut donner les droits d'ecriture sur ce nouvel emplacement à l'user postgres
par exemple en utilisant cette commande : cacls E:\PostgreSQL\DATA /T /E /G postgres:C
si tu veux creer une base vide à un autre emplacement, c'est la meme procedure mais d'abord un petit initdb :
initdb -D E:\PostgreSQL\DATA
Merci d'avance
Hors ligne
Il ne te reste donc plus qu'à transposer. Tu arrêtes PostgreSQL, tu copies le répertoire là où tu le souhaites (cp -r /etc/postgresql/8.1/main/pgdata /le/bon/endroit/pour/pgdata), tu renommes ton ancien répertoire de données (mv /etc/postgresql/8.1/main/pgdata /etc/postgresql/8.1/main/pgdata.old) et tu fais un lien du répertoire copié vers l'ancien nom (ln -s /le/bon/endroit/pour/pgdata /etc/postgresql/8.1/main/pgdata) puis tu relances PostgreSQL.
Attention aux droits et utilisateurs des fichiers/répertoires copiés.
Guillaume.
Hors ligne
Merci pour vos réponses
En fait ce que je voulais ce n'est pas de créer un espace secondaire mais plutôt de déplacer l'espace principal.
car malheureusement la personne qui avez installé postgresql l'avait fait sur la partition système et il n'a plus espace et je dois déplacer doit les données déjà existantes.
En cherchant dans les forums j'ai vue une solution sous Windows alors que moi je suis sur Debian
Solution windows
- Il faut stopper ton service postgresql
- copier tout le contenu de C:\Program Files\PostgreSQL\8.1\data dans E:\PostgreSQL\DATA
- aller dans le regedit HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\pgsql-8.1
et modifier la chaine ImagePath
"C:\Program Files\PostgreSQL\8.1\bin\pg_ctl.exe" runservice -N "pgsql-8.1" -D "C:\Program Files\PostgreSQL\8.1\data\"
en
"C:\Program Files\PostgreSQL\8.1\bin\pg_ctl.exe" runservice -N "pgsql-8.1" -D "E:\PostgreSQL\DATA\"- dans HKEY_LOCAL_MACHINE\SOFTWARE\PostgreSQL\Services\pgsql-8.1
modifier la chaine Data Directory- dans HKEY_LOCAL_MACHINE\SOFTWARE\PostgreSQL\Installations\{un GUID}
modifier la chaine Data DirectoryAvant de relancer le service, il faut donner les droits d'ecriture sur ce nouvel emplacement à l'user postgres
par exemple en utilisant cette commande : cacls E:\PostgreSQL\DATA /T /E /G postgres:Csi tu veux creer une base vide à un autre emplacement, c'est la meme procedure mais d'abord un petit initdb :
initdb -D E:\PostgreSQL\DATA
Merci d'avance
BONJOUR
Je cite : "Avant de relancer le service, il faut donner les droits d'ecriture sur ce nouvel emplacement à l'user postgres
par exemple en utilisant cette commande : cacls E:\PostgreSQL\DATA /T /E /G postgres:C"
Ma question: je tape ca ou ? je suis sous windows seven
Parceque je n'ai pas fait cette étape , et quand je lance le service, j'ai le droit a ce message : erreur systeme 5 acces refusé
Merci
Dernière modification par kwantum (19/09/2009 18:10:51)
Hors ligne
Dans une ligne de commande (cmd.com), si ça existe toujours sous seven
Marc.
Hors ligne
Dans une ligne de commande (cmd.com), si ça existe toujours sous seven
Salut marc ,merci pour ta réponse.
j'ai essayé dans cmd, mais vu que ca m'affichait que calcs n'est pas reconnu en tant que commande interne ou externe, je me suis dit qu'on devait peu etre taper ca ailleurs.
Après 2 heures a chercher sur le net, j'ai opté pour cette solution : réinstallation depostgre sur ma partition "non systeme" et réimportation de toutes mes donnés dans la nouvelle base.
Mais bon, c'est super long et j'aimerais bien savoir le faire histoire de ne pas devoir réimportés toutes mes donnés a chaque restauration de mon image systeme.
Hors ligne
Honnêtement je n'en sais rien. Cela fait très longtemps que je n'utilise plus windows.
Peut être quee cacls a été remplacé par autre chose dans windows seven ?
Marc.
Hors ligne
Honnêtement je n'en sais rien. Cela fait très longtemps que je n'utilise plus windows.
Peut être quee cacls a été remplacé par autre chose dans windows seven ?
Re, j'y ai pensé aussi mais sans avoir réussi a trouver hier, mais après avoir lu ton petit message j'ai réessayer et .....bingo. Il semblerait que ce soit Icalcs désormais. Donc merci a toi, je devrais pouvoir me débouiller maintenant. Bye
Hors ligne
Pages : 1