Afficher un rapport sur l’utilisation de votre serveur MySQL avec mysqlreport

La commande SHOW STATUS affiche un certain nombre d’informations importantes sur votre serveur MySQL et sur son utilisation. Le script mysqlreport permet d’extraire ces données, et de les afficher dans un rapport facile à lire.

Il suffit de télécharger l’exécutable et de le lancer avec quelques paramètres (identifiants, etc.). Le résultat ressemble à ceci :

MySQLReport : afficher un rapport sur l'utilisation de votre serveur MySQL

Rapport sur l’utilisation de votre serveur MySQL

MySQLReport : afficher un rapport sur l'utilisation de votre serveur MySQL

Rapport sur l’utilisation de votre serveur MySQL

MySQLReport : afficher un rapport sur l'utilisation de votre serveur MySQL

Rapport sur l’utilisation de votre serveur MySQL

Si vous ne comprenez pas tous les détails du rapport, vous pouvez toujours lire la documentation! ;)

Comment comparer deux bases de données MySQL ?

J’ai récemment du faire une comparaison des données entre deux versions de la base MySQL de mon blog. En cherchant comment procéder le plus facilement possible, je suis tombé sur le le freeware Toad for MySQL : Toad est édité par Quest et l’acromyme signifie Tool for Oracle Application Developers. La version Toad for MySQL propose les mêmes fonctionnalités, mais pour la base de données opensource MySQL.

Cet outil est conçu pour administrer les bases de données et permet en autre de :

  • créer et exécuter des requêtes,
  • automatiser des opérations,
  • gestion d’objets (index, tables, etc.),
  • d’extraire et rechercher des objets,
  • importer / exporter des données,
  • etc.

La fonction Data Compare permet de comparer le contenu de tables : un assistant permet la création simplifiée de ces comparaisons.

Toad : assistant de comparaison des données MySQL

Toad : assistant de comparaison des données MySQL

Il faut ensuite spécifier les bases sources et destinations qu’il faut comparer : celles-ci peuvent être sur le même serveur ou sur des serveurs séparés.

Note : les objets de connexion (PROD et DEV dans la capture ci-dessous) sont à créer dans le Connection Manager avant de lancer l’assistant.

Toad : informations de connexion pour les bases à comparer

Toad : informations de connexion pour les bases à comparer

L’étape suivante vous permet de sélectionner les objets/tables à comparer entre la source et la destination.

Toad : sélection des objets à comparer

Toad : sélection des objets à comparer

La page suivante vous propose un certain nombre d’options : j’ai laissé les paramètres par défaut.

Toad : options de comparaison

Toad : options de comparaison

Enfin, la comparaison s’effectue : j’ai trouvé celle-ci relativement rapide !

Toad : exécution de la comparaison

Toad : exécution de la comparaison

Le résultat est fourni sous forme d’un tableau assez intuitif avec une vue des tables qui présentent des différences (avec les opérateurs gauche/droite/égalité), ainsi que le détail des différences dans la partie basse du tableau.

Toad : résultat de la comparaison de données MySQL

Toad : résultat de la comparaison de données MySQL

En dehors de sa fonction de comparaison des données, Toad for MySQL est un outil gratuit et rapide à mettre en œuvre pour administrer et gérer vos bases de données, à conserver soigneusement dans un coin !

Sauvegarde de vos serveurs MySQL avec phpMyBackupPro

Pour les allergiques à la ligne de commande (ça existe), et qui voudraient un outil simple et gratuit pour sauvegarder des bases de données MySQL, il existe phpMyBackupPro.

Très simple à installer (il suffit de déposer un répertoire sur un serveur d’hébergement PHP), phpMyBackupPro se présente sous la forme d’une application hébergée et accessible via un navigateur. Une seule instance est nécessaire pour sauvegarder plusieurs serveurs MySQL.

Sauvegarde de vos bases MySQL avec phpMyBackupPro

Sauvegarde de vos bases MySQL avec phpMyBackupPro

Au niveau des fonctionnalités, on retrouve :

  • sauvegarde d’une ou plusieurs bases, avec ou sans les données (ou juste la structure),
  • compression possible (gzip ou zip),
  • sauvegardes planifiées,
  • interface de management des backups (vue, restauration, download, suppression, etc.),
  • sauvegarde possible vers un serveur FTP ou envoi du résultat par mail,
  • disponible en plusieurs langues.
Sauvegarde planifiée de vos bases MySQL avec phpMyBackupPro

Configuration d'une sauvegarde planifiée

Ci-dessous, la vue de management des backups : ici, une seule sauvegarde présente.

Restauration de vos bases MySQL avec phpMyBackupPro

Restauration d'une base de données MySQL

Vous pouvez également visualiser un résumé de vos bases de données, avec le nombre de tables et d’entrées totales, ainsi que la taille.

Informations sur une bases de données MySQL

Informations sur les bases accessibles

Personnellement, je suis plus adepte de la ligne de commande, et pour la sauvegarde de serveurs MySQL, j’utilise un script très bien fait : AutoMySQLBackup.

Pour choisir, je dirais :

  • si vous disposez d’un accès SSH à votre serveur, ainsi qu’au crontab, je privilégierais le script AutoMySQLBackup,
  • si vous êtes sur un serveur mutualisé et que vous n’avez pas accès SSH/crontab, je préconiserais phpMyBackupPro.
Téléchargement : phpMyBackupPro.

Sécurisation de base d’un serveur MySQL avec mysql_secure_installation

Il est relativement facile d’installer un serveur MySQL, que ce soit pour faire un environnement de développement ou de production. En effet, un simple yum/apt-get/aptitude install mysql-server (suivant votre gestionnaire de paquets) vous installe en quelques minutes ce serveur de base de données avec une configuration par défaut.

Pourtant, un serveur MySQL n’est pas exploitable tout de suite : le mot de passe root n’est pas initialisé, des privilèges anonymes existent, etc. Il est préférable d’accorder de l’importance à la sécurité au début d’un projet, que d’essayer d’y revenir plus tard.

La commande mysql_secure_installation va apporter un minimum de sécurité pour vos nouvelles installations. Elle vous permet (selon vos choix) :

  • de changer le mot de passe root,
  • de supprimer les comptes anonymes,
  • de désactiver la connexion du compte root à distance,
  • de supprimer la base de données « test » à laquelle tout le monde peut avoir accès.

L’outil finit sur un rechargement des privilèges (« Flush privileges ») afin d’appliquer les changements de droits au serveur.

Pour lancer la commande : /usr/bin/mysql_secure_installation.

Sécurisation de base d'un serveur MySQL avec mysql_secure_installation

Sécurisation de base d'un serveur MySQL avec mysql_secure_installation

Bien entendu, ceci n’exclut pas une politique de sécurisation globale (présence d’un firewall, port MySQL changé, filtrage des privilèges par adresse source, etc.). Cette commande vous permet juste de passer sur les points critiques en quelques secondes.

Note : je traite uniquement de Linux, je déconseille l’utilisation de MySQL sur un OS Windows. Par ailleurs, je ne sais pas si la commande mysql_secure_installation existe sur Windows.

Comment Facebook gère quotidiennement son infrastructure

Facebook est une vraie machine de guerre : on a pu voir récemment que c’était le site le plus visité au monde, et tout ça seulement après quelques années. Contrairement à d’autres « supergrands » (Google, Microsoft, Apple, Youtube, etc.) un certain nombre d’informations filtrent lors de conférences, et dans des documents officiels.

Logo Facebook

Je rappelle que pour écrire ces 2 articles, j’ai simplement visionné des vidéos de conférences pour compiler les informations. Vu la masse de détails obtenus, j’ai publié deux articles :

En extrapolant plusieurs données (graphiques d’évolution, chiffres passés, etc.) on estime entre 60 000 et 100 000 le nombre de serveurs de Facebook .

Facebook : évolution du nombre de serveurs

Facebook : évolution du nombre de serveurs

Cependant, ce chiffre ne tient pas compte de deux nouveaux datacenters actuellement en cours construction (Oregon et Caroline du Nord).

Facebook a depuis longtemps atteint une masse critique qui nécessite de voir sa copie en terme d’administration quotidienne.

Un des ingénieurs de Facebook a bien illustré le problème lors d’une conférence :

With Facebook users spending a collective 8 billion minutes on the site each day, serving 1.2 million photos each second, and managing more than 25 terabytes of data per day in logging data, we’re forced to think about servers and datacenters differently.

Nb : les chiffres sont de 2009, les actuels sont présents dans mon article précédent.

(suite…)

Comment synthétiser rapidement le statut d’un serveur MySQL

Le moteur de base de données MySQL est très largement utilisé dans le monde. Même si l’installation et le paramétrage par défaut de MySQL suffit amplement pour un site web ou un blog, il est nécessaire de l’optimiser dans le cadre d’une utilisation plus « corporate« .

Deux leviers majeurs sont disponibles :

  • l’optimisation du serveur de base de données (ou de la ferme de serveurs),
  • l’optimisation du code.

La commande « show status » (en CLI, ou via phpMyAdmin) offre un certain nombre d’informations sur le statut d’un serveur MySQL.

MySQL : résultat de la commande show status dans phpMyAdmin

MySQL : résultat de la commande show status dans phpMyAdmin

Cependant, les informations rendues ne sont pas toujours exploitables facilement (ni rapidement) pour les personnes qui ne sont pas DBA.

C’est là que mysqlreport intervient : c’est un simple exécutable qui va vous permettre de synthétiser le statut d’un serveur MySQL. Il suffit de télécharger ce fichier (pas d’installation nécessaire), et de le lancer en lui renseignant les paramètres de connexion au serveur MySQL, pour qu’il vous exporte un résultat assez sympa !

Jugez plutôt :

Statut MySQL avec mysqlreport
Pour ceux qui voudrait plus détails sur les valeurs obtenues et savoir comment les interpréter (et les comprendre), je vous invite à lire ceci : The guide to understand mysqlreport.