Maatkit/Percona Toolkit en pratique



Documents pareils
CREATION WEB DYNAMIQUE

Synchronisation Mysql (Replication)

PHP 5. La base de données MySql. A. Belaïd 1

Stockage du fichier dans une table mysql:

Mysql. Les requêtes préparées Prepared statements

Le Langage De Description De Données(LDD)

SUPPORT DE COURS / PHP PARTIE 3

Optimisation de MySQL

Optimisations des SGBDR. Étude de cas : MySQL

Olivier Mondet

MYSQLDUMP & ZRM COMMUNITY

Le langage SQL pour Oracle - partie 1 : SQL comme LDD

Création et Gestion des tables

INSTALLATION DE L APPLICATION DU CONTEXTE ITASTE

SQL. Oracle. pour. 4 e édition. Christian Soutou Avec la participation d Olivier Teste

Pratique et administration des systèmes

Comprendre et optimiser la base de données WordPress WP TECH 2014

Cours: Administration d'une Base de Données

Configurer la supervision pour une base MS SQL Server Viadéis Services

Bases de Données relationnelles et leurs systèmes de Gestion

Application web de gestion de comptes en banques

MySQL. (Administrateur) (Dernière édition) Programme de formation. France, Belgique, Suisse, Roumanie - Canada

Installation d'un serveur FTP géré par une base de données MySQL

Sécurité des applications Retour d'expérience

Pour valider les pré-requis nécessaires, avant d'aborder le TP, répondez aux questions ciaprès

PHP et les Bases de données - Généralités

SQL Historique

Licence de MIDO - 3ème année Spécialités Informatique et Mathématiques Appliquées

Bases de données relationnelles

Nouvelle version de Zonecheck, la 3.0, avec tests DNSSEC

ISC Système d Information Architecture et Administration d un SGBD Compléments SQL

MapReduce. Malo Jaffré, Pablo Rauzy. 16 avril 2010 ENS. Malo Jaffré, Pablo Rauzy (ENS) MapReduce 16 avril / 15

SGBDR. Systèmes de Gestion de Bases de Données (Relationnelles)

laposte.net) Ministère de l'éducation nationale Atelier sécurité Rabat RALL 2007

Le protocole FTP (File Transfert Protocol,

NFA 008. Introduction à NoSQL et MongoDB 25/05/2013

Auto-évaluation Oracle: cours de base

Serveur Linux : FTP. Mise en place d un service FTP sous Linux. Bouron Dimitri 20/04/2014

PHP 4 PARTIE : BASE DE DONNEES

Encryptions, compression et partitionnement des données

PHP et mysql. Code: php_mysql. Olivier Clavel - Daniel K. Schneider - Patrick Jermann - Vivian Synteta Version: 0.9 (modifié le 13/3/01 par VS)

TP Contraintes - Triggers

Programme détaillé. Administrateur de Base de Données Oracle - SQLServer - MySQL. Objectifs de la formation. Les métiers

Tutorial sur SQL Server 2000

Langage SQL : créer et interroger une base

Historisation des données

Haute disponibilité des données

Description de SQL SERVER. historique

Rapport d audit de sécurité

Comment Connecter une Base de Données MySQL via un Driver JDBC Avec OpenOffice.org

Cours Bases de données 2ème année IUT

Modélisation PHP Orientée Objet pour les Projets Modèle MVC (Modèle Vue Contrôleur) Mini Framework

Architectures haute disponibilité avec MySQL. Olivier Olivier DASINI DASINI - -

Domaine Name System. Auteur: Congduc Pham, Université Lyon 1. Figure 1: Schéma des salles TP11 et TD4

TP Sauvegarde et restauration avec le logiciel Cobian Backup. Etape 1 :

Modélisation et Gestion des bases de données avec mysql workbench

TP Bases de données réparties

PostgreSQL. Formations. SQL avancé Calendrier... 18

Partie 0 : Gestion des tablespace et des utilisateurs... 3

ORACLE TUNING PACK 11G

Les bonnes pratiques. de l hébergement d un CMS

Test de HSQLDB et Comparatif avec Sqlite

Master Exploration Informatique des données DataWareHouse

Ora2Pg Performances. (C) 2013 Gilles Darold

Gestion des utilisateurs et de leurs droits

Procédures Stockées WAVESOFT ws_sp_getidtable Exemple : ws_sp_getnextsouche Exemple :... 12

Cloud public d Ikoula Documentation de prise en main 2.0

Notes de cours : bases de données distribuées et repliquées

I. MySQL : Serveur et SGBD

Techniques de stockage. Techniques de stockage, P. Rigaux p.1/43

1/ Présentation de SQL Server :

Galaxy est une plateforme de traitements (bio)informatiques accessible depuis l'url : (en précisant votre login et mot de passe LDAP «genotoul»).

Analyse de performance, monitoring

Client windows Nagios Event Log

Projet Viticulture - TP 3 : bases de données distantes BTS Services informatiques aux organisations

MEGA Web Front-End Installation Guide MEGA HOPEX V1R1 FR. Révisé le : 5 novembre 2013 Créé le : 31 octobre Auteur : Noé LAVALLEE

Manuel de l Administrateur

Java DataBaseConnectivity

Bases de données et sites WEB

B-web V4 MANUEL D UTILISATION. Espace de travail. Clear2Pay Belgium SA B-web V4 Manuel d Utilisation: Espace de travail

Compétences Business Objects

Le Langage SQL version Oracle

Gestion de base de données

Les BASES de DONNEES dans WampServer

1 Position du problème

Introduction à JDBC. Accès aux bases de données en Java

Serveur de travail collaboratif Michaël Hoste -

Devoir Data WareHouse

Construire une base de donnée pour bibliothèque

Sommaire. 3. Les grands principes de GFS L architecture L accès de fichier en lecture L accès de fichier en écriture Bilan

1. Base de données SQLite

Présentation du SC101

Mission 2 : Déploiement/Configuration Windows Server 2008 R2

PostgreSQL. Formations. Catalogue Calendrier... 8

1. Qu'est-ce que SQL? La maintenance des bases de données Les manipulations des bases de données... 5

PostgreSQL. Formations. Calendrier... 14

Statistiques réseau et système avec CACTI

Transcription:

Maatkit/Percona Toolkit en pratique Meetup LeMug/Viadeo 16 Novembre 2011 Paris Stéphane Combaudon stephane.combaudon@dailymotion.com

En bref Maatkit : + de 30 scripts Perl pour DBA MySQL GPL Créé par Baron Schwartz En 2011, fork de Percona remplace Maatkit Percona Toolkit Développement actif Voir http://www.percona.com/software/percona-toolkit 2

Maatkit vs Percona Toolkit Certains scripts douteux ont été abandonnés mk-parallel-dump/restore, mk-slave-prefetch... Les scripts ont été renommés s/mk/pt/g 3

Une étrange requête lente - 1 CREATE TABLE user ( user_id int NOT NULL AUTO_INCREMENT PRIMARY KEY, login varchar(30) NOT NULL DEFAULT '',... UNIQUE KEY (login) ) ENGINE=InnoDB; Affichage de mysqldumpslow : L'optimiseur pense que l'index unique n'est pas le meilleur choix?! 4

Une étrange requête lente - 2 Les tests avec des logins réels prennent 0s Il nous faut plus d'informations mk query digest limit 10 mysql slow.log 5

Une étrange requête lente - 3 Tout s'éclaircit, non? login est un VARCHAR, mais la req. utilise un INT MySQL convertit login en un INT L'index ne peut plus être utilisé Un plan d'exécution bcp plus coûteux est choisi Résolution : l'application doit s'assurer que login est toujours une chaîne 6

Voir des requêtes en direct - 1 DBA : Le serveur exécute bcp de commandes inutiles qui finissent par coûter cher Collègue : Impossible, ces requêtes ne coûtent rien, même si on les exécute tout le temps mk-query-digest peut traiter la sortie de tcpdump On peut donc avoir un rapport en instantanée des requêtes les plus coûteuses 7

Voir des requêtes en direct - 2 tcpdump i eth0 port 3306 s 65535 c 10000 x n q tttt mkquery digest type tcpdump report format=profile limit=10 Ouch! Plus de 60% du temps est perdu... 8

Des mauvais backups - 1 Collègue : Un slave dédié fournit les backups DBA : Bien! Tu es sûr que le slave a les mêmes donnés que le master? Collègue :??? On a une alerte Nagios si la réplication est cassée DBA : Et si la réplication déraille sans erreur? Collègue :????? La réplication n'est-elle pas censée fonctionner? 9

Des mauvais backups - 2 mk-table-checksum fournit des contrôles de cohérences des données entre un master et ses slaves Concept Exécuter des checksums sur le master et les laisser parvenir aux slaves par la réplication Comparer les checksums quand les slaves sont à jour 10

Des mauvais backups - 3 Sur le master, exécution des checksums : mk table checksum chunk size=1000 replicate=mydb.chk masterhost Quand les slave ont rattrapé le master : mk table checksum chunk size=1000 replicate=mydb.chk \ replicate check=1 masterhost Oups! Maintenant, il faut resynchroniser! 11

Resynchroniser des tables 1 Collègue : J'ai dû sauter des événements sur une table, comment je peux la resynchroniser? mk-table-sync peut utiliser les informations de mk-table-checksum Il génère des requêtes pour résoudre les différences!! Les requêtes doivent toujours être jouées sur le master!! Risque de corruption de données sinon 12

Resynchroniser des tables 2 mk table sync replicate=mydb.chk print sync to master \ slavehost Utiliser --execute au lieu de --print pour l'exécution L'outil est très puissant, il doit être manié avec de grandes précautions! 13

Mise à jour de grosses tables - 1 Collègue : Lors des dernières mises à jour massives sur une grosse table, le script a tourné pendant 5 jours. Peut-on trouver mieux? mk-archiver est optimisé pour parcourir de manière efficace des tables volumineuses pour purger ou archiver des données On peut étendre l'outil avec des plugins pour exécuter n'importe quel type de tâche 14

Mise à jour de grosses tables 2 mk archiver source D=mydb,t=orig dest D=mydb,t=dest,m=my_plug \ where "..." no delete commit each limit=100000 \ progress=100000 bulk insert 20s pour mettre à jour chaque morceau Temps de traitement stable La table a 20M lignes Travail terminé en 4000s, un peu plus d'une heure! 15

Serial killer Collègue : Est-il possible de tuer automatiquement les requêtes très lentes? mk kill busy time=10 kill heartbeat iterations 0 print Attention aux options qui ont changé entre les versions! 16

Des questions? 17