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
4 Concepts de base........................................................................................................................29
4.1 ACID...................................................