PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#3276 Re : Général » PGPOOL commencement » 06/10/2011 16:29:36

S'il s'agit d'une réplication complète je vous conseillerais d'ailleurs fortement d'utiliser la réplication interne de Postgresql qui est très efficace et très simple à mettre en place.

#3277 Re : Général » Deux erreurs détectées dans la documentation » 06/10/2011 16:08:13

Comme le disait Guillaume, il faut s'assurer que le log_min_message ou le client_min_messages soit à notice.

Sinon dans pgAdmin, les raise s'affichent dans l'onglet "Messages" et non pas dans l'onglet "Sortie de données".

#3278 Re : Général » Transfert d'une base de donnée d'un ordinateur perso vers un serveur » 06/10/2011 15:43:15

Mais ensuite, je me suis souvenu que vers la toute fin de l'installation de PostgreSQL sur ce serveur, j'ai eu une erreur ;"le lancement post-installation n'a pas pu être réalisé, l'installation est peut être incomplete". J'ai essayer de réinstaller le logiciel, mais la même erreur s'est produite.

L'erreur "le lancement post-installation n'a pas pu être réalisé" est souvent lié aux droits de lecture/écriture sur le répertoire DATA de votre installation postgresql. Assurez-vous que les droits ntfs sont corrects avec l'utilisateur postgres avant de réinstaller la base de donnée.

#3279 Re : Général » Deux erreurs détectées dans la documentation » 06/10/2011 14:16:58

guk92 a écrit :

FOR i IN REVERSE 3..1 LOOP
    NOTICE RAISE 'valeur de i : %', i;
END LOOP; -- Fin de la boucle FOR


END;
$$ LANGUAGE plpgsql;


SELECT p_boucleFor();
Rien ne s'affiche sous Query, pourquoi ?

Il faut faire un RAISE NOTICE et non un NOTICE RAISE

#3280 Re : Général » PGPOOL commencement » 06/10/2011 12:21:59

Juste en précision, ce sont les "wal" (write-ahead log) et non les wall. En cas de recherche ça vous simplifiera la vie smile

#3281 Re : PL/pgSQL » IN et LIKE » 06/10/2011 09:48:24

Vous pouvez sinon écrire une requête du genre :
SELECT * FROM livre
JOIN (SELECT 'PUBLICITE' as lib UNION SELECT 'CINEMA' UNION SELECT 'PECHE') source ON libre."LIBELLE" like '%' || source.lib || '%'

même si cela reste peu pratique.

#3282 Re : Général » Transfert d'une base de donnée d'un ordinateur perso vers un serveur » 05/10/2011 22:03:40

afrofip a écrit :
rjuju a écrit :

Quelques options sont à modifier selon que la base de donnée est déjà créée ou non sur le serveur distant.
Le dump copiera les données de la base mais pas les informations de rôle de connexion.

Merci rjuju. Si je comprend bien:
- j'ouvre psql
- je rentre la premiere commande pour copier ma base de donnée
- je rentre la seuxieme commande pour "l'enregistrer" sur le serveur.

Par contre, j'aimerais justement savoir quels sont les options à modifier, puisque la base de donnée n'est pas encore crée sur le serveur?

Non, ce sont des exécutables windows, il faut donc les lancer en ligne de commande.

Pour les options, est-ce que le serveur est déjà installé ? oui a priori s'il y a un utilisateur postgres existant.
Pour les options différents, il faut rajouter un -C (sensible à la casse) pour dire de créer la base de donnée cible

la commande est donc
pg_dump -C -Fc -h votre_ip nom_de_la_base > sauvevegarde.backup

et le restore se fera comme ça :

pg_restore -h serveur_distant -f sauvegarde.backup -d postgres

l'aide est la : http://docs.postgresqlfr.org/9.0/app-pgdump.html et http://docs.postgresqlfr.org/9.0/app-pgrestore.html

#3283 Re : Général » Transfert d'une base de donnée d'un ordinateur perso vers un serveur » 05/10/2011 20:40:33

afrofip a écrit :

1. Qu'est ce que je dois faire pour transferer ma base de donnée (définition de la base + données déjà presentes) de mon ordinateur
        personnel vers le serveur distant, sans ecraser le mot de passe du compte postgres dejà installé sur le serveur distant? Quels fichiers
        dois-je copier?

Il faut faire un dump de la base de donnée voulue, et la restaurer sur le serveur distant (via pg_dump et pg_restore et non directement par les fichiers du disque).
Les commandes seraient pg_dump -Fc -h votre_ip nom_de_la_base > sauvevegarde.backup
puis
pg_restore -h serveur_distant -f sauvegarde.backup -d nom_de_la_base

Quelques options sont à modifier selon que la base de donnée est déjà créée ou non sur le serveur distant.
Le dump copiera les données de la base mais pas les informations de rôle de connexion.

afrofip a écrit :

