Administration de PostgreSQL - CRI

Transcription

Administration de PostgreSQL - CRI
Fabien Coelho
Administration de PostgreSQL 8.3
Fabien Coelho
Administration de PostgreSQL 8.3
Installation à partir des sources
téléchargement par le réseau (.zip .tar.gz tar.bz2 CVS. . . )
extraction tar xzf ....tar.gz ; cd ...
préparation ./configure --prefix=/chemin/ou/installer
autres options pour activer ou désactiver certaines options
--enable-nls --with-tcl,perl,python
--with-pam,openssl. . .
http://www.virtualmagie.com/images/humour/
compilation make
Administration de PostgreSQL 8.3
vérification make check
Fabien Coelho
installation make install
MINES ParisTech
extensions. . . cd contrib; make USE PGXS=1 install
Composé avec
récupération de l’environnement de compilation
LAT
EX, révision 2823
1
Fabien Coelho
2
Administration de PostgreSQL 8.3
Fabien Coelho
Administration de PostgreSQL 8.3
Répertoires d’installation
Installation de packages
bin scripts et binaires exécutables
debian ubuntu postgresql postgresql-doc. . .
doc documentations
windows installeur graphique
MAPP LAPP WAPP MacOS/Linux/Windows Apache PHP PostgreSQL
live CDs basés sur Linux (Xubuntu, Ubuntu, Fedora)
doc/contrib extensions
doc/html PostgreSQL au format HTML
include fichiers entêtes de compilation
lib librairies dynamiques
lib/pgxs environnement de compilation d’extensions
Multi-instances et multi-versions
man page de manuels
— système intégré à Debian, Ubuntu. . .
— scripts de démarrage et d’arrêt
share données partagées
— facilite les mises à jours
share/contrib scripts d’ajouts d’extensions
4
3
Fabien Coelho
Administration de PostgreSQL 8.3
Fabien Coelho
Initialisation d’un cluster : initdb
Administration de PostgreSQL 8.3
Options de la commande initdb
répertoire principal de la base (espace disque ?)
Debian : /usr/lib/postgresql/8.1/bin/initdb
ajout possible d’autres répertoires (tablespace) plus tard
—username=calvin administrateur, par défaut compte unix
variable d’environnement PGDATA
utilisateur compte de préférence spécifique postgres
—pwprompt demande le mot de passe (pas de mot de passe !)
i18n encodage des caractères UTF8, LATIN1. . .
—locale=. . . localisation, défaut courant
modifiable pour chaque catalogue DATABASE
—encoding=. . . internationnalisation, défaut SQL ASCII
l10n langue de la base (messages, tris) fr en de. . .
—auth=’. . . ’ méthode d’authentification
non modifiable par catalogue !
trust par défaut pour accès uniquement locaux
initdb \
--locale=fr_FR --encoding=LATIN1 \
--username=postgres --pwprompt --auth=’ident sameuser’ \
--pgdata=/chemin/vers/db
préférer md5 ou ident sameuser en local ?
—pgdata=/path/to/db/dir répertoire d’installation de la base
5
Fabien Coelho
6
Administration de PostgreSQL 8.3
Fabien Coelho
Administration de PostgreSQL 8.3
Résultat de initdb
— répertoire de la base : FS natif du système
— trois fichiers de configuration
Configuration du serveur : postgresql.conf
postgresql.conf paramétrage du serveur
configuration fonctionnelle par défaut !
pg hba.conf contrôle des accès (locaux et réseaux)
— nombreuses directives
pg ident.conf correspondances pour l’authentification ident
— modifiables au chargement de la base
— divers répertoires et fichiers. . .
— certaines modifiables en cours d’exécution
— deux bases de références pour créer de nouvelles bases
— valeurs par défaut raisonnables pour commencer
template1 base par défaut
template0 sauvegarde gelée et bloquée de template1
7
8
Fabien Coelho
Administration de PostgreSQL 8.3
Fabien Coelho
Administration de PostgreSQL 8.3
Thèmes de configuration
fichiers où sont les fichiers de configuration
Configuration : localisation des fichiers
connexions locales et par le réseau, réservées, droits
data directory répertoire des données de la base
sécurité chiffrement, mots de passe. . .
par défaut, même répertoire que les fichiers de conf
ressources mémoire, fichiers, coûts divers
wal write ahead log
config file fichier de conf principal (au lancement)
traces des connexions, syslog, rotations. . .
hba file fichier des autorisations d’accès
statistiques collectées
ident file fichier d’identification, compte base vs machine
clients isolation, encodage. . .
external pid file numéro du processus
verrous expiration, nombre maximum
utilisé pour envoyé des signaux au processus
compatibilité avec anciennes versions ou autres
informations non modifiables
9
Fabien Coelho
10
Administration de PostgreSQL 8.3
Fabien Coelho
Configuration : connexions
Administration de PostgreSQL 8.3
Configuration : sécurité et authentification
listen addresses = * adresses réseau et port
authentication timeout = 60 délais d’expiration
port = 5432 port de la connexion
ssl = off ssl ciphers chiffrement (certificat)
max connections = 100 ne pas oublier de les fermer !
password encryption = on oui ou non, préférer oui
superuser reserved connections = 2 réservé à l’administrateur
krb * authentication kerberos
unix socket directory . . . group . . . permissions accès local
db user namespace = off utilisateur par base calvin@comics
un peu un hack. . .
tcp keepalives * bonjour name paramètres réseaux
12
11
Fabien Coelho
Administration de PostgreSQL 8.3
Fabien Coelho
Administration de PostgreSQL 8.3
Configuration : ressources consommées
Configuration : Write Ahead Log (WAL)
shared buffers = 32M mémoire du cache partagée entre processus
pages de 8KB, limites système sysctl kernel.shmmax
fsync = on sauvegarde effective des données
très important pour les performances !
synchronous commit rapport anticipé du commit. . .
temp buffers = 8M pour les tables temporaires
wal sync method, buffers = 8, full page writes = on
work mem maintenance work mem tris, nettoyage. . .
commit delay, siblings attente pour commits simultanés
max prepared transactions = 5 . . .
influence réelle sur les performances ?
max stack depth, fsm pages, fsm relations, files per process
checkpoint segments,timeout,warning
shared preload libraries chargement anticipé de librairies
archive command,mode,timeout sauvegarde incrémentale des buffers. . .
vacuum cost * paramétrage du nettoyage de la base
permet de reconstituer l’historique de la base
bgwriter * délais d’écriture effective des données
13
Fabien Coelho
14
Administration de PostgreSQL 8.3
Fabien Coelho
Administration de PostgreSQL 8.3
Configuration des traces (logs), où quand quoi
log destination = stderr où envoyer les messages d’erreur
Configuration : optimiseur de requêtes
logging collector = off messages d’erreur
log directory filename rotation age rotation size truncate on rotation
enable * activation de techniques d’optimisation
effective cache size * cost paramétrage des coûts. . .
logs gérés par PostgreSQL
syslog * paramétrage de l’utilisation d’un démon syslog
utilisateur annoncé, identification de l’application. . .
geqo* optimiseur génétique
default statistics target pour analyze
from et join collapse limit contrôle combinatoire. . .
* min messages debug, info, notice, warning, error, log, fatal, panic
log min * log error verbosity. . . niveau des messages
silent mode pas d’info sur le flux d’erreur
debug * activation du debug pour certaines phases
log * données tracées
15
16
Fabien Coelho
Administration de PostgreSQL 8.3
Fabien Coelho
Administration de PostgreSQL 8.3
Configuration : clients
search path = ’$user, public’ schémas intermédiaires par défaut
Configuration : collecte de statistiques, pour optimisation
default,temp tablespace espaces de stockage par défaut
check function bodies = on chargement des fonctions
track activities,counts commandes en cours
default transaction isolation read only transactions. . .
update process title pour commande ps
session replication role contrôle triggers replication
log statement,parser,planner,executor stats . . .
statement timeout = 0 délais d’arrêt d’une requête en ms
extra float digits datestyle interprétation dates, précision
Conseil : activer !
timezone. . . ou basé sur le système
client encoding codage des caractères côté client
lc * localisation messages, monnaie, numérique, temps
17
Fabien Coelho
18
Administration de PostgreSQL 8.3
Fabien Coelho
Administration de PostgreSQL 8.3
Configuration : autovacuum
— récupération de l’espace des DELETE UPDATE
— analyse statistiques des données pour l’optimiseur
autovacuum = off à activer systématiquement !
autovacuum * plein de paramètres. . .
explain pretty print = on plus ou moins joli
Configuration : compatibilité
dynamic library path où chercher les librairies dynamiques
add missing from = false si vrai SELECT auteur.*;
sql inheritance extension relationnel objet
default with oids = off clefs globales, à éviter
regex flavor escape string warning . . .
transform null equals = NULL vs IS NULL pour MS Access. . .
19
Fabien Coelho
20
Administration de PostgreSQL 8.3
Fabien Coelho
Administration de PostgreSQL 8.3
Configuration : gestion des verrous
Informations non re-configurables
deadlock timeout fréquence de vérification. . .
fixées à la compilation ou au initdb. . .
max locks per transaction clair. . .
block size taille des blocs (8KB)
alignement du FS sous-jacent ? (max ext3 4KB, reiserfs 8KB, xfs
Configuration de debug de PostgreSQL
64KB)
integer datetimes date dans entiers 64 bits, désactivé par défaut
trace * *debug* divers directives. . .
lc collate, ctypes langue de tri (utilisé par les indexes)
max function args, identifier length, index keys limites. . .
Configuration de modules externes
custom variable classes = ’plperl,plpython’ annonce préfixes
server encoding encodage des caractère côté serveur (vs client)
server version version du serveur
plperl.* configuration de cette classe
21
Fabien Coelho
22
Administration de PostgreSQL 8.3
Fabien Coelho
Administration de PostgreSQL 8.3
Contrôle du serveur PostgreSQL pg ctl
— script de lancement, arrêt, rechargement de la configuration. . .
pg ctl start ; pg ctl reload ; pg ctl stop
— configuration avec options ou variable d’environnement PGDATA
Commandes d’administration
— clients de la base de donnée, options de connexions :
--host=gil --user=calvin --port=5432
— lance essentiellement des commandes SQL
Exécutable postmaster
— exécutable principal de PostgreSQL, lancé par le script
— processus de maintenance : statistiques, écritures WAL
— attend les connexions réseaux ou locales
— lance un processus pour chaque client (pas de thread)
createuser createdb createlang créations. . .
dropuser dropdb droplang destructions. . .
pg dump pg restore sauvegarde/restauration d’un catalogue
pg dumpall sauvegarde complète du cluster (catalogues, rôles)
— peut-être lancé en interactif (debug hors mode client-serveur)
23
24
Fabien Coelho
Administration de PostgreSQL 8.3
Fabien Coelho
Administration de PostgreSQL 8.3
Maintenance de PostgreSQL
VACUUM FULL ANALYSE ou autovacuum (v8)
stats optimiseur, récupération espace tuples modifiés
Administration avancée. . .
réindexation périodique
— tablespace
logs rotation, compression, sauvegarde. . .
— langages
sauvegarde des données
— pgpool, pgpool2, PgBouncer
— réplication asynchrone slony-I
dump base ou cluster, cohérent à chaud, long
— PITR, pg resetxlog
fs bas niveau (arrêt serveur, fsync ?), long
fs + wal procédure lourde incrémental bas niveau. . .
raid distant ? ATA over Ethernet
25
Fabien Coelho
26
Administration de PostgreSQL 8.3
Fabien Coelho
Gestion de l’espace de stockage TABLESPACE
— utilisation d’un répertoire dans une autre partition
Administration de PostgreSQL 8.3
Développement d’extensions côté serveur
fonction nouvelle utilisable dans SQL
accès parallèles, disques dédiés à la base. . .
aggrégation au delà de SUM/MAX/MIN/AVG
doit être un disque local. . . éviter NFS !
— le répertoire doit exister, être vide, droits rwx------
CREATE TABLESPACE cuve LOCATION ’/home/cuve’;
CREATE TABLESPACE pot LOCATION ’/home/pot’;
— création d’un catalogue, d’une relation, d’un index dans un
opérateur supplémentaire
type domaine nouveaux
cast traductions de types, e.g. date vers entier
tablespace
conversion entre encodages de caractères (ascii, latin1, utf8)
CREATE DATABASE voyages TABLESPACE cuve;
CREATE TABLE dest(id SERIAL...) TABLESPACE pot;
trigger actions automatiques
27
Fabien Coelho
28
Administration de PostgreSQL 8.3
Fabien Coelho
Administration de PostgreSQL 8.3
PL/* Programming Language côté serveur
— trusted opérations illégales protégées
pgpool développé par Tatsuo Ishii
accès directe à la mémoire, opérations systèmes
— proxy (intermédiaire) serveur-client pour PostgreSQL
— untrusted pas de protection, risques d’interactions
— doit tourner sur une autre machine !
— cache les connexions ouvertes vers un ou plusieurs serveurs
PL/pgSQL proche PL/SQL Oracle : SQL + contrôle et variables
— partage de charge pour des SELECT
PL/perl, python, tcl, ruby, sh languages de script. . .
— basculement (failover) en cas de panne d’un serveur
PL/proxy requêtes distribuées (heu. . . )
— pas de solution réellement pertinente pour réplication synchrone
PL/R langage pour statistiques
nécessiterait une double confirmation double commit ?
PL/java pas un langage de script !
problèmes avec certaines fonctions comme random. . .
C langage natif. API accès à la base : SPI
29
Fabien Coelho
30
Administration de PostgreSQL 8.3
Fabien Coelho
Administration de PostgreSQL 8.3
Migrations : machine, version, logiciel
machine utilisation de pg dumpall ou pg dump
Réplication asynchrone avec Slony-I
— maı̂tre-esclaves à base de trigger
table avec la liste des choses à propager. . .
propagation décallée, d’où le asynchrone
— client spécial qui alimente une copie
basculement entre versions de serveurs
— utilisation possible avec pgpool ou PgBouncer
— arrêt des transactions ? transfert slony-I ?
— toujours tester avant de basculer !
version du même logiciel
— compatibilité binaire si versions proches 8.1.*
— garder les anciens exécutables pour reculer. . .
logiciel mysql, oracle
— conversions schéma vs données
— scripts et outils d’aide (e.g. export format CSV)
— influence sur les applications (SQL différent)
31
32
Fabien Coelho
Administration de PostgreSQL 8.3
Fabien Coelho
Administration de PostgreSQL 8.3
Interface graphique pgadmin3
contenu complet, niveau SQL, statistiques, extensions, explain
aide automatisée : conseils, wizard. . .
Interface Web phpPgAdmin
— inspirée de phpMyAdmin
— accès distants sur des serveurs hébergés
— manipulation du schéma
— manipulation des données SELECT INSERT UPDATE DELETE
— I18N et 27 L10N
33
Fabien Coelho
34
Administration de PostgreSQL 8.3
List of Slides
Conclusion
— beaucoup de choses ! ne s’administre pas toute seule
— se méfier des disques et cartes RAID !
désactiver write cache ou BBU (Battery Backup Unit)
— alternatives à PostgreSQL
oracle plus de choses, plus d’administration, plus cher !
1
Administration de PostgreSQL 8.3
2
Installation à partir des sources
3
Installation de packages
3
Multi-instances et multi-versions
4
Répertoires d’installation
5 Initialisation d’un cluster : initdb
6
Options de la commande initdb
mysql moins de choses, moins d’administration ?
7
Résultat de initdb
sqlite peu de choses, zéro administration !
8
Configuration du serveur : postgresql.conf
9
Thèmes de configuration
10
Configuration : localisation des fichiers
35
11
Configuration : connexions
22
Informations non re-configurables
12
Configuration : sécurité et authentification
23
Contrôle du serveur PostgreSQL pg
13
Configuration : ressources consommées
23
Exécutable postmaster
14
Configuration : Write Ahead Log (WAL)
24
Commandes d’administration
15
Configuration : optimiseur de requêtes
25
Maintenance de PostgreSQL
16
Configuration des traces (logs), où quand quoi
26
Administration avancée. . .
17
Configuration : collecte de statistiques, pour optimisation
27
Gestion de l’espace de stockage TABLESPACE
18
Configuration : clients
28
Développement d’extensions côté serveur
20
Configuration : autovacuum
29
PL/* Programming Language côté serveur
20
Configuration : compatibilité
30
pgpool développé par Tatsuo Ishii
21
Configuration : gestion des verrous
31
Réplication asynchrone avec Slony-I
21
Configuration de debug de PostgreSQL
32
Migrations : machine, version, logiciel
21
Configuration de modules externes
33
Interface graphique pgadmin3
34
Interface Web phpPgAdmin
35
Conclusion
ctl

Documents pareils

Administration PostgreSQL

Administration PostgreSQL 4 Concepts de base........................................................................................................................29 4.1 ACID...................................................

Plus en détail