Différences

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>
 +
docs/linuxeries/mysql.1345121126.txt.gz · Dernière modification: 2013/10/03 21:16 (édition externe)
Recent changes RSS feed Debian Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki