summaryrefslogtreecommitdiff
path: root/byteback-mysql/scripts.d/Bytemyback/mysqldump-split-db
diff options
context:
space:
mode:
authorSteve Kemp <steve@steve.org.uk>2016-09-21 14:26:09 +0300
committerSteve Kemp <steve@steve.org.uk>2016-09-21 14:26:09 +0300
commitf61507920beeffa925c1dd13d76939e0352e2ae7 (patch)
treeb99cbb2a61e0d1f0f48dd11877df64b1371729cb /byteback-mysql/scripts.d/Bytemyback/mysqldump-split-db
parentbcfddd9c4bec12260abcdf105d918ff82a279794 (diff)
Import byteback-mysql scripts/files from jlawrie.
Diffstat (limited to 'byteback-mysql/scripts.d/Bytemyback/mysqldump-split-db')
-rwxr-xr-xbyteback-mysql/scripts.d/Bytemyback/mysqldump-split-db44
1 files changed, 44 insertions, 0 deletions
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'");
+}