From f61507920beeffa925c1dd13d76939e0352e2ae7 Mon Sep 17 00:00:00 2001 From: Steve Kemp Date: Wed, 21 Sep 2016 14:26:09 +0300 Subject: Import byteback-mysql scripts/files from jlawrie. --- .../scripts.d/Bytemyback/mysqldump-split-db | 44 ++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100755 byteback-mysql/scripts.d/Bytemyback/mysqldump-split-db (limited to 'byteback-mysql/scripts.d/Bytemyback/mysqldump-split-db') diff --git a/byteback-mysql/scripts.d/Bytemyback/mysqldump-split-db b/byteback-mysql/scripts.d/Bytemyback/mysqldump-split-db new file mode 100755 index 0000000..b484ef6 --- /dev/null +++ b/byteback-mysql/scripts.d/Bytemyback/mysqldump-split-db @@ -0,0 +1,44 @@ +#!/usr/bin/perl + +use warnings; +use strict; +use Sys::Hostname; + +if ((!@ARGV) or ($ARGV[0] ne 'pre')) { + exit; +} + +# Quick mysqldump wrapper to dump individual databases and alert if it fails at all +my $failed = 0; # only set to 0 once +my $failed_databases = ''; +my $backup_directory = '/var/backups/byteback/mysqldump-split-db/'; +`mkdir -p $backup_directory`; + +my @databases = `echo "SHOW DATABASES" | mysql --defaults-file=/etc/mysql/debian.cnf`; +shift @databases; # Get rid of 'Databases' title from the top +foreach my $database (@databases) { + chomp($database); + next if $database eq "lost+found"; + next if $database =~ /^#mysql..#lost\+found$/; + next if $database =~ /^information_schema$/; + next if $database =~ /^performance_schema$/; + next if $database =~ /^events$/; + next if $database =~ /^cond_instances$/; + print "Dumping $database\n"; + # Need to get rid of this -f once we've fixed errors with views (access denied etc.) + my $gzip = -x '/usr/bin/pigz' ? '/usr/bin/pigz' : 'gzip'; + my $error_code = system("mysqldump --defaults-file=/etc/mysql/debian.cnf --events -f $database | $gzip > ${backup_directory}/${database}.sql.gz\n"); + if ($error_code) { + $failed++; + $failed_databases .= " $database"; + } +} + +my $host = hostname; +if ($failed) { + $host = hostname; + system("mauvesend -i mysqldump-${host}-low -r now -s 'mysqldump on ${host} failed for $failed_databases' --detail='Please try running them manually to see what the problem was, and check the mailing list'"); +} +else { + system("mauvesend -i mysqldump-${host}-low -c now -s 'mysqldump on ${host} failed for $failed_databases' --detail='Please try running them manually to see what the problem was, and check the mailing list'"); +} -- cgit v1.2.1