0% ont trouvé ce document utile (0 vote)
25 vues4 pages

TP My SQL Admin Avance Corrige

Ce document présente un corrigé détaillé d'un TP sur l'administration avancée de MySQL, incluant la création de tables, la gestion des transactions, l'indexation, la sauvegarde et la restauration, ainsi que la réplication et le partitionnement. Il fournit des instructions précises pour chaque étape, accompagnées de commandes SQL nécessaires. L'objectif est d'acquérir des compétences avancées en administration MySQL sur une machine locale.

Transféré par

kpdriss
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
25 vues4 pages

TP My SQL Admin Avance Corrige

Ce document présente un corrigé détaillé d'un TP sur l'administration avancée de MySQL, incluant la création de tables, la gestion des transactions, l'indexation, la sauvegarde et la restauration, ainsi que la réplication et le partitionnement. Il fournit des instructions précises pour chaque étape, accompagnées de commandes SQL nécessaires. L'objectif est d'acquérir des compétences avancées en administration MySQL sur une machine locale.

Transféré par

kpdriss
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

TP 2 : Administration Avancée de MySQL - Corrigé détaillé

Schéma des tables utilisées


Avant de commencer, voici les tables principales utilisées dans ce TP :

CREATE TABLE departement (


id_dept INT AUTO_INCREMENT PRIMARY KEY,
nom_dept VARCHAR(50) NOT NULL
);

CREATE TABLE employe (


id_emp INT AUTO_INCREMENT PRIMARY KEY,
nom VARCHAR(50),
prenom VARCHAR(50),
id_dept INT,
chef INT NULL,
FOREIGN KEY (id_dept) REFERENCES departement(id_dept),
FOREIGN KEY (chef) REFERENCES employe(id_emp)
);

CREATE TABLE logs (


id_log INT AUTO_INCREMENT PRIMARY KEY,
date_action DATE NOT NULL,
utilisateur VARCHAR(50) NOT NULL,
action TEXT NOT NULL
);

Pour exécuter le script complet de création et d’insertion des données :

mysql -u root -p < chemin/vers/script.sql

Objectif du TP
Acquérir des compétences avancées en administration MySQL sur une machine locale : sécurité,
performances, transactions, sauvegarde/restauration, réplication et partitionnement.

1) Gestion du service MySQL

• Démarrage/arrêt du service : Utilisez Windows Services pour démarrer ou arrêter MySQL.


• Vérification du port : par défaut, MySQL écoute sur le port 3306, vérifier dans my.ini .
• Localisation du fichier de configuration : my.ini contient les paramètres du serveur.
• Vérification des logs : chemins des journaux pour suivi et débogage.

1
2) Transactions et verrous

• Création d'une table test :

CREATE TABLE test (id INT PRIMARY KEY, valeur VARCHAR(50));


INSERT INTO test VALUES (1,'A'), (2,'B');

• Test de verrouillage :
• Session 1 : START TRANSACTION; SELECT * FROM test WHERE id=1 FOR UPDATE;
• Session 2 : UPDATE test SET valeur='X' WHERE id=1; -> bloqué jusqu'à la validation/
rollback de Session 1.
• Explication : Les verrous empêchent les conflits d’écriture et assurent la cohérence.

3) Performance et indexation

• Requête sans index : SELECT * FROM employe WHERE id_dept=3;


• Ajout d’un index : CREATE INDEX idx_dept ON employe(id_dept);
• Comparaison plan d’exécution : EXPLAIN SELECT * FROM employe WHERE id_dept=3;
• Slow Query Log :

SET GLOBAL slow_query_log = 'ON';


SET GLOBAL long_query_time = 1;

• Identifier les requêtes lentes avec : SELECT * FROM mysql.slow_log;

4) Sauvegarde et restauration

• Sauvegarde : mysqldump -u root -p nom_base > sauvegarde.sql


• Suppression d’une table : DROP TABLE logs;
• Restauration : mysql -u root -p nom_base < sauvegarde.sql
• Vérification : SELECT COUNT(*) FROM logs; pour vérifier les données restaurées.

5) Réplication MySQL sur la même machine

1. Dupliquer MySQL pour créer une deuxième instance (SLAVE).


2. Configurer le MASTER (port 3306) :
3. Activer log binaire : log-bin=mysql-bin dans my.ini
4. Définir server-id=1
5. Base à répliquer : replication_db
6. Configurer le SLAVE (port 3307) :
7. Nouveau dossier de données
8. server-id=2
9. Activer relay_log
10. Créer utilisateur de réplication :

CREATE USER 'repl'@'localhost' IDENTIFIED BY 'password';


GRANT REPLICATION SLAVE ON *.* TO 'repl'@'localhost';

11. Sauvegarder MASTER et importer sur SLAVE :

2
mysqldump -u root -p replication_db > dump.sql
mysql -u root -p -P 3307 replication_db < dump.sql

12. Configurer SLAVE :

CHANGE MASTER TO
MASTER_HOST='127.0.0.1',
MASTER_PORT=3306,
MASTER_USER='repl',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS= 154;
START SLAVE;

13. Vérifier réplication : SHOW SLAVE STATUS\G -> Slave_IO_Running et


Slave_SQL_Running doivent être YES.

6) Partitionnement d’une table MySQL

• Création et partitionnement :

CREATE TABLE logs (


id_log INT AUTO_INCREMENT PRIMARY KEY,
date_action DATE NOT NULL,
utilisateur VARCHAR(50) NOT NULL,
action TEXT NOT NULL
)
PARTITION BY RANGE (YEAR(date_action)) (
PARTITION p2022 VALUES LESS THAN (2023),
PARTITION p2023 VALUES LESS THAN (2024),
PARTITION p2024 VALUES LESS THAN (2025)
);

• Insertion de données :

INSERT INTO logs (date_action, utilisateur, action) VALUES


('2022-01-05','user1','Connexion'),
('2023-05-10','user2','Modification'),
('2024-03-12','user3','Suppression');
-- Générer 100 lignes supplémentaires aléatoires avec une procédure si
nécessaire.

• Afficher partitions : SHOW TABLE STATUS LIKE 'logs';


• Requête filtrée pour 2023 :

SELECT * FROM logs WHERE YEAR(date_action)=2023;

3
• Observation : Seule la partition p2023 est scannée, améliorant les performances.

✅ Ce corrigé détaillé fournit toutes les commandes SQL, procédures et explications nécessaires pour
chaque partie du TP.

Vous aimerez peut-être aussi