Warning: Cannot modify header information - headers already sent by (output started at /var/www/html/wp-content/plugins/portfolio-slideshow/portfolio-slideshow.php:65) in /var/www/html/wp-includes/feed-rss2.php on line 8
MySQL – Les mémos d'un admin système https://blog-sysadmin.archives.slashroot.fr Sat, 29 Jul 2017 07:31:37 +0000 fr-FR hourly 1 https://wordpress.org/?v=4.8.23 [Bash] Script pour dumper des bases MySQL https://blog-sysadmin.archives.slashroot.fr/?p=1402 https://blog-sysadmin.archives.slashroot.fr/?p=1402#respond Mon, 24 Jul 2017 09:07:30 +0000 http://blog.slashroot.fr/?p=1402 #!/bin/bash # # MySQL_DB_Dump # # Auteur : Johan # Contact : johan@slashroot.fr # Date : 13/07/2011 # Version : 1.0 # Description : Dump une base donnee MySQL # Commentaire : Le fichier de dump peut etre envoye par email # Requis : Besoin de mutt si l'option -m est selectionnee # # # Usage # usage(){ echo "" echo "Utilisation : mysql_db_dump -s server_name -u mysql_user -p file/password -b database1,database2... -d save_folder [-m adresse@domain.com]" echo "" echo "OPTIONS :" echo " -h Affiche l'aide" echo " -u Utilisateur MySQL a utilise pour le dump" echo " -s Serveur contenant la base de données" echo " -p Type d'authentification a utiliser (prompt du password ou fichier ~/.my.cnf)" echo " -b Specifie la ou les bases a dumper" echo " -d Dossier a utiliser pour stocker les dumps" echo " -m Envoi le fichier de dump par email" echo "" echo "EXEMPLE :" echo " - Dump des bases db1 et db2 avec une authentification par fichier et l'envoi des fichiers par email" echo " mysql_db_dump -s localhost -u bob -p file -b db1,db2 -m dba@slashroot.fr" echo "" } # # getopts # while getopts "s:u:p:b:d:m:h" opt; do case $opt in s) serveur=$OPTARG ;; u) user=$OPTARG ;; p) auth=$OPTARG ;; b) bases=$OPTARG ;; m) dest=$OPTARG if [ ! -f /bin/mutt ] ; then echo "ERREUR - L'utilitaire mutt est introubable" exit 1 fi ;; d) folder=$OPTARG ;; h) usage exit 0 ;; \?) usage exit 1 ;; 🙂 usage exit 1 ;; esac done # # Variables et verifications # # Verification des parametres choisis if [[ $# -eq 0 || -z $serveur || -z $user || -z $auth || -z $bases || -z $folder ]] ; then usage exit 1 fi # Verification du dossier de sauvegarde if [ ! -d $folder ] ; then echo "ERREUR - Le dossier cense accueillir les dumps est introuvable" exit 1 fi # Verification de l'authentification choisi if [ $auth == "file" ] ; then if [ ! -f ~/.my.cnf ] ; then echo " ERREUR - Le fichier .my.cnf est introuvable" # exit 1 else if [ $(stat -c %a ~/.my.cnf) != 600 ] ; then echo "Warning - Votre fichier ~/.my.cnf n'a pas les droits recommandes" fi fi elif [ ! $auth == "password" ] ; then usage exit 1 fi # Date du jour date=`date +%m-%d-%Y` host=`hostname` res="\n" # # Au boulot # # Pour chaque base for base in $(echo $bases | sed "s/,/ /g") ; do dump="$folder/dump-$base-$date.sql" if [[ $auth == "file" ]] ; then mysqldump -u $user $base > $dump else mysqldump -u $user -p $base > $dump fi gzip $dump if [ -n $dest ] ; then echo "" | mutt -s "[Save-SQL] Dump base $base du $date" -a ""$dump".gz" -- $dest fi done ]]> https://blog-sysadmin.archives.slashroot.fr/?feed=rss2&p=1402 0 [Bash] Récupérer la taille des bases MySQL https://blog-sysadmin.archives.slashroot.fr/?p=1405 https://blog-sysadmin.archives.slashroot.fr/?p=1405#respond Wed, 19 Jul 2017 09:09:27 +0000 http://blog.slashroot.fr/?p=1405 #!/bin/bash # # MySQL_DB_Sizes # # Auteur : Johan # Contact : johan@slashroot.fr # Date : 13/07/2011 # Version : 1.0 # Description : Recupère la taille de chaque base de données et envoi les résultats par email # Commentaire : L'utilisateur doit avoir acces en lecture a toutes les bases dont on souhaite connaitre la taille # Reminder for a MySQL read only user # CREATE USER 'ro-user'@'localhost' IDENTIFIED BY 'MySQL_Ro_User_Password'; # GRANT SELECT ON database1.* TO 'ro-user'@'localhost'; # GRANT SELECT ON database2.* TO 'ro-user'@'localhost'; # ... # # Usage # usage(){ echo "" echo "Utilisation : mysql_db_sizes -s server_name -u mysql_user -p file/password [-b database1,database2...] [-m adresse@domain.com]" echo "" echo "OPTIONS :" echo " -h Affiche l'aide" echo " -u Utilisateur MySQL a utilise pour la requete SQL" echo " -s Serveur contenant la base de données" echo " -p Type d'authentification a utiliser (prompt du password ou fichier ~/.my.cnf)" echo " -b Specifie les bases a afficher (par defaut toutes celles accessibles" echo " -m Envoi le resultat par email au lieu de l'afficher dans le terminal" echo "" echo "EXEMPLES :" echo " 1 - Affichage de la taille de toutes les bases avec une authentification par mot de passe" echo " mysql_db_sizes -s localhost-u bob -p password" echo " 2 - Envoi de la taille des bases db1 et db2 par email avec une authentification par fichier" echo " mysql_db_sizes -s localhost -u bob -p file -b db1,db2 -m bob@admin.fr" echo "" } # # getopts # while getopts "s:u:p:b:m:h" opt; do case $opt in s) serveur=$OPTARG ;; u) user=$OPTARG ;; p) auth=$OPTARG ;; b) bases=$OPTARG ;; m) dest=$OPTARG ;; h) usage exit 0 ;; \?) usage exit 1 ;; 🙂 usage exit 1 ;; esac done # # Variables et verifications # # Verification des parametres choisis if [[ $# -eq 0 || -z $serveur || -z $user || -z $auth ]] ; then usage exit 1 fi # Verification de l'authentification choisi if [ $auth == "file" ] ; then if [ ! -f ~/.my.cnf ] ; then echo " ERREUR - Le fichier .my.cnf est introuvable" exit 1 else if [ $(stat -c %a ~/.my.cnf) != 600 ] ; then echo "Warning - Votre fichier ~/.my.cnf n'a pas les droits recommandes" fi fi elif [ ! $auth == "password" ] ; then usage exit 1 fi host=`hostname` res="\n" # Fichier de sortie temporaire tmp="/tmp/mysql_db_sized.tmp" # # Au boulot # # On extrait dans un fichier toutes les bases du serveurs if [ $auth == "file" ] ; then mysql -h $serveur -u $user -B --exec="SELECT table_schema, round(sum(data_length+index_length)/1024/1024,4) AS 'Size (MB)' FROM information_schema.tables GROUP BY table_schema;" > $tmp else mysql -h $serveur -u $user -p -B --exec="SELECT table_schema, round(sum(data_length+index_length)/1024/1024,4) AS 'Size (MB)' FROM information_schema.tables GROUP BY table_schema;" > $tmp fi # On supprime la premières ligne du fichier comprenant les titres ainsi que la base schema sed -i '1d' $tmp sed -i '/information_schema/d' $tmp # Pour chaque base while read line ; do # On recupere son nom et sa taille nom=`echo $line | cut -f1 -d ' '` taille=`echo $line | cut -f2 -d ' '` # On l'ajoute au resultat si on veut toutes les bases ou si elle fait partie des bases choisies if [ -z $bases ] && ( echo $bases | grep -wq $nom ) ; then res+="$nom : $taille Mo\n" elif [ -n $bases ] && ( echo $bases | grep -wq $nom ) ; then res+="$nom : $taille Mo\n" fi done < $tmp # On redige et on envoi l'email si demande if [ ! -z $dest ] ; then corps="Bonjour,\n\nVoici les informations concernant la taille de ma/mes base(s) de données :\n\n$res\n\nnCordialement,\n\n$host" echo -e $corps | mail -s "Infos : Taille base MySQL" $dest # Sinon on affiche le resultat dans le terminal else echo -e $res fi # On supprime le fichier de sortie temporaire rm -f $tmp

]]>
https://blog-sysadmin.archives.slashroot.fr/?feed=rss2&p=1405 0