Karlesnine.com

Aller au contenu Aller au menu Aller à la recherche

lundi, mars 8 2010

Sauvegarder ces bases de données Mysql sur un espace Amazon S3

Un exemple simplisme de script automatisant la sauvegarde des bases de donnée mysql de votre serveur sur un stockage amazon S3.

Ce script nécessite d'avoir un compte sur Amazon Simple Storage Service. Allez sur la page Amazon S3 homepage, cliqué sur le bouton "Sign up for web service" et inscrivez vous. Vous devrez fournir votre carte de crédit et en autorisé le débit en fonction de l'utilisation que vous ferez du service. Suite à cette inscription vous posséderez une clé d' access et une clé Secrete vous permettant d'accéder au service.

Vous devez également avoir installé le paquet debian s3cmd

apt-get install s3cmd

Votre clé d' access et votre clé Secrete à disposition lancer la commande suivante pour configurer vos outils s3cmd et leur donner accès à Amazon

s3cmd --configure

Enfin le script, des plus simple, non ?

#!/bin/bash
#
 
# Mot de passe Mysql
$MDP="Mots de passe Mysql"
 
# ex : 1.2010-03-01_14h48
DayNameDump=`date +%w.%Y-%m-%d_%Hh%M`;
 
# Monday = 1 etc..
DayInWeek=`date +%w`;
 
# Pour Chaque DB de mysql sauf Database|information_schema|mysql
for I in `mysql -p$MDP -B -e "show databases;" | egrep -v '(Database|information_schema|mysql)'`;
 do	
   # Création du répertoire de backup local pour chaque base
   MSG=`mkdir -p /vars/backups/$I 2>&1`;
   logger -t [SQLBACKUP] Create Backup Directory: $MSG;
 
   # Efface le backup de même jour de semaine éxistant déjà
   # On ne concerve donc que 7 jours glissant de backup en local
   MSG=`rm /var/backups/$I/$HOSTNAME.$DayInWeek.* 2>&1`;
   logger -t [SQLBACKUP] Clean Old Backup: $MSG;
 
   # Dump des bases présent sauf les exeptions, ceci en mode transactionnel, 
   # gzip du fichier sql au taux de compression le plus fort
   MSG=`mysqldump --single-transaction -p$MDP -u root $I | gzip -cq9 > \
 /var/backups/$I/$HOSTNAME.$DayNameDump.sql.gz 2>&1`;
   logger -t [SQLBACKUP] Mysqldump: $MSG;
 
   # Copie dans le bucket courant
   MSG=`s3cmd put /var/backups/$I/$HOSTNAME.$DayNameDump.sql.gz \
 s3://backup.perso.bucket./$I/$HOSTNAME.$DayNameDump.sql.gz 2>&1`;
   logger -t [SQLBACKUP] Put to S3 backup.perso.bucket: $MSG;
 
  done;

lundi, février 22 2010

Comment convertir une chaine en majuscule ou minuscule avec bash?

Assurez vous que tr est disponible sur votre système

Conversion de majuscule à minuscule

echo $1 | tr "[:upper:]" "[:lower:]"

Conversion de minuscule à majuscule

echo $1 | tr "[:lower:]" "[:upper:]"

mardi, février 16 2010

MySQL Innodb nouvelle notes de configuration et d'optimisation

Pour compléter une note précédente sur Innodb et UTF8 et le billet sur les premières notes de configuration et d'optimisation de MySQL Innodb voici quelques notes de configuration de MySQL supplémentaire et complémentaire avec le moteur de base de donnée Innodb. Note toujours valable _ pour toute solution d'hébergement ou architecture MySQL est dédier eZ Publish, Dotclear 2 et autre CMS.

INNODB_BUFFER_POOL_SIZE

  • Espace mémoire de mise en cache des bases de données.
  • Ne pas hésiter à allouer 80 ~ 90% de la mémoire disponible sur le serveur si celui ci est dédier DB
  • Dans la mesure du possible doit être légèrement supérieur en taille à /var/lib/mysql

INNODB_FLUSH_METHOD

  • Instruction de gestion des accès disque
  • CODE_FS par défaut, laisse à l'OS toute possibilité de gérer les accès selon ces principes. L'OS peux donc utilisé son propre cache qui viendrais ce superposer à celui de innodb
  • O_DIRECT informe l'OS d'écrire sans délai sans tenir compte de son cache.
  • A rapprocher de l'instruction gérant le scheduler de l'OS cf: /sys/block/sda/queue/scheduler

QUERY-CACHE

  • Concerne les instructions query_cache_limit, query_cache_size, query_cache_type
  • A utilise seulement en cas de requêtes uniforme et répétitive, inutile si celle ci sont déporter sur un memcache
  • Effacer dans ce cache et y réécrire impose un MUTEX et donc un lock de tout les thread.
  • A utilisé seulement si le gain d'utilisation VS lock mutex est positif, rarement le cas sur une architecture qui utilise du memcache

SINGLE-TRANSACTION

  • mysqldump single-transaction all-databases > dump.sql
  • Instruction --single-transaction determine que le dump est a réaliser dans le contexte de l'instant T (snapshot style)
  • Ne génère pas de lock, lecture, écriture toujours possible
  • Génère une charge en lecture. Charge quasi nul sur tout le contenue de base dumper est en mémoire
  • Génère une charge en écriture. Penser à écrire sur une FileSystem non sollicité.

- page 1 de 66