Edito
Voila voila, je refais mon infra…
Et j'ai donc envie de participer a une oeuvre commune :
Antoine.
Pub
Désolé de vous incommoder avec cela, c'est un mal aujourd'hui nécessaire. Je le souhaite juste utile, on verra.
Cette page vous donne les différences entre la révision choisie et la version actuelle de la page.
docs:linuxeries:mysql [2012/08/16 14:45] 127.0.0.1 édition externe |
docs:linuxeries:mysql [2021/08/20 15:48] (version actuelle) |
||
---|---|---|---|
Ligne 43: | Ligne 43: | ||
- | <xtermrtf> | + | <code bash> |
#!/bin/bash | #!/bin/bash | ||
Ligne 79: | Ligne 79: | ||
done | done | ||
- | </xtermrtf> | + | </code> |
<xtermrtf> | <xtermrtf> | ||
Ligne 93: | Ligne 93: | ||
} | } | ||
</xtermrtf> | </xtermrtf> | ||
+ | ====== Dump differentiel ====== | ||
+ | L'idee est de savoir si un Dump est un nouveau dump ou non.... les avantages: | ||
+ | - Savoir si la base est "morte" ou non (depuis combien de temps on n'y a plus vu d'ecritures) | ||
+ | - Ne pas regenerer de nouvau fichier de dump pour le logiciel qui viendra faire le backup fichier | ||
+ | - Signaler si le dump n'a pas abouti | ||
+ | |||
+ | Attention, ce code est a adapter au besoin, ici c'est un POC, codé une nuit d'Ô rage | ||
+ | * Il attend en parametre la base de travaille, donc une facon drole de le lancer... | ||
+ | <xtermrtf> | ||
+ | mysql -e "show databases\G" | grep "^Database" | sed -s "s/^Database: //g" | while read db; do ./DoDump $db; done | ||
+ | </xtermrtf> | ||
+ | * Il est attendu que la conf du //~/.my.cnf// soit correctement parametre | ||
+ | |||
+ | <code perl> | ||
+ | #!/usr/bin/perl | ||
+ | # License | ||
+ | # GPLv2 (http://www.gnu.org/licenses/gpl-2.0.txt) | ||
+ | # Authors | ||
+ | # DELAPORTE Antoine | ||
+ | # Versions | ||
+ | # 1.0 adlp : poc, it's work just fine ;) | ||
+ | |||
+ | |||
+ | use strict; | ||
+ | use warnings; | ||
+ | use Digest::MD5; | ||
+ | |||
+ | |||
+ | my $db=$ARGV[0]; | ||
+ | |||
+ | sub md5dump { | ||
+ | my ($in,$out)=@_; | ||
+ | |||
+ | my $md5 = Digest::MD5->new; | ||
+ | my $eod = 0; | ||
+ | my $ll = ""; | ||
+ | |||
+ | while(<$in>) { | ||
+ | if(/^-- Dump completed on /) { | ||
+ | # -- Dump completed on 2013-10-02 23:02:52 | ||
+ | chomp($ll=$_); | ||
+ | $ll=~s/^-- Dump completed on //g; | ||
+ | $ll=~tr/ :-/-/s; | ||
+ | $eod=1; | ||
+ | } | ||
+ | elsif(!/^CHANGE MASTER TO /) { | ||
+ | $md5->add($_); | ||
+ | } | ||
+ | if(defined($out)) { print $out $_;} | ||
+ | } | ||
+ | if($eod) { $eod=$md5->clone->hexdigest; } | ||
+ | return(($eod,$ll)); | ||
+ | } | ||
+ | |||
+ | |||
+ | |||
+ | my ($omd,$date)=(0,undef); | ||
+ | my ($omd,$date)=(0,undef); | ||
+ | |||
+ | if(open(PD,"zcat $db.sql |")) { | ||
+ | ($omd,$date)=md5dump(\*PD,undef); | ||
+ | close(PD); | ||
+ | } | ||
+ | |||
+ | open(CD,"mysqldump --master-data --database $db |") or die "Impossible d'ouvrir la db $db"; | ||
+ | open(ND,"| gzip -9 -c >$db.sql.new") or die "Impossible d'ouvirir le fichier de sortie"; | ||
+ | my ($cmd,$null)=md5dump(\*CD,\*ND); | ||
+ | close(CD); | ||
+ | close(ND); | ||
+ | |||
+ | # conserve bakup si dump courant pas null, et md5 different | ||
+ | # on ne s'appuie pas sur la notion de l'evolution du binlog car entre 2 bkp cette db n'a pas changé | ||
+ | |||
+ | if($cmd and $omd ne $cmd) { | ||
+ | print "Dump necessaires et differents $db\n"; | ||
+ | if($omd) { rename("$db.sql.gz","$db.sql.gz-$date"); } | ||
+ | rename("$db.sql.new","$db.sql.gz"); | ||
+ | } | ||
+ | else { | ||
+ | unlink("$db.sql.new"); | ||
+ | } | ||
+ | </code> | ||
====== Purge des Fichiers BinLog ====== | ====== Purge des Fichiers BinLog ====== | ||
Ligne 126: | Ligne 208: | ||
</xtermrtf> | </xtermrtf> | ||
+ | |||
+ | |||
+ | ====== Fast backups ====== | ||
+ | |||
+ | Attention, dangereux | ||
+ | * https://www.lullabot.com/blog/article/mysql-backups-using-lvm-snapshots | ||
+ | * http://www.partage-it.com/backup-lvm/ | ||
+ | * http://www.mysqlperformanceblog.com/2006/08/21/using-lvm-for-mysql-backup-and-replication-setup/ | ||
+ | * http://dev.mysql.com/doc/refman/5.6/en/mysqlbinlog-backup.html | ||
+ | * http://blog.hbis.fr/2010/06/25/mysql-enable_read_only_mode/ | ||
+ | <xtermrtf> | ||
+ | mysql> set GLOBAL read_only=true; | ||
+ | mysql> exit; | ||
+ | wurzel:~> [...] | ||
+ | wurzel:~> mysql | ||
+ | mysql> set GLOBAL read_only=false; | ||
+ | [...] | ||
+ | mysql> FLUSH TABLES WITH READ LOCK; | ||
+ | mysql> [...] | ||
+ | mysql> UNLOCK TABLES | ||
+ | </xtermrtf> | ||
+ |