automysqlbackup ou l'art de ne pas réinventer la roue

Rédigé par jdrien - - aucun commentaire
On trouve très souvent des personnes qui publient sur leur blog des scripts qui leur permettent de sauvegarder leurs bases de données avec MySQL. Ces scripts faits maison sont nombreux et tentent de répondre précisément aux besoins des rédacteurs.

En fait, la sauvegarde à chaud des bases de données simples est tellement évidente sous MySQL (un bête mysqldump suffit a priori) que l'on est vite tenté de réinventer la roue et de repartir de zéro. On arrivera certainement à un résultat satisfaisant, mais on sera sans doute passé à côté de fonctionnalités ou de problèmes importants (externalisation des sauvegardes, nettoyage, sécurité etc).

C'est suite à la publication sur le Planet Debian d'un énième script de ce type que j'ai appris qu'un outil intégré dans les dépôts de Debian existait : automysqlbackup.

Sous Debian donc, un simple sudo apt-get install automysqlbackup suffit à mettre en place une solution rapide de sauvegarde des bases sous MySQL.

D'origine, on arrive à un résultat très satisfaisant :
 - toutes les bases sont sauvegardées dans des répertoires bien ordonnés ;
 - les sauvegardes sont quotidiennes, hebdomadaires et mensuelles ;
 - les sauvegardes sont gérées par cron ;
 - pas d'utilisateur à renseigner : on utilise le mécanisme interne de debian (utilisateur MySQL debian-sys-maint) ;
 - les sauvegardes sont compressées ;
 - les sauvegardes sont nettoyées au fur et à mesure selon la durée de rétention définie.
 
Avec un peu de configuration on peut (fichier /etc/default/automysqlbackup) :
 - compresser les données avec bzip2 au lieu de gzip ;
 - exclure certaines bases ;
 - transmettre les logs de la sauvegarde par mail ;
 - effectuer des pre-traitements ainsi que des post-traitements : ainsi on peut facilement faire un rsync vers un autre serveur.

