Contenu connexe Similaire à alphorm.com - Formation PostgreSQL administration (20) alphorm.com - Formation PostgreSQL administration1. Présentation de la
formation
PostgreSQL, administration alphorm.com™©
Site : http://alphorm.com
Blog : http://alphorm.com/blog
Forum : http://alphorm.com/forum
Noureddine DRISSI
Expert consultant bases de données
Contact : ndform@valneo-xi.fr
formation
2. Le formateur
Noureddine DRISSI
Spécialisé dans la base de données
15 années d’expérience sur tous les SGBDR du marché
(SQL Server, Oracle, PostgreSQL, Mysql, DB2)
Issue de l’environnement bancaire
PostgreSQL, administration alphorm.com™©
ndform@valneo-xi.fr
3. Connaissances préalables
Connaissances de base du système d’exploitation Linux ou
Windows
Expérience professionnelle de SQL
Expérience professionnelle des bases de données
relationnelles
Expérience en matière de conception de bases de données
PostgreSQL, administration alphorm.com™©
Expérience en matière de conception de bases de données
4. A propos de ce cours
Objectifs
Comprendre et maîtriser l’architecture de PostgreSQL;
Administrer au quotidien PostgreSQL;
Sauvegarder et restaurer des bases de données ou des instances
PostgreSQL;
Gérer la sécurité;
PostgreSQL, administration alphorm.com™©
Gérer la sécurité;
Analyser et comprendre PostgreSQL;
Comprendre et optimiser l’architecture de PostgreSQL.
5. Plan du cours
Module 1: Présentation de
PostgreSQL
Module 2: Installation de PostgreSQL
Module 3: Gestion des instances sous
PostgreSQL
Module 4: Les outils d’administration
sous PostgreSQL
Module 5: La gestion des
Module 9: Sauvegarde et
restauration
Module 10: Administrer au quotidien
PostgreSQL
PostgreSQL, administration alphorm.com™©
Module 5: La gestion des
transactions
Module 6: Les logs PostgreSQL
Module 7: Le cache de données
PostgreSQL
Module 8: Gestion de la sécurité
6. Qu’est-ce qu’un SGBDR ?
PostgreSQL est un Système de Gestion de Base de Données
Relationnelle (SGBDR)
PostgreSQL est chargé de :
stocker les données,
vérifier les contraintes d’intégrité définies,
garantir la cohérence des données qu’il stocke, même en cas de panne (arrêt brutal)
du système,
PostgreSQL, administration alphorm.com™©
du système,
assurer les relations entre les données définies par les utilisateurs.
8. Introduction à la base Gescom
Dans les ateliers pratique de ce cours, nous allons travailler
avec une base de données modèle que l’on nommera
GESCOM.
Au fil des ateliers pratique, nous allons ajouter des
fonctionnalités à la base de données GESCOM.
Cette base de données servira de fil conducteur pour
l’ensemble des démonstration (sauvegarde, transfert,
PostgreSQL, administration alphorm.com™©
Cette base de données servira de fil conducteur pour
l’ensemble des démonstration (sauvegarde, transfert,
fichiers data, réplication, optimisation, etc.)
9. Introduction à la base Gescom
Base: GESCOM
Schéma: FACT
InstanceInstance
Tables Vues
PostgreSQL, administration alphorm.com™©
Indexes séquences
…
13. Présentation de PostgreSQL
• Présentation
Système de gestion de bases de données
Fondé sur POSTGRES
Supporte une grande partie du standard SQL
Licence libérale
PostgreSQL, administration alphorm.com™©
Programme écrit à l'université de Californie à Berkeley
Base de données Open Source de référence
Modèle client/serveur
14. Présentation de PostgreSQL
Les caractéristiques
SGBDR
Supporte le langage SQL
Open source
Respect de la norme ACID
PostgreSQL, administration alphorm.com™©
Fonctionnalités
• respect de la norme SQL92, requêtes complexes ;
• clés étrangères ;
• plusieurs langages procéduraux, triggers, procédures et fonctions ;
• Déclencheurs, vues ;
15. Présentation de PostgreSQL
Les versions les plus importantes
1995: V 1.0 le code devient modifiable (évolution de la licence)
2005: V 8.0 natif Windows, savepoints, PITR, tablespaces, prêt pour
l'entreprise
2010: V 9.2 réplication, scalabilité
PostgreSQL, administration alphorm.com™©
16. Présentation de PostgreSQL
La communauté PostgreSQL
Le site pgFoundry.org
• Héberge de nombreux projets développés par des équipes
indépendantes
- connecteurs pour les différents langages ;
- langages procéduraux ;
outils d'aide à l'administration ;
PostgreSQL, administration alphorm.com™©
- outils d'aide à l'administration ;
- logiciels pour la haute disponibilité (réplication, gestion des connexions,
etc.).
17. Présentation de PostgreSQL
• Les atouts
Un projet de grande ampleur
Un SGBD complet
Une communauté réactive et internationale
Un large panel de projets complémentaires
PostgreSQL, administration alphorm.com™©
Une solution stable, ouverte et performante
Licence BSD
Coût nul
Code source disponible
Aucune contrainte de redistribution
18. Présentation de PostgreSQL
PostgreSQL VS les autres SGBDR
PostgreSQL Mysql Oracle MSSQL
Tablespace
NON
Partitionnement
Emulé INNODB
Vues matérialisées
PostgreSQL, administration alphorm.com™©
Vues matérialisées
Emulé NON
Norme ACID
INNODB
Intégrité
référentielles
INNODB
Langage Procédural
Plusieurs
Curseurs
Limité
19. Présentation de PostgreSQL
Conclusion
SGBDR performant
Montée en puissance et en charge progressive
Gestion des gros volumes de données
Gestion des performances
PostgreSQL, administration alphorm.com™©
• Tuning matériel
• Tuning logiciel
• Optimiseur de requêtes
21. Installation de PostgreSQL
PostgreSQL, administration alphorm.com™©
Site : http://alphorm.com
Blog : http://alphorm.com/blog
Forum : http://alphorm.com/forum
Noureddine DRISSI
Expert consultant bases de données
Contact : ndform@valneo-xi.fr
Windows
23. Installation de PostgreSQL
Les étapes d’installation
Téléchargement des sources à partir du site http://www.postgresql.org
Installation du logiciel PostgreSQL
Automatisation du démarrage du service PostgreSQL
PostgreSQL, administration alphorm.com™©
24. Prochain module :
Gestion des instances sous
PostgreSQL, administration alphorm.com™©
Gestion des instances sous
PostgreSQL
25. Installation de PostgreSQL
PostgreSQL, administration alphorm.com™©
Site : http://alphorm.com
Blog : http://alphorm.com/blog
Forum : http://alphorm.com/forum
Noureddine DRISSI
Expert consultant bases de données
Contact : ndform@valneo-xi.fr
26. Installation de PostgreSQL
Les étapes d’installation
Téléchargement des sources à partir du site http://www.postgresql.org
Préparation du système d’exploitation
Installation du logiciel PostgreSQL
Initialisation des fichiers de l’instance
Configuration
PostgreSQL, administration alphorm.com™©
Configuration
Installation et configuration des scripts de démarrage sous Unix ou services
sous Windows
27. Installation de PostgreSQL
• Les types d’installation
Installation à partir des paquetages « rpm » (Linux)
• Les paquetages nécessaires
- Postgresql-server*
- Postgresql*
- Postgresql-libs*
PostgreSQL, administration alphorm.com™©
- Postgresql-libs*
Installation à partir des binaires (Linux)
• Pré-requis
- make, GCC, gzip, tar
Installation à partir des exécutables (WINDOWS)
28. Prochain module :
Gestion des instances sous
PostgreSQL, administration alphorm.com™©
Gestion des instances sous
PostgreSQL
29. Gestion des instances sous
PostgreSQL
PostgreSQL, administration alphorm.com™©
Site : http://alphorm.com
Blog : http://alphorm.com/blog
Forum : http://alphorm.com/forum
Noureddine DRISSI
Expert consultant bases de données
Contact : ndform@valneo-xi.fr
Notion d’instance
30. Gestion d’une instance PostgreSQL
Une instance PostgreSQL c’est quoi ?
Un cache mémoire
Des processus
Une arborescence physiques (FS, répertoires)
Un ensemble de bases de données
PostgreSQL, administration alphorm.com™©
31. Gestion d’une instance PostgreSQL
Représentation schématique d’une instance
PostgreSQL, administration alphorm.com™©
32. Gestion d’une instance PostgreSQL
Les processus PostgreSQL
Le processus postmaster
• Le Processus de gestion des journaux applicatifs (optionnel)
• Le processus de collecte des statistiques (optionnel)
• Le processus d'écriture en tâche de fond
PostgreSQL, administration alphorm.com™©
• Le processus d’écriture des journaux de transactions
• Le Processus de maintenance des tables (optionnel)
• Le processus d'archivage (optionnel)
• Les processus de communication client/serveur
33. Gestion d’une instance PostgreSQLGestion d’une instance PostgreSQL
Le processusLe processus postmasterpostmaster
Père de tous les autres processusPère de tous les autres processus
Ecoute toutes les connexions entrantesEcoute toutes les connexions entrantes
Ecoute par la socket ou le port TCP/IP (par défaut 5432)Ecoute par la socket ou le port TCP/IP (par défaut 5432)
Lance les différents services nécessaires à PostgreSQLLance les différents services nécessaires à PostgreSQL
•• le processus de gestion des journaux applicatifs (si activé) ;le processus de gestion des journaux applicatifs (si activé) ;
PostgreSQL, administration alphorm.com™©
•• le processus de gestion des journaux applicatifs (si activé) ;le processus de gestion des journaux applicatifs (si activé) ;
•• le processus de collecte des statistiques (si activé) ;le processus de collecte des statistiques (si activé) ;
•• le « autovacuum launcher » (si activé) ;le « autovacuum launcher » (si activé) ;
•• le processus d'écriture en tâche de fond ;le processus d'écriture en tâche de fond ;
•• le processsus d'écriture des journaux de transactionsle processsus d'écriture des journaux de transactions
34. Gestion d’une instance PostgreSQL
Le processusLe processus bgwriterbgwriter
Ecriture des blocs modifiés en mémoire cache dans les fichiers deEcriture des blocs modifiés en mémoire cache dans les fichiers de
donnéesdonnées
Processus d’arrière planProcessus d’arrière plan
Déclenché par un checkpointDéclenché par un checkpoint
checkpoint_timeoutcheckpoint_timeout indique la durée maximale sans CHECKPOINTindique la durée maximale sans CHECKPOINT
PostgreSQL, administration alphorm.com™©
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 deindique le nombre maximum de journaux de
transactions utilisés sans CHECKPOINTtransactions utilisés sans CHECKPOINT
35. 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
Paramètres d’optimisationParamètres d’optimisation
wal_bufferwal_buffer
PostgreSQL, administration alphorm.com™©
fsyncfsync
……
36. Gestion d’une instance PostgreSQL
Le processus de collecte des statistiquesLe processus de collecte des statistiques
Activé par défaut en 8.3 (Activé par défaut en 8.3 (track_activitiestrack_activities,, track_countstrack_counts))
Récupère les informations des processusRécupère les informations des processus postgrespostgres
Statistiques surStatistiques sur
•• le nombre de lignes lues, insérées, modifiées et suppriméesle nombre de lignes lues, insérées, modifiées et supprimées
PostgreSQL, administration alphorm.com™©
•• le nombre de blocs disque lus ou écritsle nombre de blocs disque lus ou écrits
Informations récupérées via un port UDP configuré en mode nonInformations récupérées via un port UDP configuré en mode non
bloquantbloquant
37. Gestion d’une instance PostgreSQL
Le processus de maintenance des tablesLe processus de maintenance des tables
Procède au nettoyage des tablesProcède au nettoyage des tables
Depuis la version 8.3Depuis la version 8.3
•• autovacuumautovacuum launcherlauncher
•• autovacuumautovacuum workerworker
PostgreSQL, administration alphorm.com™©
Exécuté au démarrage du serveurExécuté au démarrage du serveur
Traces disponibles pour ce processusTraces disponibles pour ce processus
38. Gestion d’une instance PostgreSQL
Le processus d’archivageLe processus d’archivage
Désactivé par défaut (archive_mode)Désactivé par défaut (archive_mode)
Gère l'archivage des journaux de transactionsGère l'archivage des journaux de transactions
Pas de consommation mémoire importantePas de consommation mémoire importante
Traces disponibles pour ce processusTraces disponibles pour ce processus
PostgreSQL, administration alphorm.com™©
39. Gestion d’une instance PostgreSQL
Le processus des journaux applicatifsLe processus des journaux applicatifs
Disponible depuis la version 8.0Disponible depuis la version 8.0
Activé par défautActivé par défaut
Apparaît sous le nom de «Apparaît sous le nom de « logger processlogger process »»
Exécuté au lancement du serveur PostgreSQLExécuté au lancement du serveur PostgreSQL
PostgreSQL, administration alphorm.com™©
40. Gestion d’une instance PostgreSQL
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
PostgreSQL, administration alphorm.com™©
Traite les requêtes des clientsTraite les requêtes des clients
Utilise la mémoire partagée et la mémoire dédiéeUtilise la mémoire partagée et la mémoire dédiée
41. Gestion d’une instance PostgreSQL
Arborescence physique d’une instanceArborescence physique d’une instance
PostgreSQL, administration alphorm.com™©
42. Gestion d’une instance PostgreSQL
Fonction de chaque répertoireFonction de chaque répertoire
basebase répertoire associé à l'espace de tables pg_defaultrépertoire associé à l'espace de tables pg_default
base/pgsql_tmpbase/pgsql_tmp fichiers temporaires pour certaines opérationsfichiers temporaires pour certaines opérations
globalglobal tables système (espace de tables pg_global)tables système (espace de tables pg_global)
pg_clogpg_clog données relatives au statut de validation des transactionsdonnées relatives au statut de validation des transactions
PostgreSQL, administration alphorm.com™©
pg_logpg_log journaux d'activitéjournaux d'activité
pg_multixactpg_multixact données relatives au statut des transactions multiplesdonnées relatives au statut des transactions multiples
pg_subtranspg_subtrans données relatives au statut des transactions imbriquéesdonnées relatives au statut des transactions imbriquées
pg_tblspcpg_tblspc contient un lien symbolique pour chaque espace de tablescontient un lien symbolique pour chaque espace de tables
pg_twophasepg_twophase données pour les transactions préparéesdonnées pour les transactions préparées
pg_xlogpg_xlog journaux binaires (WAL)journaux binaires (WAL)
43. Gestion d’une instance PostgreSQL
La racine de l’instanceLa racine de l’instance $PGDATA$PGDATA
Contient tous les répertoires de l’instanceContient tous les répertoires de l’instance
Contient les fichiers de configuration de l’instanceContient les fichiers de configuration de l’instance
•• PG_VERSIONPG_VERSION version de PostgreSQL associée à l’instanceversion de PostgreSQL associée à l’instance
•• pg_hba.confpg_hba.conf configuration de l'authentificationconfiguration de l'authentification
PostgreSQL, administration alphorm.com™©
•• pg_ident.confpg_ident.conf configuration de l'authentification identconfiguration de l'authentification ident
•• postgresql.confpostgresql.conf configuration de l'instanceconfiguration de l'instance
•• postmaster.optspostmaster.opts options de démarrage de postmasteroptions de démarrage de postmaster
•• postmaster.pidpostmaster.pid PID du processus postmasterPID du processus postmaster
44. Gestion d’une instance PostgreSQL
Configuration de l’instanceConfiguration de l’instance
Se fait dans le fichier «Se fait dans le fichier « postgresql.confpostgresql.conf »»
•• A la racine de chaque instance $PGDATAA la racine de chaque instance $PGDATA
•• Toujours faire une sauvegarde du fichier avant modificationToujours faire une sauvegarde du fichier avant modification
PostgreSQL, administration alphorm.com™©
45. Gestion d’une instance PostgreSQL
Représentation de l’architecture logique et physiqueReprésentation de l’architecture logique et physique
PostgreSQL, administration alphorm.com™©
46. Gestion d’une instance PostgreSQL
Configuration de l’instanceConfiguration de l’instance
Se fait dans le fichier «Se fait dans le fichier « postgresql.confpostgresql.conf »»
•• A la racine de chaque instance $PGDATAA la racine de chaque instance $PGDATA
•• Toujours faire une sauvegarde du fichier avant modificationToujours faire une sauvegarde du fichier avant modification
PostgreSQL, administration alphorm.com™©
47. Prochain module :
Les outils d’administration sous
PostgreSQL, administration alphorm.com™©
Les outils d’administration sous
PostgreSQL
48. Gestion des instances sous
PostgreSQL
PostgreSQL, administration alphorm.com™©
Site : http://alphorm.com
Blog : http://alphorm.com/blog
Forum : http://alphorm.com/forum
Noureddine DRISSI
Expert consultant bases de données
Contact : ndform@valneo-xi.fr
Les tablespaces
49. Gestion d’une instance PostgreSQL
Les espaces de stockage oude stockage ou tablespacetablespace
Répertoire d’un système de fichier, dans lequelRé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
PostgreSQL, administration alphorm.com™©
•• Répartition des objets à fort accès sur des disques différentsRépartition des objets à fort accès sur des disques différents
•• Amélioration des performances pour les I/OAmélioration des performances pour les I/O
50. Gestion d’une instance PostgreSQL
Caractéristiques des espaces de tablesCaractéristiques des espaces de tables
N’est pas spécifique à une base de donnéesN’est pas spécifique à une base de données
Outil pour l’administrateur afin d’optimiser le stockageOutil pour l’administrateur afin d’optimiser le stockage
sur disquesur disque
Gestion fine des permissions sur les espaces de tablesGestion fine des permissions sur les espaces de tables
PostgreSQL, administration alphorm.com™©
Maîtrise de la répartition des fichiers DATA, en fonctionMaî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
51. 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
PostgreSQL, administration alphorm.com™©
•• Attribution des privilèges sur le répertoireAttribution des privilèges sur le répertoire
Au niveau de PostgreSQLAu niveau de PostgreSQL
•• Création du tablespace avec la commande DDLCréation du tablespace avec la commande DDL
•• Vérification de la création du tablespaceVérification de la création du tablespace
52. Gestion d’une instance PostgreSQL
•• Création des espaces de tableCréation des espaces de table
SyntaxeSyntaxe
ExempleExemple
CREATE TABLESPACE <nom> LOCATION <dir>
# CREATE TABLESPACE app LOCATION ‘/u101/pgsql/data’
PostgreSQL, administration alphorm.com™©
# CREATE TABLESPACE app LOCATION ‘/u101/pgsql/data’
53. Gestion d’une instance PostgreSQL
•• 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
PostgreSQL, administration alphorm.com™©
SyntaxeSyntaxe
DROP TABLESPACE [ IF EXISTS] <nom>
54. Gestion d’une instance PostgreSQL
•• Modifier des espaces de tableModifier des espaces de table
Renommer le tablespaceRenommer le tablespace
Changer le propriétaireChanger le propriétaire
SyntaxeSyntaxe
ALTER TABLESPACE nomtblspc RENAME nomtblspc2;
PostgreSQL, administration alphorm.com™©
ALTER TABLESPACE nomtblspc RENAME nomtblspc2;
ALTER TABLESPACE nomtblspc OWNER nomROLE;
55. Gestion des instances sous
PostgreSQL
PostgreSQL, administration alphorm.com™©
Site : http://alphorm.com
Blog : http://alphorm.com/blog
Forum : http://alphorm.com/forum
Noureddine DRISSI
Expert consultant bases de données
Contact : ndform@valneo-xi.fr
Initialisation d’une instance
56. 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 lautilise 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
PostgreSQL, administration alphorm.com™©
Nécessité de modifier les paramètres par défautNécessité de modifier les paramètres par défaut
•• shmmaxshmmax taille maximale d’un segment de mémoire partagéetaille maximale d’un segment de mémoire partagée
•• shmallshmall nombre maximale de pages de mémoire partagée (OS)nombre maximale de pages de mémoire partagée (OS)
59. Initialisation d'une instance
Création d’une instanceCréation d’une instance
Utilisation du programmeUtilisation du programme initdbinitdb
•• Les optionsLes options
•• --D <dir>D <dir> indique le répertoire de stockage des donnéesindique le répertoire de stockage des données
•• --U <utilisateur>U <utilisateur> indique le nom du super userindique le nom du super user
PostgreSQL, administration alphorm.com™©
•• --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
60. Initialisation d'une instance
Démarrage et arrêt d’une instanceDémarrage et arrêt d’une instance
Utilisation du programmeUtilisation 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 etet 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
PostgreSQL, administration alphorm.com™©
de redémarrer et de recharger le serveurde redémarrer et de recharger le serveur
63. Initialisation d'une instance
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
WindowsWindows
/etc/init.d/postgresql stop | start | restart | reload
PostgreSQL, administration alphorm.com™©
64. 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 deSupprimer tous les fichiers et répertoires à la racine de
l’instance ($PGDATA)l’instance ($PGDATA)
WindowsWindows
PostgreSQL, administration alphorm.com™©
WindowsWindows
•• Arrêtez le service PostgreSQLArrêtez le service PostgreSQL
•• Supprimer tous les fichiers et répertoire à la racine de l’instanceSupprimer tous les fichiers et répertoire à la racine de l’instance
($PGDATA)($PGDATA)
65. 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 deSupprimer tous les fichiers et répertoires à la racine de
l’instance ($PGDATA)l’instance ($PGDATA)
WindowsWindows
PostgreSQL, administration alphorm.com™©
WindowsWindows
•• Arrêtez le service PostgreSQLArrêtez le service PostgreSQL
•• Supprimer tous les fichiers et répertoire à la racine de l’instanceSupprimer tous les fichiers et répertoire à la racine de l’instance
($PGDATA)($PGDATA)
66. Gestion des instances sous
PostgreSQL
PostgreSQL, administration alphorm.com™©
Site : http://alphorm.com
Blog : http://alphorm.com/blog
Forum : http://alphorm.com/forum
Noureddine DRISSI
Expert consultant bases de données
Contact : ndform@valneo-xi.fr
Sécurisation d’une instance
67. Sécurisation d'une instance
Gérée parGérée par
LLe fichier «e fichier « pg_hba.confpg_hba.conf »»
Configure la manière d’authentifier les connexionsConfigure la manière d’authentifier les connexions
Par défaut autorise toutes les connexions localesPar défaut autorise toutes les connexions locales
Nécessaire de modifier ce fichier après l’installationNécessaire de modifier ce fichier après l’installation
PostgreSQL, administration alphorm.com™©
Nécessaire de modifier ce fichier après l’installationNécessaire de modifier ce fichier après l’installation
Les objets rôlesLes objets rôles
Pour la connexion et la sécurité au niveau des objetsPour la connexion et la sécurité au niveau des objets
68. Sécurisation d'une instance
Configuration de «Configuration de « pg_hba.confpg_hba.conf »»
Format d’une ligne d’authentificationFormat d’une ligne d’authentification
TypeType || BaseBase || UserUser || AdresseAdresse || MéthodeMéthode || OptionOption
•• Colonne « Type »Colonne « Type »
- local : connexion par une socket du domaine Unix (la colonne
PostgreSQL, administration alphorm.com™©
- local : connexion par une socket du domaine Unix (la colonne
adresse est vide) ;
- host : connexion chiffrée ou non par une socket TCP/IP ;
- hostssl : connexion chiffrée par une socket TCP/IP ;
- hostnossl : connexion non chiffrée par une socket TCP/IP.
69. Sécurisation d'une instance
Configuration de «Configuration de « pg_hba.confpg_hba.conf »»
Format d’une ligne d’authentificationFormat d’une ligne d’authentification
TypeType || BaseBase || UserUser || AdresseAdresse || MéthodeMéthode || OptionOption
•• Colonne « Base »Colonne « Base »
- all ;
PostgreSQL, administration alphorm.com™©
- all ;
- samerole, sameuser ;
- une liste de ces éléments séparés par une virgule.
70. Sécurisation d'une instance
Configuration de «Configuration de « pg_hba.confpg_hba.conf »»
Format d’une ligne d’authentificationFormat d’une ligne d’authentification
TypeType || BaseBase || UserUser || AdresseAdresse || MéthodeMéthode || OptionOption
•• Colonne « User »Colonne « User »
- all ;
PostgreSQL, administration alphorm.com™©
- all ;
- le nom d'un groupe (rôle) précédé du caractère « + » ;
- une liste de ces éléments séparés par une virgule.
71. Sécurisation d'une instance
Configuration de «Configuration de « pg_hba.confpg_hba.conf »»
Format d’une ligne d’authentificationFormat d’une ligne d’authentification
TypeType || BaseBase || UserUser || AdresseAdresse || MéthodeMéthode || OptionOption
•• Colonne « Adresse »Colonne « Adresse »
-- IP d'origine de la connexion au format CIDRIP d'origine de la connexion au format CIDR
PostgreSQL, administration alphorm.com™©
-- IP d'origine de la connexion au format CIDRIP d'origine de la connexion au format CIDR
-- Doit être vide lorsque le type est « local »Doit être vide lorsque le type est « local »
72. Sécurisation d'une instance
Configuration de «Configuration de « pg_hba.confpg_hba.conf »»
Format d’une ligne d’authentificationFormat d’une ligne d’authentification
TypeType || BaseBase || UserUser || AdresseAdresse || MéthodeMéthode || OptionOption
•• Colonne « Méthode »Colonne « Méthode »
- trust : autoriser sans même vérifier le mot de passe ;
PostgreSQL, administration alphorm.com™©
- trust : autoriser sans même vérifier le mot de passe ;
- reject : rejeter la connexion ;
- md5 : vérifier le mot de passe fourni (ne plus utiliser crypt ou
password) ;
- ident : utiliser le protocole IDENT pour vérifier l'utilisateur ;
- krb5, pam ou ldap : authentifications spécifiques.
73. Sécurisation d'une instance
Configuration de «Configuration de « pg_hba.confpg_hba.conf »»
Format d’une ligne d’authentificationFormat d’une ligne d’authentification
TypeType || BaseBase || UserUser || AdresseAdresse || MéthodeMéthode | [| [OptionOption ]]
•• Colonne « Méthode »Colonne « Méthode »
- trust : autoriser sans même vérifier le mot de passe ;
PostgreSQL, administration alphorm.com™©
- trust : autoriser sans même vérifier le mot de passe ;
- reject : rejeter la connexion ;
- md5 : vérifier le mot de passe fourni (ne plus utiliser crypt ou
password) ;
- ident : utiliser le protocole IDENT pour vérifier l'utilisateur ;
- krb5, pam ou ldap : authentifications spécifiques.
74. Sécurisation d'une instance
Les sessionsLes sessions
Connexion des clients via une socket UNIXConnexion des clients via une socket UNIX
Port d’écoute par défaut: 5432Port d’écoute par défaut: 5432
Quatre informations nécessaires pour ouvrir une sessionQuatre informations nécessaires pour ouvrir une session
Le nom/IP de la machine qui héberge l’instanceLe nom/IP de la machine qui héberge l’instance
PostgreSQL, administration alphorm.com™©
Le nom/IP de la machine qui héberge l’instanceLe nom/IP de la machine qui héberge l’instance
Le nom de la baseLe nom de la base
Le nom d’un rôleLe nom d’un rôle
Un mot de passe (si configuré dans « pg_hba.conf »Un mot de passe (si configuré dans « pg_hba.conf »
75. Prochain module :
Les outils d’administration sous
PostgreSQL, administration alphorm.com™©
Les outils d’administration sous
PostgreSQL
76. Les outils d’administration
sous PostgreSQL
PostgreSQL, administration alphorm.com™©
Site : http://alphorm.com
Blog : http://alphorm.com/blog
Forum : http://alphorm.com/forum
Noureddine DRISSI
Expert consultant bases de données
Contact : ndform@valneo-xi.fr
sous PostgreSQL
77. Les outils d’administration
Mode ligne de commandeMode ligne de commande
createdb, dropdbcreatedb, dropdb
createuser, dropusercreateuser, dropuser
reindexdb, vacuumdbreindexdb, vacuumdb
pg_dump, pg_dumpall, pg_restorepg_dump, pg_dumpall, pg_restore
PostgreSQL, administration alphorm.com™©
pg_dump, pg_dumpall, pg_restorepg_dump, pg_dumpall, pg_restore
initdb, clusterdb, postmaster, pg_ctlinitdb, clusterdb, postmaster, pg_ctl
psqlpsql, Droplang, pg_config, pg_resetxlog, pg_controldata,, Droplang, pg_config, pg_resetxlog, pg_controldata,
createlang, ipccleancreatelang, ipcclean
78. Les outils d’administration
Mode ligne de commandeMode ligne de commande
L’interpréteur de commande «L’interpréteur de commande « psqlpsql »»
Les principaux paramètresLes principaux paramètres
-h <machine>
-p <port>
PostgreSQL, administration alphorm.com™©
-p <port>
-d <nom base de données>
-U <utilisateur>
79. Les outils d’administration
Mode ligne de commandeMode ligne de commande
L’interpréteur de commande «L’interpréteur de commande « psqlpsql »»
Les variables utilisées par « psql » (.bash_profile)Les variables utilisées par « psql » (.bash_profile)
$PGDATA
$PGHOST
PostgreSQL, administration alphorm.com™©
$PGHOST
$PGDATABASE
$PGPORT
$PGUSER
82. Prochain module :
La gestion des transactions sous
PostgreSQL, administration alphorm.com™©
La gestion des transactions sous
PostgreSQL
83. La gestion des transactions
sous PostgreSQL
PostgreSQL, administration alphorm.com™©
Site : http://alphorm.com
Blog : http://alphorm.com/blog
Forum : http://alphorm.com/forum
Noureddine DRISSI
Expert consultant bases de données
Contact : ndform@valneo-xi.fr
sous PostgreSQL
84. 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 netoutes 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 dechaque transaction validée garantit un état cohérent de la base de
donnéesdonnées
•• IsolationIsolation les modifications d'une transaction sont invisibles aux autresles modifications d'une transaction sont invisibles aux autres
transactionstransactions
PostgreSQL, administration alphorm.com™©
transactionstransactions
•• DurabilitéDurabilité si la transaction est validée, les modifications engendrées sontsi la transaction est validée, les modifications engendrées sont
pérennespérennes
85. La gestion des transactions
TransactionsTransactions
Par défautPar défaut
•• aautocommitutocommit
Une transactionUne transaction
•• Démarrage d’une transaction avecDémarrage d’une transaction avec BEGINBEGIN
PostgreSQL, administration alphorm.com™©
•• COMMITCOMMIT permet de valider une transactionpermet de valider une transaction
•• ROLLBACKROLLBACK permet d’annuler une transactionpermet d’annuler une transaction
86. La gestion des transactions
TransactionsTransactions
SpécificitésSpécificités
•• Les instructions LDD sont prises en charge par les transactionsLes instructions LDD sont prises en charge par les transactions
•• La fermeture d'une session provoque un rollback impliciteLa fermeture d'une session provoque un rollback implicite
PostgreSQL, administration alphorm.com™©
87. La gestion des transactions
TransactionsTransactions
IsolationIsolation
•• Le standard SQLLe standard SQL
-- read uncommitedread uncommited
-- read commitedread commited
PostgreSQL, administration alphorm.com™©
-- repeatable readrepeatable read
-- serializableserializable
88. La gestion des transactions
TransactionsTransactions
IsolationIsolation
Modification du niveau d’isolationModification du niveau d’isolation
SET SESSION CHARACTERISTICS AS TRANSACTION ISOLATION LEVEL
{ SERIALIZABLE | REPEATABLE READ | READ COMMITTED | READ
UNCOMMITTED }
PostgreSQL, administration alphorm.com™©
89. La gestion des transactions
Les verrousLes verrous
Verrous implicitesVerrous implicites
Verrous expliciteVerrous explicite
•• Avec l'instructionAvec l'instruction locklock
•• En utilisant les clausesEn utilisant les clauses for updatefor update etet for sharefor share de l'instruction selectde l'instruction select
•• Les verrous ne peuvent être posés que dans le cadre d'une transactionLes verrous ne peuvent être posés que dans le cadre d'une transaction
PostgreSQL, administration alphorm.com™©
•• Les verrous ne peuvent être posés que dans le cadre d'une transactionLes verrous ne peuvent être posés que dans le cadre d'une transaction
commencéecommencé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èmeLa liste des verrous actifs est consultable dans la vue système pg_lockspg_locks
91. Gestion de la sécurité sous
PostgreSQL
PostgreSQL, administration alphorm.com™©
Site : http://alphorm.com
Blog : http://alphorm.com/blog
Forum : http://alphorm.com/forum
Noureddine DRISSI
Expert consultant bases de données
Contact : ndform@valneo-xi.fr
PostgreSQL
92. Gestion de la sécurité
Gestion des droits d’accèsGestion des droits d’accès
Utilise la notion de rôleUtilise la notion de rôle
Peut représenter un utilisateur ou un groupePeut représenter un utilisateur ou un groupe
•• Etre propriétaire d'objets de l'instance (bases de données,Etre propriétaire d'objets de l'instance (bases de données,
tables, etc.)tables, etc.)
•• Se voir octroyer des droits d'accès à des objets ou des droitSe voir octroyer des droits d'accès à des objets ou des droit
PostgreSQL, administration alphorm.com™©
•• Se voir octroyer des droits d'accès à des objets ou des droitSe voir octroyer des droits d'accès à des objets ou des droit
systèmesystème
•• Etre membre d'un autre rôleEtre membre d'un autre rôle
•• Se voir attribuer un mot de passeSe voir attribuer un mot de passe
•• Non lié au utilisateurs du système d’exploitationNon lié au utilisateurs du système d’exploitation
93. Gestion de la sécurité
Création des rôlesCréation des rôles
SyntaxeSyntaxe
CREATE ROLE nom_role [ [ WITH ] [ SUPERUSER ] [ CREATEDB ]
[ CREATEROLE ] [ LOGIN ]
[ ENCRYPTED PASSWORD 'mot_de_passe' ]
PostgreSQL, administration alphorm.com™©
[ IN ROLE nom_role [, ...] ]
[ ROLE nom_role [, ...] ] ]
94. Gestion de la sécurité
Suppression des rôlesSuppression des rôles
SyntaxeSyntaxe
DROP ROLE [ IF EXISTS ] nom
PostgreSQL, administration alphorm.com™©
95. Gestion de la sécurité
Les rôles groupesLes rôles groupes
Modélise la notion de groupe d’utilisateursModélise la notion de groupe d’utilisateurs
Suffit de créer un rôle sans mot de passeSuffit de créer un rôle sans mot de passe
Sans l’attribut LOGINSans l’attribut LOGIN
PostgreSQL, administration alphorm.com™©
96. Gestion de la sécurité
Les droitsLes droits
Basé sur les rôles et utilise les instructions SQLBasé sur les rôles et utilise les instructions SQL
GRANT et REVOKEGRANT et REVOKE
•• Octroyer ou révoquer des droits d'accès sur des objetsOctroyer ou révoquer des droits d'accès sur des objets
•• Ajouter ou retirer des rôles (utilisateurs) à d'autres rôlesAjouter ou retirer des rôles (utilisateurs) à d'autres rôles
(groupes)(groupes)
PostgreSQL, administration alphorm.com™©
(groupes)(groupes)
97. Gestion de la sécurité
Les droitsLes droits
Les attributs des rôles:Les attributs des rôles:
• LOGIN / NOLOGIN ;
• SUPERUSER / NOSUPERUSER ;
• CREATEDB / NOCREATEDB ;
PostgreSQL, administration alphorm.com™©
• CREATEROLE / NOCREATEROLE ;
• PASSWORD.
Associés aux rôles lors de leur création (CREATE ROLE) ou avecAssocié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 leLes 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)
98. 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
•• tables : SELECT | INSERT | UPDATE | DELETE | REFERENCES |tables : SELECT | INSERT | UPDATE | DELETE | REFERENCES |
TRIGGERTRIGGER
•• séquences : USAGE | SELECT | UPDATEséquences : USAGE | SELECT | UPDATE
•• base de données : CREATE | CONNECT | TEMPORARYbase de données : CREATE | CONNECT | TEMPORARY
PostgreSQL, administration alphorm.com™©
•• base de données : CREATE | CONNECT | TEMPORARYbase de données : CREATE | CONNECT | TEMPORARY
•• fonctions : EXECUTEfonctions : EXECUTE
•• langage : USAGElangage : USAGE
•• schémas : CREATE | USAGEschémas : CREATE | USAGE
•• espaces de tables : CREATEespaces de tables : CREATE
99. 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
PostgreSQL, administration alphorm.com™©
100. 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
PostgreSQL, administration alphorm.com™©
101. Gestion de la sécurité
Droits, objetsDroits, objets
Révocation des droits avec REVOKERévocation des droits avec REVOKE
SyntaxeSyntaxe
REVOKE [ GRANT OPTION FOR ]
{ privilège [,...] | ALL } ON [ type_objet ] nom_objet [, ...]
PostgreSQL, administration alphorm.com™©
FROM { nom_role | PUBLIC } [, ...] [ CASCADE | RESTRICT ]
102. Gestion de la sécurité
Droits, objetsDroits, objets
Bonnes pratiquesBonnes pratiques
•• Associer une base de données à un rôleAssocier une base de données à un rôle
•• Associer une base de données à une applicationAssocier une base de données à une application
•• Un schéma est associé à un rôle utilisateurUn schéma est associé à un rôle utilisateur
PostgreSQL, administration alphorm.com™©
•• 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
104. Les logs PostgreSQL
PostgreSQL, administration alphorm.com™©
Site : http://alphorm.com
Blog : http://alphorm.com/blog
Forum : http://alphorm.com/forum
Noureddine DRISSI
Expert consultant bases de données
Contact : ndform@valneo-xi.fr
Les logs d’activités
105. Gestion des logs
Les logs d’activitésLes logs d’activités
Enregistre les évènements pendant l’exécution du serveurEnregistre les évènements pendant l’exécution du serveur
Méthode d’enregistrementMéthode d’enregistrement
•• fsync, stderr, syslog, eventlog (Windows)fsync, stderr, syslog, eventlog (Windows)
Niveau de traceNiveau de trace
PostgreSQL, administration alphorm.com™©
•• Différentes nature de messageDifférentes nature de message
•• Possibilité d’ajuster le niveau de tracePossibilité d’ajuster le niveau de trace
106. 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 redirectionautorise 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 lesdétermine le répertoire dans lequel les
PostgreSQL, administration alphorm.com™©
•• log_directorylog_directory (string)(string) détermine le répertoire dans lequel lesdé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 applicatifsindique les noms des journaux applicatifs
crééscréés
•• ……
107. 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 messagecontrô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 messagecontrôle les niveaux de message
écrits dans les traces du serveurécrits dans les traces du serveur
PostgreSQL, administration alphorm.com™©
é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 descontrô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 dul'origine d'une erreur doit être enregistrée dans les traces du
serveurserveur
•• ……
108. 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 danstrace les points de vérification dans
les journaux applicatifsles journaux applicatifs
•• log_connections (boolean)log_connections (boolean) trace chaque tentative de connexiontrace chaque tentative de connexion
sur le serveur, ainsi que la réussite de l'authentification dusur le serveur, ainsi que la réussite de l'authentification du
clientclient
PostgreSQL, administration alphorm.com™©
sur le serveur, ainsi que la réussite de l'authentification dusur le serveur, ainsi que la réussite de l'authentification du
clientclient
•• log_duration (boolean)log_duration (boolean) indique le temps de chaque requêteindique 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
•• ……
109. 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 deindique 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 fichierindique la taille maximale d’un fichier
de tracesde traces
PostgreSQL, administration alphorm.com™©
de tracesde traces
•• ……
110. La gestion des transactions
sous PostgreSQL
PostgreSQL, administration alphorm.com™©
Site : http://alphorm.com
Blog : http://alphorm.com/blog
Forum : http://alphorm.com/forum
Noureddine DRISSI
Expert consultant bases de données
Contact : ndform@valneo-xi.fr
sous PostgreSQL
111. 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 queChaque transaction est écrite dans un fichier binaire, avant que
les données ne soient réellement écrites dans les fichiers deles 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
PostgreSQL, administration alphorm.com™©
Mécanisme qui garantit l’écriture des donnéesMécanisme qui garantit l’écriture des données
•• Permet d’obtenir de meilleures performances, tout enPermet d’obtenir de meilleures performances, tout en
garantissant l’écriture des donnéesgarantissant l’écriture des données
112. 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
PostgreSQL, administration alphorm.com™©
113. Gestion des logs
Les logs binaires ou WALLes logs binaires ou WAL
CaractéristiquesCaractéristiques
•• Chaque segment WAL a une taille de 16 MoChaque segment WAL a une taille de 16 Mo
•• Chaque segment est divisé en pages de 8 KoChaque segment est divisé en pages de 8 Ko
•• Les fichiers sont nommés suivant un nombre qui est toujoursLes fichiers sont nommés suivant un nombre qui est toujours
incrémenté et qui commence à 000000010000000000000000incrémenté et qui commence à 000000010000000000000000
PostgreSQL, administration alphorm.com™©
incrémenté et qui commence à 000000010000000000000000incrémenté et qui commence à 000000010000000000000000
•• Les segments WAL sont stockés dans le répertoireLes 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
114. 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 tracespermet de forcer l’écriture des fichiers de traces
binairesbinaires
•• checkpoint_segment(entier)checkpoint_segment(entier) indique l’écart maximum entreindique l’écart maximum entre
deux points de contrôledeux points de contrôle
PostgreSQL, administration alphorm.com™©
deux points de contrôledeux points de contrôle
•• checkpoint_timeout(entier)checkpoint_timeout(entier) indique le temps maximal, enindique 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 messagesdéclenche l’envoi de messages
dans les traces d’activités lorsque les points de contrôles sontdans 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
116. Le cache de données
PostgreSQL
PostgreSQL, administration alphorm.com™©
Site : http://alphorm.com
Blog : http://alphorm.com/blog
Forum : http://alphorm.com/forum
Noureddine DRISSI
Expert consultant bases de données
Contact : ndform@valneo-xi.fr
PostgreSQL
117. Le cache de données
Le cache PostgreSQLLe cache PostgreSQL
shared_buffersshared_buffers zone de travail principale partagéezone de travail principale partagée
wal_bufferswal_buffers cache pour les transactions WAL partagécache pour les transactions WAL partagé
temp_bufferstemp_buffers cache pour les tables temporaire localecache pour les tables temporaire locale
work_memwork_mem cache pour les opérations de triscache pour les opérations de tris
PostgreSQL, administration alphorm.com™©
maintenance_work_memmaintenance_work_mem cache pour les opérations de maintenancecache pour les opérations de maintenance
118. Le cache de données
Le cache PostgreSQLLe cache PostgreSQL
PostgreSQL, administration alphorm.com™©
119. Prochain module :
Gestion de la sécurité sous
PostgreSQL, administration alphorm.com™©
Gestion de la sécurité sous
PostgreSQL
120. Sauvegarde et Restauration
sous PostgreSQL
PostgreSQL, administration alphorm.com™©
Site : http://alphorm.com
Blog : http://alphorm.com/blog
Forum : http://alphorm.com/forum
Noureddine DRISSI
Expert consultant bases de données
Contact : ndform@valneo-xi.fr
Import Export
121. 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 enExport à partir d'une base de données ou une instance active en
utilisant le programmeutilisant le programme pg_dumppg_dump etet pg_dumpallpg_dumpall
Sauvegarde des fichiers de l'instance lorsqu'elle est arrêtéeSauvegarde 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
PostgreSQL, administration alphorm.com™©
122. Sauvegarde et restauration
Export avecExport avec pg_dumppg_dump
Permet de transférer rapidement des données entre bases dePermet de transférer rapidement des données entre bases de
donnéesdonnées
Supporte trois types de format, dont le SQLSupporte trois types de format, dont le SQL
Utilise les mêmes options de connexion queUtilise les mêmes options de connexion que psqlpsql
Simple d'emploi..Simple d'emploi..
PostgreSQL, administration alphorm.com™©
Simple d'emploi..Simple d'emploi..
123. Sauvegarde et restauration
Export avecExport avec pg_dumppg_dump
Trois types de formatsTrois types de formats
•• Format texteFormat texte SQLSQL (par défaut), les données seront restaurées(par défaut), les données seront restaurées
avec psqlavec psql
•• FormatFormat tartar, les données seront restaurées avec pg_restore, les données seront restaurées avec pg_restore
•• FormatFormat dumpdump spécifique, restauration avec pg_restorespécifique, restauration avec pg_restore
PostgreSQL, administration alphorm.com™©
•• FormatFormat dumpdump spécifique, restauration avec pg_restorespécifique, restauration avec pg_restore
124. Sauvegarde et restauration
Export avecExport avec pg_dumpallpg_dumpall
PermetPermet d’exporter toutes les bases de données d’une instanced’exporter toutes les bases de données d’une instance
Un seul type de format d’export SQLUn seul type de format d’export SQL
PostgreSQL, administration alphorm.com™©
125. Sauvegarde et Restauration
sous PostgreSQL
PostgreSQL, administration alphorm.com™©
Site : http://alphorm.com
Blog : http://alphorm.com/blog
Forum : http://alphorm.com/forum
Noureddine DRISSI
Expert consultant bases de données
Contact : ndform@valneo-xi.fr
Sauvegarde à froid
126. Sauvegarde et restauration
Sauvegarde à froidSauvegarde à froid
Arrêt de l’instanceArrêt de l’instance
Sauvegarde de la racine de l’instance $PGDATA au niveau systèmeSauvegarde de la racine de l’instance $PGDATA au niveau système
Sauvegarde des répertoires des espaces de tables au niveau systèmeSauvegarde des répertoires des espaces de tables au niveau système
PostgreSQL, administration alphorm.com™©
127. Sauvegarde et restauration
Restauration à partir d’une sauvegarde à froidRestauration à partir d’une sauvegarde à froid
Arrêt de l’instanceArrêt de l’instance
Suppression de tous les répertoires et fichiers de l’instanceSuppression de tous les répertoires et fichiers de l’instance
•• $PGDATA$PGDATA
•• Espaces de tableEspaces de table
PostgreSQL, administration alphorm.com™©
Restaurer les fichiers au niveau systèmeRestaurer les fichiers au niveau système
Démarrer l’instanceDémarrer l’instance
128. Sauvegarde et Restauration
sous PostgreSQL
PostgreSQL, administration alphorm.com™©
Site : http://alphorm.com
Blog : http://alphorm.com/blog
Forum : http://alphorm.com/forum
Noureddine DRISSI
Expert consultant bases de données
Contact : ndform@valneo-xi.fr
Sauvegarde à chaud
129. Sauvegarde et restauration
Sauvegarde à chaudSauvegarde à chaud
PréPré--requisrequis
•• Activer l'archivage des journaux des transactionsActiver l'archivage des journaux des transactions
- wal_level = archive
- archive_mode = on
PostgreSQL, administration alphorm.com™©
- archive_command = ‘cp %p /archives/%f’
•• Exécuter régulièrement une sauvegarde complète de l'instance.Exécuter régulièrement une sauvegarde complète de l'instance.
130. Sauvegarde et restauration
Sauvegarde à chaudSauvegarde à chaud
Mise en oeuvreMise en oeuvre
•• Exécution de la function SQLExécution de la function SQL pg_start_backuppg_start_backup
•• Sauvegarde des fichiers de l'instances à l'exception duSauvegarde des fichiers de l'instances à l'exception du
répertoire pg_xlogrépertoire pg_xlog
•• Exécution de la fonctionExécution de la fonction pg_stop_backuppg_stop_backup
PostgreSQL, administration alphorm.com™©
•• Exécution de la fonctionExécution de la fonction pg_stop_backuppg_stop_backup
- Une étiquette est conservée dans le fichier
$PGDATA/backup_label.
- Un fichier
$PGDATA/pg_xlog/000000010000x.xxxxxx.backup est créé
pour indiquer le dernier journal utilisé avant la sauvegarde.
131. Sauvegarde et restauration
Sauvegarde à chaudSauvegarde à chaud
RestaurationRestauration
• Si disponibles, mettre de côté les journaux du répertoire $PGDATA/pg_xlog
• Supprimer tous les fichiers et répertoires de l'instance et ses espaces de tables
• Restaurer la sauvegarde complète en prenant garde à rétablir les permissions
• Supprimer les fichiers dans $PGDATA/pg_xlog ou recréer ce répertoire
PostgreSQL, administration alphorm.com™©
• S'assurer que le répertoire $PGDATA/pg_xlog/archive_status existe
• Recopier les journaux éventuellement mis de côté dans $PGDATA/pg_xlog
• Créer un fichier recovery.conf dans $PGDATA à partir de recovery.conf.sample
• Démarrer PostgreSQL en s'assurant que les utilisateurs ne pourront se
connecter
132. Sauvegarde et restauration
Sauvegarde à chaudSauvegarde à chaud
RestaurationRestauration
•• Le fichierLe fichier recovery.confrecovery.conf
- restore_command = 'cp /archive/%f %p'
- recovery_target_time = '2008-04-23 11:20:55 EST'
PostgreSQL, administration alphorm.com™©
133. Sauvegarde et restauration
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 transactionJe lance une transaction T1T1 insertinsert
Je démarre Le mode sauvegarde à chaud sousJe démarre Le mode sauvegarde à chaud sous PostgreSQLPostgreSQL selectselect pg_start_backuppg_start_backup()()
Je réalise la sauvegarde au niveau du système d’exploitationJe réalise la sauvegarde au niveau du système d’exploitation tartar
J’arrête le mode sauvegarde à chaudJ’arrête le mode sauvegarde à chaud selectselect pg_stop_backuppg_stop_backup()()
Je lance une transactionJe lance une transaction T2T2 insertinsert
PostgreSQL, administration alphorm.com™©
Je lance une transactionJe lance une transaction T2T2 insertinsert
Je bascule vers un nouveau fichier journalJe bascule vers un nouveau fichier journal selectselect pg_switch_xlogpg_switch_xlog
Je lance une transactionJe lance une transaction T3T3 insertinsert
JeJe bascule vers un nouveau fichierbascule vers un nouveau fichier journaljournal selectselect pg_switch_xlogpg_switch_xlog
Je lance une transactionJe lance une transaction T4T4 insertinsert
JeJe bascule vers un nouveau fichierbascule vers un nouveau fichier journaljournal selectselect pg_switch_xlogpg_switch_xlog
135. Administrer au quotidien
PostgreSQL
PostgreSQL, administration alphorm.com™©
Site : http://alphorm.com
Blog : http://alphorm.com/blog
Forum : http://alphorm.com/forum
Noureddine DRISSI
Expert consultant bases de données
Contact : ndform@valneo-xi.fr
Les bases de données
136. 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 basesLes relations (tables, indexes, etc.) sont stockées dans les bases
de donnéesde données
PostgreSQL, administration alphorm.com™©
de donnéesde données
•• Pour chaque base, il existe au mois le schémaPour chaque base, il existe au mois le schéma publicpublic et leset les
catalogues (catalogues (information_schemainformation_schema etet pg_catalogpg_catalog))
137. 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 fichierLes données de chaque relation sont stockées dans un fichier
identifié par son OIDidentifié par son OID
-- $PGDATA/base/oid_bdd/filenode_relation$PGDATA/base/oid_bdd/filenode_relation
•• Exception pour la base de données postgresException pour la base de données postgres
PostgreSQL, administration alphorm.com™©
•• Exception pour la base de données postgresException pour la base de données postgres
-- $PGDATA/global$PGDATA/global
138. Administrer au quotidien
Création des bases de donnéesCréation des bases de données
SyntaxeSyntaxe
CREATE DATABASE nom
[ [ WITH ] [ OWNER [=] utilisateur ] [ TEMPLATE [=] modèle ]
[ ENCODING [=] encodage ] [ TABLESPACE [=] espace_de_tables ]
PostgreSQL, administration alphorm.com™©
Le propriétaire par défaut est l'utilisateur connectéLe propriétaire par défaut est l'utilisateur connecté
La base de données modèle par défaut estLa base de données modèle par défaut est template1template1
L'encodage par défaut est celui de l'instanceL'encodage par défaut est celui de l'instance
L'espace de tables par défaut estL'espace de tables par défaut est pg_defaultpg_default
Disposer du droit createdb pour pouvoir créer une baseDisposer du droit createdb pour pouvoir créer une base
139. Administrer au quotidien
Suppression des bases de donnéesSuppression des bases de données
SyntaxeSyntaxe
DROP DATABASE [ IF EXISTS] nom
Aucune connexion sur la base de données à supprimerAucune connexion sur la base de données à supprimer
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
PostgreSQL, administration alphorm.com™©
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
140. 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 unePermet 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 nomLes 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 »
PostgreSQL, administration alphorm.com™©
La variableLa variable search_pathsearch_path est utilisée pour la recherche dans lesest utilisée pour la recherche dans les
schémasschémas
141. Administrer au quotidien
Création des schémasCréation des schémas
SyntaxeSyntaxe
CREATE SCHEMA nom [ AUTHORIZATION utilisateur ]
Le propriétaire par défaut est l'utilisateur connectéLe propriétaire par défaut est l'utilisateur connecté
PostgreSQL, administration alphorm.com™©
Le propriétaire par défaut est l'utilisateur connectéLe propriétaire par défaut est l'utilisateur connecté
Pour créer un schémaPour créer un schéma
•• Être administrateurÊtre administrateur
•• Avoir le privilègeAvoir le privilège createcreate sur la base de données ciblesur la base de données cible
142. Administrer au quotidien
Suppression des schémasSuppression des schémas
SyntaxeSyntaxe
DROP SCHEMA [ IF EXISTS ] nom [ CASCADE ]
Seul l’administrateur ou le propriétaire peu supprimer un schémaSeul l’administrateur ou le propriétaire peu supprimer un schéma
L’option CASCADE permet de supprimer un schéma qui possède des objetsL’option CASCADE permet de supprimer un schéma qui possède des objets
PostgreSQL, administration alphorm.com™©
L’option CASCADE permet de supprimer un schéma qui possède des objetsL’option CASCADE permet de supprimer un schéma qui possède des objets
143. Administrer au quotidien
Suppression des schémasSuppression des schémas
SyntaxeSyntaxe
DROP SCHEMA [ IF EXISTS ] nom [ CASCADE ]
Seul l’administrateur ou le propriétaire peu supprimer un schémaSeul l’administrateur ou le propriétaire peu supprimer un schéma
L’option CASCADE permet de supprimer un schéma qui possède des objetsL’option CASCADE permet de supprimer un schéma qui possède des objets
PostgreSQL, administration alphorm.com™©
L’option CASCADE permet de supprimer un schéma qui possède des objetsL’option CASCADE permet de supprimer un schéma qui possède des objets