Il y a deux manieres d’effectuer un export des comptes MySQL, avec mysqldump ou avec pt-show-grants des Percona Toolkit
[Lire]Killer des requêtes MySQL en fonction de leur temps d’exécution
Toutes les requêtes killé sont affiché par le script, cela vous permet de generer un log ou de vous envoyer un mail pour chaque requête killé.
[Lire]Mise en place de Monit
Monit a pour fonction de “surveiller” service et/ou les ressources système et d’exécuter une ou plusieurs actions en fonction de condition. Par exemple, il peut redémarrer Nginx si celui ci ne répond plus.
[Lire]Configuration du Timezone par connections
Lorsque vous voulez définir le fuseau horaire lors d’une connexion MySQL, il se peut que vous ailler les erreurs suivante lorsque vous définissez le fuseau horaire :
[Lire]Changer la taille de innodb_log_file_size
Si vous avez besoin de modifier le paramètre innodb_log_file_size
,il ne faut pas juste modifier le paramètre et redémarrez le serveur.
Si vous le faites, InnoDB va refuser de démarrer car les journaux existants ne correspondent pas à la taille configurée.
Vous devez arrêter le serveur proprement, déplacer (ne pas supprimer) les fichiers ib_logfile0 ib_logfile1
, etc.
Vérifiez le journal des erreurs pour s’assurer qu’il n’y a pas de problème de fermeture.
[Lire]Exporter tous les comptes MySQL
La commandes ci-dessous va vous générer les requêtes SQL pour pouvoir recréer tous vos comptes MySQL en quelque secondes
Le mot de passe du compte root sera donc modifié sur le serveur ou vous aller exécuter ces requêtes.
mysql --skip-column-names -B -e "select user,host from mysql.user;" |awk {'print "show grants for \x27"$1"\x27@\x27"$2"\x27;"'} | mysql --skip-column-names -B
Version 1 du " Percona Monitoring Plugins "
Analyser les requêtes MySQL
Percona a développé un outils permettant de parser les logs tcpdump et les slow query MySQL.
Cela nous permet donc de pouvoir rapidement localiser les requêtes lentes.
Pour avoir le top10 des requêtes lentes en " direct " via tcpdump :
tcpdump -i en0 port 3306 -s 65535 -c 10000 -x -n -q -tttt | pt-query-digest --type tcpdump --report-format=profile --limit=10
Via le slow query log :
pt-query-digest --limit=10 /var/log/mysql/slow.log
Détail sur l'utilisation de la mémoire vive par MySQL
L’utilisation maximum de la mémoire vive par MySQL se calcule de la manière suivante d’après mysqltuner.pl :
key_buffer_size + max_tmp_table_size + ( read_buffer_size + read_rnd_buffer_size + sort_buffer_size + thread_stack + join_buffer_size ) * max_connections
max_tmp_table_size : si tmp_table_size > max_heap_table_size -> max_heap_table_size sinon tmp_table_size
Import/Export MySQL "rapide"
export.sh
Les données sont exporté avec mysqldump et le paramètre -T
-T
: Creates tab separated textfile for each table to given path. (creates .sql and .txt files). NOTE: This only works if mysqldump is run on the same machine as the mysqld daemon.
Ce script doit donc etre exécuté directement sur le serveur MySQL
Export
#!/bin/bash
DST='/var/backup/mysql/dump
for bdd in `mysql --skip-column-names -B -e "show databases;" | egrep -v "^information_schema$|^mysql$"`; do
echo -ne $bdd
mysql --skip-column-names -B -e "SHOW CREATE DATABASE $bdd;" | cut -d" " -f2- > $DST/create-$bdd.sql
for table in `mysql --skip-column-names -B $bdd -e "show tables;"`; do
mkdir $DST/$bdd 2>/dev/null 1>&2
chown mysql:mysql $DST/$bdd
echo -ne "."
mysqldump -T $DST/$bdd/ $bdd $table
done
echo -ne "\r\n"
done
Import
#!/bin/bash
SRC='/var/backup/mysql
for bdd in `ls -1 $SRC`; do
echo -ne $bdd
for table in `ls -1 $SRC/$bdd | awk -F. '{print $1}' | sort | uniq`; do
mysql $bdd -e " SET foreign_key_checks = 0;
SOURCE $SRC/$bdd/$table.sql;
LOAD DATA INFILE '$SRC/$bdd/$table.txt
INTO TABLE $table;
SET foreign_key_checks = 1;"
echo -ne "."
done
echo -ne "\r\n"
done