Table des matières

Mysql

Plein d'exemples de requêtes sur http://www.artfulsoftware.com/infotree/queries.php?&bw=1269#624

Un article intéressant sur la représentation intervallaire d'arbres http://sqlpro.developpez.com/cours/arborescence/.

Réplication

Tout ce qui suit s'inspire pas mal de l'article “réplication avec mysql” du Hors Série n°18 de Linux Magazine.

Init - Backup des bases

Pour initialiser le systeme, ou si la synchro est perdue (slave en rade trop longtemps, le master n'a pas gardé de log binaire assez vieux au redémarrage du slave), il faut faire un backup des base du master.

  1. pour le backup des bases, on fait un backup à chaud avec un
sqlmaster>FLUSH TABLES WITH READ LOCK;
  1. puis
bash> cp -a /home/mysql /home/mysql.bak
  1. on vide le log binaire avec
sqlmaster>RESET MASTER;

3) et on n'oublie pas de débloquer l'écriture (car il y a plein de threads mysql en attente et le load monte vite).

sqlmaster>UNLOCK TABLES;

On peut regrouper tout ça en une seule commande (sql est un alias pour une connexion mysql aves les droits qui vont bien)

# pour une debian, l'alias qui va bien
alias sql='mysql --defaults-file=/etc/mysql/debian.cnf'
sql -e "FLUSH TABLES WITH READ LOCK;" && cp -a /home/mysql /home/mysql.06-08-30.bak && sql -e "RESET MASTER; UNLOCK TABLES;" && echo "Fini OK"

4) Ensuite, il faut couper le slave (couper mysql, pas juste stop slave), copier le rep mysql avec toutes ses bases, effacer les fichers ib* dedans, virer les logs binaires du slave et on démarrer le slave. On vérifie dans le syslog si tout va bien…

dump

Pour un dump avec une ligne par enregistrement, avec liste des champs (pour comparaisons ultérieures, et éventuellement manipulation avec sed pour virer l'autoincrement des inserts)

# Ajouter les options : --complete-insert --extended-insert=FALSE'