2. Quand j'ouvre l'executable de pdAdminIII situé sur le serveur distant à partir de mon ordinateur personnel, ce n'est pas les
       données du serveur distant qui s'affichent (d'ailleurs, comme je l'ai dit,  je n'ai encore rien créer dessus), mais plutôt celle du répertoire
       postgreSQL de MON ordinateur personnel. Pourrais-je en savoir la cause?

La visualisation des données via pgAdmin n'est pas lié de la ou vous lancez l'exécutable, mais du serveur configuré. Je pense que vous avez une configuration du type postgres@votre_ip:5432. Pour voir les données du serveur distant, vous pouvez le faire depuis votre ordinateur personnel en ajoutant un second serveur et en mettant dans "hote" le dns ou l'ip du serveur distant.

#3284 Re : Général » PGPOOL commencement » 04/10/2011 16:44:43

Oui c'est cela, à part que ce n'est pas forcément la même database. Ca permet d'avoir des serveurs esclaves avec moins d'espace disque et de ne répliquer qu'une partie des données par exemple, ou d'avoir un serveur avec des disques plus rapides pour une table très fortement sollicitée ou ce genre de choses.

Cela permet également de ne répliquer qu'une seule database, ce qui n'est pas possible via la réplication intégrée à postgresql.

#3285 Re : Général » PGPOOL commencement » 04/10/2011 16:32:38

Slony permet également de la réplication sélective, sur un ou plusieurs serveurs ce qui peut parfois être intéressant.

#3286 Re : Installation » Postgres et holdem manager » 04/10/2011 14:37:20

En fait, ton installation n'a pas marchée (le initdb a échoué) et donc Postgresql ne peut pas se lancer.
Il faudrait que tu refasses une installation complète en vérifiant les droits sur le répertoire ou tu places le répertoire DATA si c'est la cause de l'erreur, ou alors faire un initdb à la main (http://docs.postgresqlfr.org/9.0/app-initdb.html) sur ce même répertoire.

#3287 Re : Installation » Postgres et holdem manager » 04/10/2011 14:09:58

Sinon l'erreur retournée dans l'observateur d’évènement s'il y a quelque chose pour postgresql.

#3288 Re : Général » PGPOOL commencement » 03/10/2011 14:17:51

A noter également que pgBouncer permet du pool de connexion sur 3 niveaux : à la requête, à la transaction et à la session (pgPool lui ne fait que du pool à la session je crois).

#3289 Re : Général » PGPOOL commencement » 03/10/2011 12:27:28

genio a écrit :

Bonjour à tous...
ici nous commençons à parler de PGPOOL et j'ai commencé a voir tout ça sur internet...
Sur ce que j'en ai lu, pouvez-vous me confirmer (ou pas !) mes interrogations suivantes :

1°) C'est un produit qui optimise les temps de connexions
2°) Il répartit les connexions au mieux
3°) il les 'partage', dans le sens où il conserve une connexion existante pour la donner/l'associer à une nouvelle qui arrive...
4°) Est-ce vraiment un produit qui accélère les connexion (à peu près quel ratio ?)
5°) Existe t'il sur d'autre os que la Débian ?

Merci pour vos réponses...

Bonjour
pgPool est un outil qui peut faire beaucoup de choses différentes, dont du pool du connexion et de la répartition de charges.
Il permet ainsi de gagner du temps en conservant une connexion ouverte, ce qui évite de passer du temps à en recréer une plus tard, ce qui est particulièrement efficace pour les bases de données qui ont beaucoup de connexions qui durent très peu de temps (frontal web par exemple).

Sinon, il peut tourner sur n'importe quel linux.

Pour le reste, je ne sais pas trop comment se passe la répartition de charge je ne m'avancerai donc pas.

#3290 Re : Général » message d'erreur sauvegarde pg_dump » 03/10/2011 12:09:00

Pascal24 a écrit :

Pour une sauvegarde complète d'une base de donnée que préconnisez- comme option et au plus simple ?

Si vous voulez sauvegarder uniquement une base de donnée, le pg_dump suffit, mais les objets globaux (roles de connexion, tablespaces etc) ne seront pas sauvegardés.

Vous pouvez utiliser un pg_dumpall -g pour sauvegarder les objets globaux en plus de cette sauvegarde de base.

Un pg_dumpall sauvegarde l'instance entière (toutes les bases + objets globaux) mais ne compresse pas les données et rend la sauvegarde très volumineuse.

#3291 Re : Général » Optimisation d'un id de table et l'insertion d'une nouvelle ligne » 01/10/2011 19:35:14

Je viens de tester et la séquence fait son travail avant même le déclenchement du trigger BEFORE INSERT.
Si tu veux vraiment continuer sur ce principe, il te faut donc faire un trigger AFTER INSERT comme tu avais fait précédemment (qui se lancera alors même si la séquence a été utilisée), ou alors coder ton application de manière a ce que seule la séquence soit utilisée en INSERT, et gérer de façon propre tes UPDATE pour qu'il n'y ait pas de soucis.

#3292 Re : Général » Optimisation d'un id de table et l'insertion d'une nouvelle ligne » 01/10/2011 19:10:33

K-LiBR3 a écrit :

ok merci gleu, une dernière question et je te laisse x)

Ce que je voudrais faire, c'est juste savoir dans ma procédure si l'utilisateur écrit
ça : INSERT INTO table1(id,nom) VALUES(2,'blabla1'); -- à ce moment là je devrai mettre à jour last_value
ou ça : INSERT INTO table1(nom) VALUES('blabla1'); -- le serial fait le travail

Cette procédure ressemblerai à ça :

CREATE OR REPLACE FUNCTION updateNextvalTable1()
RETURNS TRIGGER
AS $$
DECLARE
	val integer;
BEGIN
	if(NEW.id > 0) then
		SELECT max(id) INTO val FROM table1;
		val = val + 1;
		EXECUTE 'ALTER SEQUENCE table1_id_seq RESTART WITH ' || val;
	end if;
	RETURN NEW;
END; $$ language 'plpgsql';

CREATE TRIGGER TriggerUpdateNextvalTable1
AFTER INSERT
ON table1
FOR EACH ROW EXECUTE PROCEDURE updateNextvalTable1();

problème : mon if fonctionne dans tout les cas ! Donc last_value se mettra à jour alors qu'il est deja à jour si je tape mon insert sans precisé l'id !

Le probème vient que ton trigger se lance après l'insert, c'est-à-dire une fois que la séquence a fait son travail, et il est alors impossible de différencier les 2 utilisations. Peut-être qu'en faisant le trigger BEFORE INSERT tu peux différencier les 2 cas mais je n'ai jamais testé et je ne peux pas te répondre, même si j'aurais tendance à penser que le new.ID serait à NULL et non pas à 0. Peut-être que Guillaume aura une réponse sure.

#3293 Re : Général » Optimisation d'un id de table et l'insertion d'une nouvelle ligne » 01/10/2011 19:01:51

K-LiBR3 a écrit :

En fait pas vraiment, j'ai pris conscience que "combler les trous" ne servait à rien, par contre ce qu'il m'arrive de faire assez souvent, c'est de modifier l'ordre des lignes. Exemple :

ligneA d'id 1
ligneB d'id 2
ligneC d'id 3

Je veux mettre ligneB en dernière position, alors j'obtiendrai ça :

ligneA d'id 1
ligneC d'id 3
ligneB d'id 4 -- erreur lors du prochain insert car last_value n'est pas à jour

Peut être me conseillera tu de mettre un champ "position integer" mais je trouve ça moins propre !

Effectivement mon premier réflexe serait de te conseiller un autre champ pour gérer la position, pour ne pas mélanger un identifiant de ligne avec une valeur fonctionnelle, ou éviter des problème de propagation de clé étrangères (ON UPDATE CASCADE). A tous hasard est-ce un choix d'ordre subjectif ou y aurait-il une autre zone sur laquelle tu pourrais exercer un tri (date, valeur ...) ?

#3294 Re : Général » Optimisation d'un id de table et l'insertion d'une nouvelle ligne » 01/10/2011 18:41:37

Oui, c'est vrai que je n'ai pas répondu à la question désolé, mais sauf cas exceptionnel je pense qu'il est mieux de garder le fonctionnement de base des séquences et de toucher le moins possible aux champs liés, et c'est en ce sens que j'intervenais.

#3295 Re : Général » Optimisation d'un id de table et l'insertion d'une nouvelle ligne » 01/10/2011 18:01:53

Effectivement lors d'une mise à jour de ce champ la séquence n'est pas mise à jour, mais c'est normal car un champ de type serial n'a pas vocation a être mis à jour. Est-ce dans un soucis de "combler les trous" que tu veux faire un update du champ id ? Car comme le disait Marc vu le nombre de valeur possibles ce n'est vraiment pas nécessaire.

Vraiment laisser la séquence gérer toute seule ce champ est la solution la plus simple et la plus sûre.

Si au pire des cas tu ne dois avoir aucun trou dans la séquence, je te conseillerai plutôt des opérations de maintenance planifiées en dehors de la production pour la remettre à niveau.

#3296 Re : Installation » demande de mot de passe par psql » 30/08/2011 22:58:53

Si le serveur est spécifié par un dns, je crois que le fichier pgpass est sensible à la casse donc cela peut provenir de la.

Sinon il est également possible de spécifier la connexion en "trust" dans le pg_hba.conf si vous avez accès au serveur, et le mot de passe ne devrait plus être demandé. Mais ce n'est pas forcément la meilleure solution, en cas de distribution pour des clients par exemple.

Pied de page des forums

Propulsé par FluxBB