Table des matières
- Avant-propos
- 1. MySQL en quelques mots
- 2. Objectifs du livre
- 3. Description
- Généralités sur MySQL
- 1. Introduction
- 2. Architecture
- 2.1 Le serveur et les clients
- 2.2 Les protocoles de communication
- 3. Utilisation des ressources matérielles
- 3.1 Utilisation du disque
- 3.2 Utilisation de la mémoire
- 3.3 Utilisation du processeur
- 3.4 Utilisation du réseau
- 4. Variantes de MySQL
- 4.1 MariaDB
- 4.2 Percona Server
- 4.3 Amazon RDS/Aurora
- 4.4 Galera
- 5. Les moteurs de stockage
- 5.1 InnoDB
- 5.1.1 Fonctionnement résumé
- 5.1.2 Fonctionnalités principales
- 5.2 MyISAM
- 5.3 Memory
- 5.4 Archive
- 5.5 XtraDB
- 5.6 TokuDB
- 5.7 RocksDB
- 5.8 Autres moteurs
- 5.1 InnoDB
- 6. Verrous et transactions
- 6.1 Verrous implicites
- 6.1.1 Généralités
- 6.1.2 Spécificités InnoDB
- 6.2 Verrous explicites
- 6.2.1 Verrous de tables
- 6.2.2 Spécificités InnoDB
- 6.2.3 Modificateurs SKIP LOCKED et NOWAIT
- 6.3 Verrous coopératifs
- 6.4 Transactions
- 6.4.1 Généralités
- 6.4.2 InnoDB et les transactions
- 6.4.3 Mêler moteur transactionnel et moteur non transactionnel
- 6.4.4 Interblocages (deadlocks)
- 6.1 Verrous implicites
- Installation du serveur
- 1. Généralités
- 1.1 Stabilité des versions
- 1.2 Version communautaire et version Enterprise
- 1.3 Cycle de développement
- 1.4 Choix du type d’installation
- 2. Installation sous Linux/UNIX
- 2.1 Installation par gestionnaire de paquets
- 2.2 Installation avec les binaires précompilés
- 2.3 Démarrage du serveur
- 2.3.1 Script mysql.server
- 2.3.2 Script mysqld_safe
- 2.3.3 Invocation directe de mysqld
- 2.4 Arrêt du serveur
- 2.4.1 systemd
- 2.4.2 Script mysql.server
- 2.4.3 mysqladmin
- 2.4.4 Commande kill
- 2.5 Résolution de problèmes d’installation courants
- 2.5.1 Erreurs InnoDB
- 2.5.2 Fichier errmsg.sys introuvable
- 2.6 Sécurisation de l’installation
- 2.7 Installation de plusieurs instances
- 2.7.1 Précautions à prendre
- 2.7.2 Installation de versions différentes
- 2.7.3 Utilisation du même binaire qu’une autre instance
- 2.7.4 Démarrage et arrêt des instances avec mysqld_multi
- 3. Installation sous Windows
- 3.1 Utilisation de l’installeur
- 3.2 Installation avec les binaires
- 3.3 Démarrage du serveur
- 3.3.1 Service
- 3.3.2 Invocation directe de mysqld
- 3.4 Arrêt du serveur
- 3.4.1 Service
- 3.4.2 mysqladmin
- 3.4.3 Gestionnaire des tâches
- 3.5 Résolution des problèmes d’installation
- 3.5.1 Droits insuffisants
- 3.5.2 Conflit avec une installation existante
- 3.5.3 Problèmes dans les chemins
- 3.6 Sécurisation de l’installation
- 3.7 Installation de plusieurs instances
- 3.7.1 Précautions à prendre
- 3.7.2 Versions différentes
- 3.7.3 Utilisation du même binaire
- 4. Installations de test avec Docker
- 4.1 Introduction
- 4.2 Installation
- 4.3 Utilisation
- 5. Mise à jour de MySQL
- 5.1 Précautions à prendre avant la mise à jour
- 5.1.1 Sauts de version
- 5.1.2 Changements apportés par une version
- 5.1.3 Sauvegarde des données
- 5.2 Processus de mise à jour
- 5.2.1 Stratégies possibles
- 5.2.2 Mise à jour des binaires
- 5.2.3 Vérification des tables
- 5.3 Vérifications après la mise à jour
- 5.1 Précautions à prendre avant la mise à jour
- 6. Installation des outils utilisés dans l’ouvrage
- 6.1 Installation de la base world
- 6.2 Installation de la base sakila
- 7. Installation du Percona Toolkit
- 1. Généralités
- Configuration du serveur
- 1. Introduction
- 2. Généralités
- 2.1 Fichier de configuration
- 2.2 Structure du fichier de configuration
- 2.3 Paramétrage dynamique du serveur
- 2.3.1 Changement pour la session
- 2.3.2 Changement global
- 3. Visualisation de la configuration
- 4. Configuration d’InnoDB
- 4.1 Paramètres essentiels
- 4.2 Isolation et durabilité
- 4.2.1 Réglage de l’isolation
- 4.2.2 Réglage de la durabilité
- 4.3 Autres paramètres
- 5. La journalisation
- 5.1 Le journal binaire
- 5.2 Le journal des requêtes lentes
- 5.3 Le journal des erreurs
- 5.4 Le journal général
- 5.5 Rotation des journaux
- 5.6 Bonnes pratiques
- 5.6.1 Configuration
- 5.6.2 Surveiller l’utilisation du disque
- 5.6.3 Impact sur les performances
- 6. Le mode SQL
- 6.1 Les modes usuels
- 6.2 Les combinaisons de modes
- 6.3 Mode SQL par défaut
- 7. Autres paramètres à configurer
- 7.1 Autres variables
- 7.1.1 Nombre de connexions simultanées
- 7.1.2 Caches de table
- 7.1.3 Cache de threads
- 7.1.4 Paramètres MyISAM
- 7.2 Paramètres à ne pas modifier
- 7.1 Autres variables
- Sécurité et gestion des utilisateurs
- 1. Introduction
- 2. Sécurisation du serveur
- 2.1 Sécurisation de l’installation
- 2.1.1 Contrôler les droits
- 2.1.2 Ajouter un mot de passe au compte utilisateur root
- 2.1.3 Supprimer les comptes anonymes
- 2.1.4 Supprimer le schéma test
- 2.1.5 Sécuriser votre installation avec l’outil mysql_secure_installation
- 2.2 Chiffrement des données
- 2.3 Utilisation de SSL/TLS
- 2.4 Options liées à la sécurité
- 2.4.1 skip-networking
- 2.4.2 bind-address
- 2.4.3 skip-name-resolve
- 2.4.4 skip-show-database
- 2.4.5 secure-file-priv
- 2.1 Sécurisation de l’installation
- 3. Gestion des comptes utilisateurs
- 3.1 Introduction
- 3.2 Comptes utilisateurs
- 3.2.1 Créer un compte
- 3.2.2 Modifier le mot de passe
- 3.2.3 Utilitaire de configuration des mots de passe
- 3.2.4 Récupérer le mot de passe administrateur
- 3.3 Rôles
- 3.4 Attribution des droits
- 3.4.1 Les droits d’administration
- 3.4.2 Les droits au niveau des schémas
- 3.4.3 Les droits au niveau des tables
- 3.4.4 Les droits au niveau des colonnes
- 3.4.5 Les droits pour les routines stockées
- 3.4.6 Limitation de l’utilisation des ressources
- 3.4.7 Visualisation des droits
- 3.4.8 Prise d’effet des droits
- 3.4.9 Suppression des droits
- 3.4.10 Bonnes pratiques de la gestion des droits
- 3.4.11 Sécurisation des vues et des routines stockées
- 4. Plugins de sécurité avancée
- 4.1 Validation des mots de passe
- 4.2 Expiration du mot de passe
- 4.3 Contrôle des connexions
- Sauvegarde et restauration
- 1. Généralités
- 1.1 Introduction
- 1.2 Différents types de sauvegarde
- 1.2.1 Sauvegarde logique
- 1.2.2 Sauvegarde physique
- 1.2.3 Sauvegarde complète/incrémentale
- 1.3 Autres facteurs influençant la sauvegarde
- 1.3.1 Réplication
- 1.3.2 Moteurs de stockage
- 1.3.3 Utilisation combinée de MyISAM et InnoDB
- 1.4 Restauration
- 2. En pratique
- 2.1 Import/export manuel
- 2.2 mysqldump
- 2.3 Percona XtraBackup
- 2.4 Autres solutions
- 2.4.1 mysqlpump
- 2.4.2 mydumper
- 2.4.3 Snapshots (clichés)
- 1. Généralités
- Optimisation
- 1. Matériel et système d’exploitation
- 1.1 Processeur
- 1.2 Mémoire vive
- 1.3 Disque dur
- 1.3.1 Éléments de choix
- 1.3.2 RAID
- 1.3.3 SSD
- 1.4 Système d’exploitation
- 2. Optimisation du schéma
- 2.1 Types de données
- 2.1.1 Principes généraux
- 2.1.2 Nombres
- 2.1.3 Chaînes de caractères
- 2.1.4 Données binaires
- 2.1.5 Dates et heures
- 2.1.6 ENUM et SET
- 2.1.7 JSON
- 2.2 Normalisation
- 2.2.1 Rôle de la normalisation
- 2.2.2 Première forme normale
- 2.2.3 Deuxième forme normale
- 2.2.4 Troisième forme normale
- 2.2.5 Résumé des avantages de la normalisation
- 2.2.6 Inconvénients de la normalisation
- 2.3 Dénormalisation
- 2.4 Modification du schéma en production
- 2.1 Types de données
- 3. Indexation
- 3.1 Généralités sur les index
- 3.1.1 Rôle d’un index
- 3.1.2 Clés et index
- 3.1.3 Colonnes pouvant bénéficier d’un index
- 3.1.4 Création/suppression d’un index
- 3.1.5 Quelles colonnes indexer ?
- 3.2 Types d’index
- 3.2.1 Index uniques
- 3.2.2 Clés primaires
- 3.2.3 Index non uniques
- 3.2.4 Index sur plusieurs colonnes
- 3.2.5 Index sur un préfixe de colonne
- 3.2.6 Index redondants
- 3.2.7 Clés étrangères
- 3.2.8 Index invisibles
- 3.3 Notions avancées
- 3.3.1 Index B-Tree
- 3.3.2 Index hash
- 3.3.3 Autres algorithmes d’indexation
- 3.3.4 Sélectivité et distribution des valeurs
- 3.3.5 Index cluster InnoDB
- 3.3.6 Index couvrant
- 3.1 Généralités sur les index
- 4. La commande EXPLAIN
- 4.1 Rôle
- 4.2 Accès aux données
- 4.2.1 Accès séquentiel ou aléatoire
- 4.2.2 Accès en mémoire ou sur disque
- 4.2.3 En résumé
- 4.3 Lire le plan d’exécution
- 4.3.1 Exemple simple
- 4.3.2 Jointures
- 4.3.3 Unions
- 4.3.4 Sous-requêtes
- 4.4 Colonnes principales
- 4.4.1 Types d’accès aux données
- 4.4.2 Index examinés
- 4.4.3 Nombre de lignes parcourues
- 4.4.4 La colonne filtered
- 4.4.5 La colonne Extra
- 4.5 EXPLAIN EXTENDED
- 5. Optimisation des requêtes
- 5.1 Isolation des colonnes
- 5.2 Jointures
- 5.3 Filtrages
- 5.4 Tris
- 5.5 Agrégations
- 5.6 Réécriture de requêtes
- 5.7 Utilisation de plusieurs index
- 5.8 Autres techniques
- 6. Autres optimisations
- 6.1 Index Condition Pushdown
- 6.2 Multi Range Read
- 7. Maintenance des tables
- 7.1 Mise à jour des statistiques d’index
- 7.2 Défragmentation des tables
- 7.3 Autres commandes
- 1. Matériel et système d’exploitation
- Réplication
- 1. Généralités sur la réplication
- 1.1 Utilité de la réplication
- 1.2 Fonctionnement de la réplication
- 1.3 Formats de réplication
- 2. Mise en place de la réplication
- 2.1 Réplication maître-esclave(s)
- 2.1.1 Configuration
- 2.1.2 Forces et faiblesses de cette configuration
- 2.2 Réplication maître-maître
- 2.2.1 Configuration
- 2.2.2 Forces et faiblesses de cette configuration
- 2.3 Réplication sur plusieurs niveaux
- 2.3.1 Configuration
- 2.3.2 Forces et faiblesses de cette configuration
- 2.4 Principales variables
- 2.1 Réplication maître-esclave(s)
- 3. Résolution des problèmes opérationnels courants
- 3.1 Empêcher la réplication de certaines requêtes
- 3.2 Non-réplication d’une requête
- 3.3 Éviter le retard de réplication
- 3.4 Corriger une erreur de réplication
- 3.5 Récupérer l’espace disque des journaux binaires
- 3.6 Supprimer la configuration de réplication
- 3.7 Vérifier la cohérence des données entre maître et esclaves
- 3.8 Quelques commandes utiles
- 3.8.1 SHOW SLAVE STATUS
- 3.8.2 START/STOP SLAVE {IO_THREAD|SQL_THREAD}
- 3.8.3 RESET MASTER
- 4. Réplication et scalabilité
- 4.1 Scalabilité en lecture
- 4.2 Scalabilité en écriture
- 5. Fonctionnalités avancées
- 5.1 Identifiants de transaction
- 5.2 Réplication parallèle
- 5.3 Réplication multisource
- 5.3.1 Introduction
- 5.3.2 Mise en place
- 5.4 Réplication semi-synchrone
- 5.4.1 Introduction
- 5.4.2 Mise en place
- 5.4.3 Améliorations à partir de MySQL 5.7
- 5.5 Réplication retardée
- 1. Généralités sur la réplication
- Haute disponibilité
- 1. Introduction
- 2. Utilisation de la réplication classique
- 2.1 Mécanisme de promotion d’un esclave
- 2.2 Automatisation de la promotion
- 3. Réplication de groupe et InnoDB Cluster
- 3.1 Introduction
- 3.2 Bénéfices/limitations
- 3.3 Réplication virtuellement synchrone
- 3.4 Écritures sur plusieurs nœuds
- 3.5 Le flow control
- 3.6 Choix du nombre de nœuds
- 3.7 Nœuds géographiquement éloignés
- 3.8 Mise en place
- 3.9 InnoDB Cluster
- Support JSON et Document Store
- 1. Colonnes générées
- 1.1 Introduction
- 1.2 Colonnes virtuelles
- 1.3 Colonnes persistantes
- 2. Support JSON
- 2.1 Le type de données JSON
- 3. Exemple d’opérations sur des colonnes JSON
- 3.1 Indexation
- 4. Document Store
- 4.1 SQL et NoSQL
- 4.2 Installation et vocabulaire associé
- 4.2.1 Installation du Document Store
- 4.2.2 Installation du MySQL Shell
- 4.2.3 Collections et documents
- 4.2.4 La base exemple world_x
- 4.3 Exemple d’utilisation
- 1. Colonnes générées
- Autres fonctionnalités
- 1. Partitionnement
- 1.1 Intérêt et limitations
- 1.1.1 Gestion des gros volumes
- 1.1.2 Partition pruning
- 1.1.3 Suppression rapide d’un gros volume de données
- 1.1.4 Limitations
- 1.2 Types de partitionnement
- 1.2.1 Le partitionnement de type RANGE
- 1.2.2 Le partitionnement de type RANGE COLUMNS
- 1.2.3 Le partitionnement de type LIST
- 1.2.4 Le partitionnement de type LIST COLUMNS
- 1.2.5 Le partitionnement de type HASH
- 1.2.6 Le partitionnement de type KEY
- 1.2.7 Les variantes LINEAR HASH/KEY
- 1.2.8 Choix explicite d’une partition
- 1.2.9 Sous-partitionnement
- 1.2.10 Fonctions du partitionnement
- 1.2.11 Import et export d’une partition dans une table
- 1.3 Gestion du partitionnement
- 1.4 Maintenance
- 1.1 Intérêt et limitations
- 2. Routines stockées
- 2.1 Rôle
- 2.2 Syntaxe
- 2.2.1 Procédures stockées
- 2.2.2 Fonctions stockées
- 2.3 Utilisation
- 2.4 Métadonnées
- 2.5 Restrictions
- 3. Déclencheurs (triggers)
- 3.1 Rôle
- 3.2 Syntaxe
- 3.3 Restrictions
- 4. Événements
- 4.1 Rôle
- 4.2 Syntaxe
- 4.3 Restrictions
- 5. Vues
- 5.1 Rôle
- 5.2 Syntaxe
- 6. Nouvelles fonctionnalités de MySQL 8.0
- 6.1 Fonctions de fenêtrage
- 6.2 Requêtes avec WITH (Common Table Expressions)
- 1. Partitionnement
- Outils de surveillance
Soyez le premier à donner votre avis sur “MySQL 8 Administration et optimisation”