Table des matières
- Avant-propos
- 1. MySQL en quelques mots
- 2. Objectifs du livre
- 3. Description
- 4. Conventions
- Généralités sur MariaDB
- 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. Les moteurs de stockage
- 4.1 InnoDB
- 4.1.1 Fonctionnement résumé
- 4.1.2 Fonctionnalités principales
- 4.2 XtraDB
- 4.3 MyISAM
- 4.4 Memory
- 4.5 Archive
- 4.6 TokuDB
- 4.7 ColumnStore
- 4.8 Autres moteurs
- 4.1 InnoDB
- 5. Verrous et transactions
- 5.1 Verrous implicites
- 5.1.1 Généralités
- 5.1.2 Spécificités InnoDB
- 5.2 Verrous explicites
- 5.2.1 Verrous de tables
- 5.2.2 Spécificités InnoDB
- 5.3 Verrous coopératifs
- 5.4 Transactions
- 5.4.1 Généralités
- 5.4.2 InnoDB et les transactions
- 5.4.3 Mêler moteur transactionnel et moteur non transactionnel
- 5.4.4 Interblocages (deadlocks)
- 5.1 Verrous implicites
- Installation du serveur
- 1. Généralités
- 1.1 Stabilité des versions
- 1.2 Cycle de développement
- 1.3 Choix du type d’installation
- 2. Installation sous UNIX et dérivés
- 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 Script mysql.server
- 2.4.2 mysqladmin
- 2.4.3 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
- 2.8 MySQL Sandbox
- 2.8.1 Présentation de MySQL Sandbox
- 2.8.2 Installation
- 2.8.3 Création d’une instance
- 2.8.4 Création de deux instances indépendantes
- 2.8.5 Autres possibilités
- 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. MariaDB et Docker
- 4.1 Présentation
- 4.2 Installation
- 4.3 Utilisation
- 5. Mise à jour de MariaDB
- 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. Comment configurer le serveur ?
- 2.1 Paramétrage lors de la compilation
- 2.2 Paramétrage dans le fichier de configuration
- 2.2.1 Localisation du fichier de configuration
- 2.2.2 Structure du fichier de configuration
- 2.3 Paramétrage au lancement de mysqld
- 2.4 Paramétrage dynamique du serveur
- 2.4.1 Changement pour la session
- 2.4.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 Bonnes pratiques
- 5.5.1 Configuration
- 5.5.2 Surveiller l’utilisation du disque
- 5.5.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 Paramètres MyISAM
- 7.2 Cache de requêtes
- 7.2.1 Rôle du cache
- 7.2.2 Activation du cache
- 7.2.3 Requêtes exclues du cache
- 7.2.4 Appel à un élément du cache
- 7.2.5 Mise à jour du cache
- 7.2.6 Fragmentation
- 7.2.7 Utilité du cache
- 7.2.8 Paramètres associés au cache
- 7.2.9 Configuration de la taille du cache
- 7.2.10 Détermination de l’efficacité du cache
- 7.2.11 Réduction de la fragmentation
- 7.3 Autres variables
- 7.3.1 Nombre de connexions simultanées
- 7.3.2 Caches de table
- 7.3.3 Cache de threads
- 7.3.4 Paramètres à ne pas modifier
- Sécurité et gestion des utilisateurs
- 1. Introduction
- 2. Sécurisation du serveur MariaDB
- 2.1 Sécurisation de l’installation
- 2.1.1 Contrôler les droits
- 2.1.2 Mettre 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 Utilisation de SSL
- 2.2.1 Les options
- 2.2.2 Les principales étapes
- 2.1 Sécurisation de l’installation
- 3. Chiffrement des données
- 4. Les options pour renforcer la sécurité
- 4.1 skip-networking
- 4.2 bind-address
- 4.3 skip-name-resolve
- 4.4 skip-show-database
- 4.5 secure-file-priv
- 4.6 chroot
- 5. Gestion des utilisateurs et des mots de passe
- 5.1 Connexion aux comptes utilisateur
- 5.2 Gestion des comptes utilisateur
- 5.3 Rôles
- 5.4 Plug-ins d’authentification
- 5.5 Plug-in de validation des mots de passe
- 5.6 Expiration du mot de passe
- 5.7 Attribution des droits
- 5.7.1 Les droits d’administration
- 5.7.2 Les droits au niveau des schémas
- 5.7.3 Les droits au niveau des tables
- 5.7.4 Les droits au niveau des colonnes
- 5.7.5 Les droits pour les routines stockées
- 5.8 Limitation de l’utilisation des ressources
- 5.9 Visualisation des droits
- 5.10 Prise d’effet des droits
- 5.11 Suppression des droits
- 5.12 Bonnes pratiques de la gestion des droits
- 6. Sécurisation des vues et des routines stockées
- Sauvegarde et restauration
- 1. Généralités
- 1.1 Introduction
- 1.2 Sauvegarde logique
- 1.3 Sauvegarde physique
- 1.4 Sauvegarde complète/incrémentale
- 1.5 Sauvegarde et réplication
- 1.6 Sauvegarde et moteurs de stockage
- 1.6.1 MyISAM
- 1.6.2 InnoDB
- 1.6.3 MyISAM et InnoDB
- 1.7 Restauration
- 2. En pratique
- 2.1 Import/export manuel
- 2.2 mysqldump
- 2.3 Percona XtraBackup
- 2.4 Autres solutions
- 2.4.1 mylvmbackup
- 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.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.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.4 Indexation FULLTEXT
- 3.4.1 Notions principales sur l’indexation FULLTEXT
- 3.4.2 Recherche en langage naturel
- 3.4.3 Recherche booléenne
- 3.4.4 Recherche avec expansion de requête
- 3.4.5 Configuration de la recherche
- 3.4.6 Performance
- 3.4.7 Limitations et points à connaître
- 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 Requêtes différentes de SELECT
- 4.3.3 Jointures
- 4.3.4 Unions
- 4.3.5 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 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. 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 haute disponibilité
- 4.1 Promotion d’un esclave
- 4.2 Automatisation de la promotion
- 5. Réplication et scalabilité
- 5.1 Scalabilité en lecture
- 5.2 Scalabilité en écriture
- 6. Fonctionnalités avancées
- 6.1 Identifiants de transaction
- 6.2 Réplication parallèle
- 6.3 Réplication multisource
- 6.3.1 Introduction
- 6.3.2 Mise en place
- 6.4 Réplication semi-synchrone
- 6.4.1 Introduction
- 6.4.2 Mise en place
- 6.4.3 Nouveautés avec MariaDB 10.1
- 6.5 Réplication retardée
- 1. Généralités sur la réplication
- MariaDB Galera Cluster
- 1. Introduction
- 1.1 Bénéfices
- 1.2 La réplication synchrone
- 1.3 Écritures simultanées sur plusieurs nœuds
- 1.4 Synchronisation des données
- 1.5 Haute disponibilité
- 1.6 Limitations
- 2. Mise en place d’un cluster
- 2.1 Préparation de la configuration
- 2.2 Démarrage du premier nœud
- 2.3 Démarrage des autres nœuds
- 3. Optimisation
- 3.1 Configuration
- 3.2 Choix du nombre de nœuds
- 3.3 Nœuds géographiquement éloignés
- 3.4 Utilisation d’un load balancer pour la haute disponibilité
- 3.5 Éviter le flow control
- 3.6 Surveillance du cluster
- 1. Introduction
- Autres fonctionnalités
- 1. Partitionnement
- 1.1 Intérêt et limitations
- 1.1.1 Gestion de la montée en charge
- 1.1.2 Gestion des gros volumes
- 1.1.3 Partition pruning
- 1.1.4 Suppression rapide d’un gros volume de données
- 1.1.5 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. Colonnes générées
- 6.1 Introduction
- 6.2 Colonnes persistentes
- 6.3 Colonnes virtuelles
- 1. Partitionnement
- Outils de surveillance
- 1. Introduction
Soyez le premier à donner votre avis sur “MariaDB Administration et optimisation”