Bref, rien ne sert de réinventer la roue ! Et comme l'écrit Thomas Goirand, mainteneur du paquet pour Debian dans son commentaire à propos d'un script de sauvegarde :
Hi,
I'm the maintainer of automysqlbackup. Actually, you should really have a look into automysqlbackup. You thought about few of the problems you may have when doing backups, like the umask, and some others, but you forgot lots of them, and your script is missing many features of automysqlbackup (like daily, weekly, and monthly backups, which covers absolutely all needs). The nice part of automysqlbackup is also that it lived inside Debian for a large amount of time, and gathered feedback from users, which means that many, many, many small problems have been fixed in it. Over the years, I can even say that it's now a fork from the original code (it's unfortunate, and happened because of many things that I added in the package, plus upstream not adding them and releasing a new version which was really different and impossible to merge back).

I would strongly suggest to not work on your own, that's always less good than working as a team. If there's something that is missing in automysqlbackup (actually, I don't think there is), then it can be added, and I would welcome you to contribute patches.
PS : bien sûr, l'expérience de l'écriture de sa propre solution de sauvegarde peut être bénéfique sur le plan des connaissances. On comprend alors vraiment les choses. Et quand on voit des outils comme automysqlbackup on comprend justement qu'il est illusoire de croire que l'on peut penser à tout tout seul...

Graphes MRTG pour Apache

Rédigé par jdrien - - aucun commentaire

Script PERL apache2 :


#!/usr/bin/perl
# can return hits or bytes (counters)
@res = `GET http://localhost:80/server-status`;
foreach $res (@res) {
    if ($res =~ /Server uptime: (.*)$/) { $up = $1; last } else { next }
    if ($res =~ /Server at/) { $server = $res; last } else { next }
}

@res = `GET http://localhost:80/server-status?auto`;

foreach $res (@res) {
    if ($res =~ /Total Accesses: (\d+)/) { $d1 = $1; next }
    if ($res =~ /Total kBytes: (\d+)/) { $d2 = $1 * 1024; next }
}
$d1 = int($d1);
$d2 = int($d2);
if ($ARGV[0] eq "hits") {
    print "$d1\n";
    print "$d1\n";
} elsif ($ARGV[0] eq "bytes") {
    print "$d2\n";
    print "$d2\n";
}

print "$up\n";
$server = "mon_serveur";
print "$server\n";

que l'on lance par ./apache2 hits ou ./apache2 bytes

Partie du fichier de configuration MRTG :

## Apache2 hits ##
Target[apache2_hits]: `/etc/mrtg-sys/apache2 hits`
Colours[apache2_hits]: LIGHT BLUE#7AAFFF,BLUE#1000FF,DARK GREEN#006000,VIOLET#FF00FF
Options[apache2_hits]: perhour, nopercent, growright, noinfo, nobanner
PageTop[apache2_hits]: <h1>Hits Apache2</h1>
MaxBytes[apache2_hits]: 1000000
YLegend[apache2_hits]: hits/heure
ShortLegend[apache2_hits]: par heure   
LegendO[apache2_hits]: Hits:
Legend2[apache2_hits]: Hits horaires
Legend4[apache2_hits]: Hits Horaires max
Title[apache2_hits]: Hits horaires du serveur Apache
WithPeak[apache2_hits]: wmy

## Apache2 Traffic ##
Target[apache2_traffic]: `/etc/mrtg-sys/apache2 bytes`
Colours[apache2_traffic]: LIGHT BLUE#7AAFFF,BLUE#1000FF,DARK GREEN#006000,VIOLET#FF00FF
Options[apache2_traffic]: nopercent, growright, noinfo, nobanner
PageTop[apache2_traffic]: <h1>Traffic Apache</h1>
MaxBytes[apache2_traffic]:16000
AbsMax[apache2_traffic]:20000
YLegend[apache2_traffic]: octets/s
ShortLegend[apache2_traffic]: o/s
LegendO[apache2_traffic]: Traffic Apache:
Legend2[apache2_traffic]: Traffic Apache
Title[apache2_traffic]: Traffic du serveur Apache
WithPeak[apache2_traffic]: wmy
Legend4[apache2_traffic]: Traffic max Apache

Pour que cela fonctionne il faut bien sûr que le mod_status soit activé pour Apache.

Fichiers m3u

Rédigé par jdrien - - aucun commentaire

Les fichiers qui portent l'extension m3u sont des playlists. Ce format est apparu avec WinAMP sous Windows et est resté très simple : une URI vers un fichier musical par ligne. Son édition est donc facile et rapide, un simple éditeur de texte suffit. De plus ces playlists sont universelles, la plupart des lecteurs audio actuels permettent de lire ce type de fichier.

Il est possible de faire des scripts qui à partir de la liste des fichiers musicaux d'un répertoire génère une playlist :

find <mon_repertoire_de_musique> -type f -iname "*.mp3" | grep -v m3u > <ma_playlist>.m3u

D'autres ressources :
http://www.fmbv.nu/playlist-generator-bash
http://ubuntuforums.org/showthread.php?t=1570713
http://www.biazed.com/blog/blogs/index.php?blog=2&title=quickly_generate_your_m3u_playlist_in_a_&more=1&c=1&tb=1&pb=1

Recherche d'un lecteur audio, simple, rapide et winamp-like

Rédigé par jdrien - - aucun commentaire

J'étais à la recherche d'un lecteur audio simple, rapide, sans gestion de base de données. Bref un lecteur audio à l'ancienne, style winamp 2.X. Le fameux xmms n'est plus disponible dans les dépôts officiels debian / ubuntu, la compilation peut se faire mais bon...
La page consacrée au sujet sur le wiki d'Ubuntu est très fournie, c'est le moins que l'on puisse dire : http://doc.ubuntu-fr.org/lecteur_audio

Une alternative qui pour l'instant est plaisante à utiliser : qmmp (voir le wiki d'Ubuntu : http://wiki.ubuntu-fr.org/qmmp)

Fil Rss des articles de ce mot clé