|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] sqlite_backup.pl: Create backup of DB using locks to avoid problems with queuerunner.
On Mon, 2014-05-19 at 11:21 +0200, Birintxo SÃnchez wrote:
> Hi Ian,
>
> I forgot to add the runes for the cronjob:
>
> # SQLite backup for xen-devel-bugs DB. Runs everyday at 2:07 to get DB backup
> # ready for offsite backup by Citrix (run at 3:30 am)
> 7 2 * * * /usr/bin/env
> PERLLIB=/srv/xen-devel-bugs/share/perl/5.14.2/
> /srv/xen-devel-bugs/lib/emesinae/sqlite_backup.pl
Thanks, I have applied your patch, modifying it to add the new script to
the top-level Makefile and with the following additional changeset on
top.
I also ran the backups a couple of times by hand and verified they
worked, the crontab has been updated.
Thanks!
Ian.
commit 0ade7d795d21ab4729bda6c07fe9f4f169bd7c5f
Author: Ian Campbell <ian.campbell@xxxxxxxxxx>
Date: Mon May 19 11:45:42 2014 +0100
xen-bugs: Configure database backups
diff --git a/config/examples/xen-bugs.xenproject.org/README
b/config/examples/xen-bugs.xenproject.org/README
index f49d934..cf989d0 100644
--- a/config/examples/xen-bugs.xenproject.org/README
+++ b/config/examples/xen-bugs.xenproject.org/README
@@ -15,10 +15,12 @@ $ make
# chmod 1777 /srv/xen-devel-bugs/var/lock
# mkdir /srv/xen-devel-bugs/var/raw /srv/xen-devel-bugs/var/run \
- /srv/xen-devel-bugs/var/spool/ /srv/xen-devel-bugs/var/spool/incoming
+ /srv/xen-devel-bugs/var/spool/ /srv/xen-devel-bugs/var/spool/incoming \
+ /srv/xen-devel-bugs/var/backups
# chown xen-devel-bugs:xen-devel-bugs \
/srv/xen-devel-bugs/var/raw /srv/xen-devel-bugs/var/run \
- /srv/xen-devel-bugs/var/spool/ /srv/xen-devel-bugs/var/spool/incoming
+ /srv/xen-devel-bugs/var/spool/ /srv/xen-devel-bugs/var/spool/incoming \
+ /srv/xen-devel-bugs/var/backups
# cp config/examples/xen-bugs.xenproject.org/emesinae.conf
/srv/xen-devel-bugs/etc/
@@ -91,8 +93,8 @@ cron Configuration
==================
# mkdir /srv/xen-devel-bugs/var/log
-# touch /srv/xen-devel-bugs/var/log/queuerunner.log
-# chown xen-devel-bugs:xen-devel-bugs
/srv/xen-devel-bugs/var/log/queuerunner.log
+# touch /srv/xen-devel-bugs/var/log/{backups,queuerunner}.log
+# chown xen-devel-bugs:xen-devel-bugs
/srv/xen-devel-bugs/var/log/{backups,queuerunner}.log
# crontab -e -u xen-devel-bugs
8<-----------------------------
@@ -100,5 +102,9 @@ SHELL=/bin/sh
# Process queue every 15 minutes
*/15 * * * * /usr/bin/env
PERLLIB=/srv/xen-devel-bugs/share/perl/5.14.2/
/srv/xen-devel-bugs/lib/emesinae/queuerunner.pl
>>/srv/xen-devel-bugs/var/log/queuerunner.log
+
+# Backup everyday at 2:07 ready for offsite backup by Citrix (run at 3:30 am)
+7 2 * * * /usr/bin/env
PERLLIB=/srv/xen-devel-bugs/share/perl/5.14.2/
/srv/xen-devel-bugs/lib/emesinae/sqlite_backup.pl
>>/srv/xen-devel-bugs/var/log/backups.log
+
8<-----------------------------
diff --git a/config/examples/xen-bugs.xenproject.org/emesinae.conf
b/config/examples/xen-bugs.xenproject.org/emesinae.conf
index bf6fcf8..beefa3e 100644
--- a/config/examples/xen-bugs.xenproject.org/emesinae.conf
+++ b/config/examples/xen-bugs.xenproject.org/emesinae.conf
@@ -72,3 +72,6 @@ $c{ControlBlacklistPath} =
"/srv/xen-devel-bugs/etc/control.blacklist";
# Severity levels, in decending order of criticality
@{ $c{SeverityLevels} } = qw/blocker critical normal wishlist/;
$c{DefaultSeverity} = "normal";
+
+# Backup configuration
+$c{BackupDir} = "/srv/xen-devel-bugs/var/backups/";
>
> Cheers,
>
> Birin
>
>
> On 19 May 2014 10:46, Birin Sanchez <birin.sanchez@xxxxxxxxxx> wrote:
> >
> > ---
> > config/emesinae.conf | 3 +++
> > config/examples/test/emesinae.conf | 3 +++
> > scripts/sqlite_backup.pl | 39
> > ++++++++++++++++++++++++++++++++++++++
> > 3 files changed, 45 insertions(+)
> > create mode 100755 scripts/sqlite_backup.pl
> >
> > diff --git a/config/emesinae.conf b/config/emesinae.conf
> > index 0aa1b3f..dd58c94 100644
> > --- a/config/emesinae.conf
> > +++ b/config/emesinae.conf
> > @@ -76,3 +76,6 @@ $c{ControlBlacklistPath} =
> > "/etc/emesinae/control.blacklist";
> > # Severity levels, in decending order of criticality
> > @{ $c{SeverityLevels} } = qw/blocker critical normal wishlist/;
> > $c{DefaultSeverity} = "normal";
> > +
> > +# Backup configuration
> > +$c{BackupDir} = "/var/backups/";
> > diff --git a/config/examples/test/emesinae.conf
> > b/config/examples/test/emesinae.conf
> > index 528dcb6..11e4fad 100644
> > --- a/config/examples/test/emesinae.conf
> > +++ b/config/examples/test/emesinae.conf
> > @@ -70,3 +70,6 @@ $c{ControlBlacklistPath} =
> > "/srv/test/etc/control.blacklist";
> > # Severity levels, in decending order of criticality
> > @{ $c{SeverityLevels} } = qw/blocker critical normal wishlist/;
> > $c{DefaultSeverity} = "normal";
> > +
> > +# Backup configuration
> > +$c{BackupDir} = "/srv/test/var/backups/";
> > diff --git a/scripts/sqlite_backup.pl b/scripts/sqlite_backup.pl
> > new file mode 100755
> > index 0000000..557bc59
> > --- /dev/null
> > +++ b/scripts/sqlite_backup.pl
> > @@ -0,0 +1,39 @@
> > +#!/usr/bin/perl
> > +#
> > +# Creates a backup of the current DB in $c{BackupDir}
> > +# using locks to avoid race conditions with queuerunner
> > +
> > +use strict;
> > +use warnings;
> > +
> > +use Emesinae::Common;
> > +use Emesinae::Paths;
> > +use File::Copy;
> > +use File::Basename;
> > +
> > +readconfig();
> > +
> > +chdir( $c{BackupDir} ) || die("chdir to dir $c{BackupDir}: $!");
> > +
> > +
> > +my $lock = subsyslock('queuerunner');
> > +
> > +my $BackupDB = $c{BackupDir} . basename($c{DB});
> > +my $BackupDBxz = $c{BackupDir} . basename($c{DB}) . ".xz";
> > +my $OldBackupDBxz = $c{BackupDir} . basename($c{DB}) . ".old.xz";
> > +
> > +if ( -f $BackupDBxz ) {
> > + move($BackupDBxz, $OldBackupDBxz) or die ("move failed: $!");
> > +}
> > +
> > +my $dbh = DBI->connect("dbi:SQLite:dbname=$c{DB}","","");
> > +$dbh->sqlite_backup_to_file( $BackupDB );
> > +undef $dbh;
> > +
> > +my @args = ("xz", "$BackupDB");
> > +system(@args) == 0
> > + or die ("xz compress failed: $?");
> > +
> > +subsysunlock($lock);
> > +
> > +exit(0)
> > --
> > 1.8.3.2
> >
> >
> > _______________________________________________
> > Xen-devel mailing list
> > Xen-devel@xxxxxxxxxxxxx
> > http://lists.xen.org/xen-devel
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |