Il y a 389 articles et 19 utilisateurs inscrits (ce bandeau est défini dans MediaWiki:Sitenotice)

« PostgreSQL » : différence entre les versions

De AJLSM
Aller à la navigation Aller à la recherche
+taille des bases/tables
front -> prod, back -> recette
 
Ligne 17 : Ligne 17 :
=== Création de l'utilisateur ===
=== Création de l'utilisateur ===
On créé deux utilisateurs :
On créé deux utilisateurs :
* {{var|$projet}}-front : un pour l'application de « production » ;
* {{var|$projet}}-prod : un pour l'application de « production » ;
* {{var|$projet}}-back et un pour l'application de « recettage » ;
* {{var|$projet}}-recette et un pour l'application de « recettage » ;
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
createuser -P $projet-front
createuser -P $projet-prod
createuser -P $projet-back
createuser -P $projet-recette
</syntaxhighlight>
</syntaxhighlight>
On saisi le mot de passe et on donne le '''droit de créé des bases''' :
On saisi le mot de passe et on donne le '''droit de créé des bases''' :
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
Saisir le mot de passe pour le nouveau rôle :  
Saisir le mot de passe pour le nouveau rôle :
Le saisir de nouveau :  
Le saisir de nouveau :
Le nouveau rôle est-il super-utilisateur ? (o/n) n
Le nouveau rôle est-il super-utilisateur ? (o/n) n
Le nouveau rôle est-il autorisé à créer des bases de données ? (o/n) o
Le nouveau rôle est-il autorisé à créer des bases de données ? (o/n) o
Ligne 35 : Ligne 35 :
En relations à nos utilisateurs, on créé une base pour l'application de « production » et une pour le « recettage ».
En relations à nos utilisateurs, on créé une base pour l'application de « production » et une pour le « recettage ».
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
createdb -O $projet-front db-front
createdb -O $projet-prod db-prod
createdb -O $projet-back db-back
createdb -O $projet-recette db-recette
</syntaxhighlight>
</syntaxhighlight>
{{notice|Il n'est pas strictement nécessaire d'avoir cette configuration, mais il sera plus simple de débugger sur une application qui n'est pas en production mais qui a les mêmes configuration}}
{{notice|Il n'est pas strictement nécessaire d'avoir cette configuration, mais il sera plus simple de débugger sur une application qui n'est pas en production mais qui a les mêmes configuration}}
Ligne 46 : Ligne 46 :
==== Paramètres Base de donnée : {{path|cocoon.xconf}} ====
==== Paramètres Base de donnée : {{path|cocoon.xconf}} ====
<syntaxhighlight lang="xml">
<syntaxhighlight lang="xml">
<jdbc name="db-conf-front" logger="sdx.rdbms.pleade3">
<jdbc name="db-conf-prod" logger="sdx.rdbms.pleade3">
   <pool-controller min="5" max="100" />
   <pool-controller min="5" max="100" />
   <dburl>jdbc:postgresql://localhost/db-front</dburl>
   <dburl>jdbc:postgresql://localhost/db-prod</dburl>
   <!-- INFO (MP) : JDBC URL pour MySQL. La difficulté est de résoudre le
   <!-- INFO (MP) : JDBC URL pour MySQL. La difficulté est de résoudre le
   problème des pertes de connexion lorsque l'application montre une  
   problème des pertes de connexion lorsque l'application montre une
   inactivité de plus de 8 heures (valeur par défaut dans MySQL). Ici, on la
   inactivité de plus de 8 heures (valeur par défaut dans MySQL). Ici, on la
   règle à 24 heures.
   règle à 24 heures.
   <dburl>jdbc:mysql://localhost/pleade3?autoReconnectForPools=true&amp;sessionVariables=wait_timeout=86400;</dburl>-->
   <dburl>jdbc:mysql://localhost/pleade3?autoReconnectForPools=true&amp;sessionVariables=wait_timeout=86400;</dburl>-->
   <user>ville-dole-front</user>
   <user>ville-dole-prod</user>
   <password>pg:/vd/fr0nt</password>
   <password>pg:/vd/pr0d</password>
</jdbc>
</jdbc>
</syntaxhighlight>
</syntaxhighlight>

Dernière version du 6 décembre 2012 à 10:14

Utiliser l'utilisateur postgres pour faire les manipulation :

su - postgres

Pour se connecter à une base, il faut 2 étape : se connecter à l'invite de commande postgreSQL puis se connecter à la base elle même :

$ psql dbName # connexion à l'invite postgreSQL, puis connexion à la base (ci-dessous)
postgres=# \c dbName

Remarques : les lignes commençant par > ou $ indiquent des commandes à exécuter dans le shell en tant que simple utilisateur. Celles commençants par # sont à exécuter en tant que super-utilisateur (root).

Remarques : les lignes commençant par postgres=# indiquent des commandes à exécuter dans l'invite PostgreSQL (après avoir fait psql dbName).

Important :
De façon à pouvoir scripter les sauvegardes, il est nécessaire de modifier les configurations de postgreSQL, ceci est documenté dans la documentation Pleade.

Installation pour Pleade

[modifier | modifier le wikicode]

Une fois connecté à l'utilisateur postgre, on créera les utilisateurs nécessaire et les bases liées.

Création de l'utilisateur

[modifier | modifier le wikicode]

On créé deux utilisateurs :

  • $projet-prod : un pour l'application de « production » ;
  • $projet-recette et un pour l'application de « recettage » ;
createuser -P $projet-prod
createuser -P $projet-recette

On saisi le mot de passe et on donne le droit de créé des bases :

Saisir le mot de passe pour le nouveau rôle :
Le saisir de nouveau :
Le nouveau rôle est-il super-utilisateur ? (o/n) n
Le nouveau rôle est-il autorisé à créer des bases de données ? (o/n) o
Le nouveau rôle est-il autorisé à créer de nouveaux rôles ? (o/n) n

Création de la base

[modifier | modifier le wikicode]

En relations à nos utilisateurs, on créé une base pour l'application de « production » et une pour le « recettage ».

createdb -O $projet-prod db-prod
createdb -O $projet-recette db-recette
Notice :
Il n'est pas strictement nécessaire d'avoir cette configuration, mais il sera plus simple de débugger sur une application qui n'est pas en production mais qui a les mêmes configuration.

Configuration Pleade

[modifier | modifier le wikicode]

Paramètres principaux : pleade-admin.properties

[modifier | modifier le wikicode]

Une fois ces étapes terminé il faudra configurer Pleade de façon à ce l'application utilise la base PostgreSQL et non HSQL (par défaut). Pour cela référez-vous à la documentation paramètres Pleade, sections paramètre principaux et aux variables pleade.sdx-database, pleade.sdx-ead-repository, pleade.sdx-eac-repository.

Paramètres Base de donnée : cocoon.xconf

[modifier | modifier le wikicode]
<jdbc name="db-conf-prod" logger="sdx.rdbms.pleade3">
  <pool-controller min="5" max="100" />
  <dburl>jdbc:postgresql://localhost/db-prod</dburl>
  <!-- INFO (MP) : JDBC URL pour MySQL. La difficulté est de résoudre le
  problème des pertes de connexion lorsque l'application montre une
  inactivité de plus de 8 heures (valeur par défaut dans MySQL). Ici, on la
  règle à 24 heures.
  <dburl>jdbc:mysql://localhost/pleade3?autoReconnectForPools=true&amp;sessionVariables=wait_timeout=86400;</dburl>-->
  <user>ville-dole-prod</user>
  <password>pg:/vd/pr0d</password>
</jdbc>
  • <dburl> indique l'URL vers la base de données, le suffixe est donc le nom de celle-ci
  • <user> et <password> indique respectivement l'utilisateur et le mot de passe postgreSQL

Commandes utiles

[modifier | modifier le wikicode]

Lister toutes les bases

[modifier | modifier le wikicode]

Remarques : possible limitation liée à l'utilisateur exécutant la commande.

Depuis un environnement shell :

psql -l

Depuis un environnement PostgreSQL :

postgres=# \l

Lister les tables

[modifier | modifier le wikicode]

Depuis un environnement PostgreSQL :

\c dbName
\d

Supprimer toutes les tables

[modifier | modifier le wikicode]
Important :
Cette opération est irréversible ! Vérifier que vous disposez de sauvegardes avant de vider les tables.
DROP TABLE module_eadeac_eac, module_eadeac_eac_docs;
DROP TABLE module_eadeac_ead;
DROP TABLE module_eadeac_ead_docs;
DROP TABLE module_eadeac_ead_oai;
DROP TABLE module_eadeac_mets, module_eadeac_mets_docs;
Notice :
L'opération est assez rapide. Au dela d'une dizaine de minutes c'est que quelque chose pose problème. Si en relançant la commande le problème persiste, vous pouvez tenter :
  1. d'arrêter la commande et tenter de supprimer les tables une à une;
  2. re-démarrer le serveur PostgreSQL et relancer la commande.
Étrangement ça marche.

Type de données bytea sous forme XML

[modifier | modifier le wikicode]

Voir les données de type bytea de la table « module_eadeac_ead_docs » sous forme de texte XML :

SELECT encode(data, 'escape') AS txt
FROM module_eadeac_ead_docs
WHERE id = 'frajlsm-pleade-test-01-fr_images-attachees';

Taille des Bases

[modifier | modifier le wikicode]

Liste toutes les bases et affiche leur taille en Kb, Mb ou Gb.<ref name="size">How to find the PostgreSQL database size</ref>

SELECT pg_database.datname, pg_size_pretty(pg_database_size(pg_database.datname)) AS size FROM pg_database;

Taille d'une table

[modifier | modifier le wikicode]

Pour avoir la taille d'une table <ref>15 Advanced PostgreSQL Commands with Examples</ref> <ref name="size">How to find the PostgreSQL database size</ref>

SELECT pg_size_pretty(pg_relation_size('xyz'));

Export et Import

[modifier | modifier le wikicode]
Notice :
Pour plus d'informations on consultera : On travaille depuis un shell (bash, zsh).

De façon basique, on fera :

pg_dump dbname > dump-"$date".sql

Pour travailler proprement, on on compressera l'export avec gzip et on utlisera pg_dump pour l'export (respectivement pg_restore pour l'import) :

pg_dump --blobs --clean -U "$dbUser" "$dbName" | gzip > dump-"$date".sql.gz
psql dbname < dump.sql

Pour travailler proprement, on utlisera pg_restore et gunzip pour importer la table compressé :

gunzip -c dump.sql.gz | psql "$dbName" -U "$dbUser"


Remarques : pour plus d'informations, on consultera la page de la documentation officielle sur SQL dump.