La formation complète est disponible ici: http://www.alphorm.com/tutoriel/formation-en-ligne-postgresql-administration
PostgreSQL est un système de gestion de base de données relationnelle OpenSource, développé à l'origine par l'université de Berkeley. Avec sa grande maturité actuelle, il présente une très bonne alternative aux SGBDR commerciaux.
Durant cette formation, notre expert base de données Noureddine DRISSI va vous accompagner pour installer et administrer au quotidien votre serveur de base de données PostgreSQL. Il vous expliquera aussi comment manipuler les données, comment gérer une base et vous apprendra à maîtriser les principales techniques et outils d'administration.
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
�Cette base de données servira de fil conducteur pour l’ensemble des démonstration (sauvegarde, transfert, fichiers data, réplication, optimisation, etc.)
�� checkpoint_timeoutcheckpoint_timeout indique la durée maximale sans CHECKPOINTindique la durée maximale sans CHECKPOINT
�� checkpoint_segmentscheckpoint_segments indique le nombre maximum de journaux de indique le nombre maximum de journaux de transactions utilisés sans CHECKPOINTtransactions utilisés sans CHECKPOINT
Gestion d’une instance PostgreSQL
�� Le « Le « walwal writerwriter processprocess »»
�� Apparu en 8.3Apparu en 8.3
�� Enregistre les modifications dans les journaux de transactions WALEnregistre les modifications dans les journaux de transactions WAL
�� Les processus de communication client/serveurLes processus de communication client/serveur
�� Ce sont les plus nombreux (limitation avec max_connections)Ce sont les plus nombreux (limitation avec max_connections)
�� Gère la communication entre le client et le serveurGère la communication entre le client et le serveur
�� Démarré par le processus «Démarré par le processus « postmasterpostmaster » après authentification de » après authentification de l’utilisateurl’utilisateur
�� Traite les requêtes des clientsTraite les requêtes des clients
Site : http://alphorm.comBlog : http://alphorm.com/blogForum : http://alphorm.com/forum
Noureddine DRISSI Expert consultant bases de donnéesContact : [email protected]
Les tablespaces
Gestion d’une instance PostgreSQL
�Les espaces de stockage ou de stockage ou tablespacetablespace
��Répertoire d’un système de fichier, dans lequel Répertoire d’un système de fichier, dans lequel PostgreSQLPostgreSQL écrit les fichiers des tables et des indexesécrit les fichiers des tables et des indexes
��UtilisationUtilisation
•• Extension de l’espace de stockage existantExtension de l’espace de stockage existant
�� Maîtrise de la répartition des fichiers DATA, en fonction Maîtrise de la répartition des fichiers DATA, en fonction des bases de données et des rôles utilisésdes bases de données et des rôles utilisés
Gestion d’une instance PostgreSQL
•• Mise en oeuvre des espaces de tableMise en oeuvre des espaces de table
�� Au niveau de l’OSAu niveau de l’OS
•• Création du nouveau répertoire de stockageCréation du nouveau répertoire de stockage
•• Modification du propriétaire du répertoireModification du propriétaire du répertoire
•• Attribution des privilèges sur le répertoireAttribution des privilèges sur le répertoire
•• Suppression des espaces de tableSuppression des espaces de table
�� Le tablespace doit être vide (pas de table ni d’index)Le tablespace doit être vide (pas de table ni d’index)
�� Suppression du tablespace via la commande DDLSuppression du tablespace via la commande DDL
�� Le répertoire de stockage peut être supprimé Le répertoire de stockage peut être supprimé physiquement avec les commandes de l’OSphysiquement avec les commandes de l’OS
Site : http://alphorm.comBlog : http://alphorm.com/blogForum : http://alphorm.com/forum
Noureddine DRISSI Expert consultant bases de donnéesContact : [email protected]
Initialisation d’une instance
Initialisation d'une instance
��Configuration des ressources du noyauConfiguration des ressources du noyau�� PostgreSQLPostgreSQL utilise les ressources IPC de l’OS pour la gestion de la utilise les ressources IPC de l’OS pour la gestion de la
mémoire vivemémoire vive
�� La taille maximale d’un segment de mémoire partagée et positionné La taille maximale d’un segment de mémoire partagée et positionné par défaut à 32 Mopar défaut à 32 Mo
�� Le nombre de pages est positionné par défaut à 2097152 pagesLe nombre de pages est positionné par défaut à 2097152 pages
•• --E <encodage>E <encodage> indique le jeux de caractères sélectionnéindique le jeux de caractères sélectionné
•• --locale=<locale>locale=<locale> initialise les paramètres locauxinitialise les paramètres locaux
Initialisation d'une instance
��Démarrage et arrêt d’une instanceDémarrage et arrêt d’une instance�� Utilisation du programme Utilisation du programme pg_ctlpg_ctl
•• --D <dir>D <dir> indique le répertoire de l’instanceindique le répertoire de l’instance
•• --l <journal de trace>l <journal de trace> fichier de log de démarrage de l’instancefichier de log de démarrage de l’instance
•• start, stop, restartstart, stop, restart et et reloadreload permettent de démarrer, d’arrêter, permettent de démarrer, d’arrêter, de redémarrer et de recharger le serveurde redémarrer et de recharger le serveur
��Démarrage et arrêt d’une instanceDémarrage et arrêt d’une instance�� Utilisation du script de démarrage (SysV) LinuxUtilisation du script de démarrage (SysV) Linux
��Suppression d’une instanceSuppression d’une instance�� LinuxLinux
•• Arrêtez le processus postmaster PostgreSQLArrêtez le processus postmaster PostgreSQL
•• Supprimer tous les fichiers et répertoires à la racine de Supprimer tous les fichiers et répertoires à la racine de l’instance ($PGDATA)l’instance ($PGDATA)
•• Arrêtez le service PostgreSQLArrêtez le service PostgreSQL
•• Supprimer tous les fichiers et répertoire à la racine de l’instance Supprimer tous les fichiers et répertoire à la racine de l’instance ($PGDATA)($PGDATA)
Initialisation d'une instance
��Suppression d’une instanceSuppression d’une instance�� LinuxLinux
•• Arrêtez le processus postmaster PostgreSQLArrêtez le processus postmaster PostgreSQL
•• Supprimer tous les fichiers et répertoires à la racine de Supprimer tous les fichiers et répertoires à la racine de l’instance ($PGDATA)l’instance ($PGDATA)
•• Arrêtez le service PostgreSQLArrêtez le service PostgreSQL
•• Supprimer tous les fichiers et répertoire à la racine de l’instance Supprimer tous les fichiers et répertoire à la racine de l’instance ($PGDATA)($PGDATA)
Site : http://alphorm.comBlog : http://alphorm.com/blogForum : http://alphorm.com/forum
Noureddine DRISSI Expert consultant bases de donnéesContact : [email protected]
sous PostgreSQL
La gestion des transactions
�� TransactionsTransactions
�� Conforme à la norme ACIDConforme à la norme ACID
•• AtomicitéAtomicité toutes les instructions de la transaction sont validées ou aucune ne toutes les instructions de la transaction sont validées ou aucune ne l'estl'est
•• CohérenceCohérence chaque transaction validée garantit un état cohérent de la base de chaque transaction validée garantit un état cohérent de la base de donnéesdonnées
•• IsolationIsolation les modifications d'une transaction sont invisibles aux autres les modifications d'une transaction sont invisibles aux autres transactionstransactions
•• DurabilitéDurabilité si la transaction est validée, les modifications engendrées sont si la transaction est validée, les modifications engendrées sont pérennespérennes
La gestion des transactions
�� TransactionsTransactions
�� Par défautPar défaut
•• aautocommitutocommit
�� Une transactionUne transaction
•• Démarrage d’une transaction avec Démarrage d’une transaction avec BEGINBEGIN
•• Les verrous ne peuvent être posés que dans le cadre d'une transaction Les verrous ne peuvent être posés que dans le cadre d'une transaction commencée commencée avec begin.
•• Les verrous sont libérés lorsque une transaction est terminéeLes verrous sont libérés lorsque une transaction est terminée
•• La liste des verrous actifs est consultable dans la vue système La liste des verrous actifs est consultable dans la vue système pg_lockspg_locks
�� Associés aux rôles lors de leur création (CREATE ROLE) ou avec Associés aux rôles lors de leur création (CREATE ROLE) ou avec l'instruction ALTER ROLEl'instruction ALTER ROLE
�� Les rôles qui disposent de l'attribut SUPERUSER contournent le Les rôles qui disposent de l'attribut SUPERUSER contournent le système des privilèges (c'estsystème des privilèges (c'est--àà--dire qu'ils ont tous les privilèges)dire qu'ils ont tous les privilèges)
Gestion de la sécurité
��Droits, objetsDroits, objets
�� Les privilèges octroyés dépendent du type d’objetLes privilèges octroyés dépendent du type d’objet
•• espaces de tables : CREATEespaces de tables : CREATE
Gestion de la sécurité
��Droits, objetsDroits, objets
�� ALL représente tous les privilèges et PUBLIC tous les rôlesALL représente tous les privilèges et PUBLIC tous les rôles
�� L'option WITH GRANT OPTION autorise le ou les rôles cibles à L'option WITH GRANT OPTION autorise le ou les rôles cibles à octroyer ces privilègesoctroyer ces privilèges
�� ALL représente tous les privilèges et PUBLIC tous les rôlesALL représente tous les privilèges et PUBLIC tous les rôles
�� L'option WITH GRANT OPTION autorise le ou les rôles cibles à L'option WITH GRANT OPTION autorise le ou les rôles cibles à octroyer ces privilègesoctroyer ces privilèges
•• Les privilèges objets sont donnés à des rôles groupes et non à Les privilèges objets sont donnés à des rôles groupes et non à des rôles LOGINdes rôles LOGIN
•• Différentes nature de messageDifférentes nature de message
•• Possibilité d’ajuster le niveau de tracePossibilité d’ajuster le niveau de trace
Gestion des logs
�� Les logs d’activitésLes logs d’activités
�� Ou tracer ?Ou tracer ?
•• log_destination (string)log_destination (string) destination des logs (syslog, stderr, etc.)destination des logs (syslog, stderr, etc.)
•• logging_collector (boolean)logging_collector (boolean) autorise la capture et la redirection autorise la capture et la redirection des messages envoyés à stderrdes messages envoyés à stderr
•• log_directorylog_directory (string)(string) détermine le répertoire dans lequel les détermine le répertoire dans lequel les
•• log_directorylog_directory (string)(string) détermine le répertoire dans lequel les détermine le répertoire dans lequel les fichiers de trace sont créésfichiers de trace sont créés
•• log_filename (string)log_filename (string) indique les noms des journaux applicatifs indique les noms des journaux applicatifs crééscréés
•• ……
Gestion des logs
�� Les logs d’activitésLes logs d’activités
�� Quand tracer ?Quand tracer ?
•• client_min_messages (enum) client_min_messages (enum) contrôle les niveaux de message contrôle les niveaux de message envoyés au clientenvoyés au client
•• log_min_messages (enum) log_min_messages (enum) contrôle les niveaux de message contrôle les niveaux de message écrits dans les traces du serveurécrits dans les traces du serveur
écrits dans les traces du serveurécrits dans les traces du serveur
•• log_error_verbosity (enum) log_error_verbosity (enum) contrôle le niveau de détail des contrôle le niveau de détail des traces de chaque messagetraces de chaque message
•• log_min_error_statement (enum) log_min_error_statement (enum) contrôle si l'instruction SQL à contrôle si l'instruction SQL à l'origine d'une erreur doit être enregistrée dans les traces du l'origine d'une erreur doit être enregistrée dans les traces du serveurserveur
•• ……
Gestion des logs
�� Les logs d’activitésLes logs d’activités
�� Que tracer ?Que tracer ?
•• log_checkpoints (boolean)log_checkpoints (boolean) trace les points de vérification dans trace les points de vérification dans les journaux applicatifsles journaux applicatifs
•• log_connections (boolean)log_connections (boolean) trace chaque tentative de connexion trace chaque tentative de connexion sur le serveur, ainsi que la réussite de l'authentification du sur le serveur, ainsi que la réussite de l'authentification du clientclient
sur le serveur, ainsi que la réussite de l'authentification du sur le serveur, ainsi que la réussite de l'authentification du clientclient
•• log_duration (boolean)log_duration (boolean) indique le temps de chaque requête indique le temps de chaque requête noté par log_statementnoté par log_statement
•• log_statement (boolean)log_statement (boolean) indique la nature des requête a tracerindique la nature des requête a tracer
•• ……
Gestion des logs
�� Les logs d’activitésLes logs d’activités
�� Paramètres du fichier de traceParamètres du fichier de trace
•• log_rotation_age (entier)log_rotation_age (entier) indique le temps de vie d’un fichier de indique le temps de vie d’un fichier de traces d’activitéstraces d’activités
•• log_rotation_size (entier)log_rotation_size (entier) indique la taille maximale d’un fichier indique la taille maximale d’un fichier de tracesde traces
Site : http://alphorm.comBlog : http://alphorm.com/blogForum : http://alphorm.com/forum
Noureddine DRISSI Expert consultant bases de donnéesContact : [email protected]
sous PostgreSQL
Gestion des logs
�� Les logs binaires ou WALLes logs binaires ou WAL
�� Mécanisme d’écriture des transactionsMécanisme d’écriture des transactions
•• Chaque transaction est écrite dans un fichier binaire, avant que Chaque transaction est écrite dans un fichier binaire, avant que les données ne soient réellement écrites dans les fichiers de les données ne soient réellement écrites dans les fichiers de données et d’indexdonnées et d’index
•• Mécanisme qui garantit l’écriture des donnéesMécanisme qui garantit l’écriture des données
Mécanisme qui garantit l’écriture des donnéesMécanisme qui garantit l’écriture des données
•• Permet d’obtenir de meilleures performances, tout en Permet d’obtenir de meilleures performances, tout en garantissant l’écriture des donnéesgarantissant l’écriture des données
Gestion des logs
�� Les logs binaires ou WALLes logs binaires ou WAL
�� Schéma du mécanisme d’écriture des transactionsSchéma du mécanisme d’écriture des transactions
�� Les logs binaires ou WALLes logs binaires ou WAL
�� CaractéristiquesCaractéristiques
•• Chaque segment WAL a une taille de 16 Mo Chaque segment WAL a une taille de 16 Mo
•• Chaque segment est divisé en pages de 8 Ko Chaque segment est divisé en pages de 8 Ko
•• Les fichiers sont nommés suivant un nombre qui est toujours Les fichiers sont nommés suivant un nombre qui est toujours incrémenté et qui commence à 000000010000000000000000incrémenté et qui commence à 000000010000000000000000
incrémenté et qui commence à 000000010000000000000000incrémenté et qui commence à 000000010000000000000000
•• Les segments WAL sont stockés dans le répertoire Les segments WAL sont stockés dans le répertoire pg_xlogpg_xlog
•• Le serveur peut en créer plusieurs si nécessaireLe serveur peut en créer plusieurs si nécessaire
Gestion des logs
�� Les logs binaires ou WALLes logs binaires ou WAL
�� Paramètres de configurationParamètres de configuration
•• fsync(boolean)fsync(boolean) permet de forcer l’écriture des fichiers de traces permet de forcer l’écriture des fichiers de traces binairesbinaires
•• checkpoint_segment(entier)checkpoint_segment(entier) indique l’écart maximum entre indique l’écart maximum entre deux points de contrôledeux points de contrôle
•• checkpoint_timeout(entier)checkpoint_timeout(entier) indique le temps maximal, en indique le temps maximal, en seconde, entre deux points de contrôleseconde, entre deux points de contrôle
•• checkpoint_warning(entier)checkpoint_warning(entier) déclenche l’envoi de messages déclenche l’envoi de messages dans les traces d’activités lorsque les points de contrôles sont dans les traces d’activités lorsque les points de contrôles sont trop fréquentstrop fréquents
•• wal_bufferwal_buffer cache des logs binairescache des logs binaires
Site : http://alphorm.comBlog : http://alphorm.com/blogForum : http://alphorm.com/forum
Noureddine DRISSI Expert consultant bases de donnéesContact : [email protected]
Import Export
Sauvegarde et restauration
�� Trois stratégies de sauvegardes possiblesTrois stratégies de sauvegardes possibles
�� Export à partir d'une base de données ou une instance active en Export à partir d'une base de données ou une instance active en utilisant le programme utilisant le programme pg_dumppg_dump et et pg_dumpallpg_dumpall
�� Sauvegarde des fichiers de l'instance lorsqu'elle est arrêtée Sauvegarde des fichiers de l'instance lorsqu'elle est arrêtée (sauvegarde à froid)(sauvegarde à froid)
�� Sauvegarde à chaud en utilisant des journaux des transactionsSauvegarde à chaud en utilisant des journaux des transactions
•• Exécuter régulièrement une sauvegarde complète de l'instance.Exécuter régulièrement une sauvegarde complète de l'instance.
Sauvegarde et restauration
�� Sauvegarde à chaudSauvegarde à chaud
�� Mise en oeuvreMise en oeuvre
•• Exécution de la function SQL Exécution de la function SQL pg_start_backuppg_start_backup
•• Sauvegarde des fichiers de l'instances à l'exception du Sauvegarde des fichiers de l'instances à l'exception du répertoire pg_xlogrépertoire pg_xlog
•• Exécution de la fonction Exécution de la fonction pg_stop_backuppg_stop_backup
�� Les étapes de notre TPLes étapes de notre TP�� Je met l’instance en mode ARCHIVELOGJe met l’instance en mode ARCHIVELOG
�� Je lance une transaction Je lance une transaction T1 T1 insertinsert
�� Je démarre Le mode sauvegarde à chaud sous Je démarre Le mode sauvegarde à chaud sous PostgreSQLPostgreSQL select select pg_start_backuppg_start_backup()()
�� Je réalise la sauvegarde au niveau du système d’exploitation Je réalise la sauvegarde au niveau du système d’exploitation tar tar
�� J’arrête le mode sauvegarde à chaud J’arrête le mode sauvegarde à chaud select select pg_stop_backuppg_stop_backup()()
Je lance une transaction Je lance une transaction T2 T2 insertinsert
Site : http://alphorm.comBlog : http://alphorm.com/blogForum : http://alphorm.com/forum
Noureddine DRISSI Expert consultant bases de donnéesContact : [email protected]
Les bases de données
Administrer au quotidien
��Pour chaque instance il existe les basesPour chaque instance il existe les bases
�� postgrespostgres
�� template0template0
�� template1template1
•• Les relations (tables, indexes, etc.) sont stockées dans les bases Les relations (tables, indexes, etc.) sont stockées dans les bases de donnéesde données
•• Pour chaque base, il existe au mois le schéma Pour chaque base, il existe au mois le schéma publicpublic et les et les catalogues (catalogues (information_schemainformation_schema et et pg_catalogpg_catalog))
Administrer au quotidien
�� Les relationsLes relations
�� Désigne des objets (tables, indexes, sequences)Désigne des objets (tables, indexes, sequences)
•• Les données de chaque relation sont stockées dans un fichier Les données de chaque relation sont stockées dans un fichier identifié par son OIDidentifié par son OID
�� Seul l’administrateur ou le propriétaire peut supprimer une base de donnéesSeul l’administrateur ou le propriétaire peut supprimer une base de données
Administrer au quotidien
�� Les schémasLes schémas
�� Espace de nom logiqueEspace de nom logique
�� Permet d’avoir plusieurs objets portant le même nom dans une Permet d’avoir plusieurs objets portant le même nom dans une même base de donnéesmême base de données
�� Les objets sont accessible en préfixant le nom de l’objet par le nom Les objets sont accessible en préfixant le nom de l’objet par le nom du schéma « schéma.objet »du schéma « schéma.objet »