[PATCH 3/4] Add support for 'django-dbbackup'

Stephen Finucane stephen at that.guru
Tue Oct 9 20:46:50 AEDT 2018


On Tue, 2018-10-09 at 12:54 +1100, Daniel Axtens wrote:
> Stephen Finucane <stephen at that.guru> writes:
> 
> > 'parsemail' and 'parsearchive' are slow. When messing with models and
> > migrations, it can be very useful to backup the database in its current
> > state and restore it if/when you mess up. Currently, we've documented
> > how to do this via some commands run in the shell of the container, but
> > we can do things easier via an application designed for this purpose:
> > 'django-dbshell'.
> 
> You think it's better to include this dependency than to add a script to
> tools/ that wraps mysqldump/mysqlrestore and the postgres equivalents?
> I'm happy if you think this is the way to go, I just want to know you've
> thought about it.

Yeah, I was going to write a new management command until I decided to
go with this. This is only installed and enabled as part of the dev
configuration so I figure the impact is minimal enough and we benefit
from someone else testing this for us :)

> > 
> > Signed-off-by: Stephen Finucane <stephen at that.guru>
> > ---
> >  .gitignore                |  3 +++
> >  patchwork/settings/dev.py | 13 +++++++++++++
> >  requirements-dev.txt      |  1 +
> 
> Does this need docs added somewhere? I hadn't heard of django-dbshell
> before this...

Hmm, possibly? I purposefully avoided noting this in the release notes
since it doesn't really affect real-world users. That said, I did note
when we added django-debug-toolbar (though not any subsequent updates)
so I could be talked around. In any case, I will add a follow-on patch
to update the docs to refer to this tool instead of manual
backups/restores.

> >  3 files changed, 17 insertions(+)
> > 
> > diff --git a/.gitignore b/.gitignore
> > index 57376bdd..a33d1029 100644
> > --- a/.gitignore
> > +++ b/.gitignore
> > @@ -54,3 +54,6 @@ patchwork/settings/production.py
> >  
> >  # docker-compose configuration files
> >  /.env
> > +
> > +# django-dbbackup files
> 
> Also, here you've called it django-dbbackup, in the commit message it's
> django-dbshell. It that correct?

Yeah, the commit message is wrong. Can fix if/when applying.

Stephen

> Apart from that, I'm very much an ACK for the idea of making backups
> easier.
> 
> Regards,
> Daniel
> > +/.backups
> > diff --git a/patchwork/settings/dev.py b/patchwork/settings/dev.py
> > index 4bb5a93c..711177c9 100644
> > --- a/patchwork/settings/dev.py
> > +++ b/patchwork/settings/dev.py
> > @@ -9,6 +9,11 @@ Design based on:
> >  
> >  from .base import *  # noqa
> >  
> > +try:
> > +    import dbbackup
> > +except ImportError:
> > +    dbbackup = None
> > +
> >  #
> >  # Core settings
> >  # https://docs.djangoproject.com/en/1.11/ref/settings/#core-settings
> > @@ -72,6 +77,14 @@ INTERNAL_IPS = [
> >      '172.18.0.1'
> >  ]
> >  
> > +# django-dbbackup
> > +
> > +if dbbackup:
> > +    INSTALLED_APPS += [
> > +        'dbbackup',
> > +    ]
> > +
> > +    DBBACKUP_STORAGE_OPTIONS = {'location': '.backups'}
> >  
> >  #
> >  # Patchwork settings
> > diff --git a/requirements-dev.txt b/requirements-dev.txt
> > index b0cdd0de..ed98c30e 100644
> > --- a/requirements-dev.txt
> > +++ b/requirements-dev.txt
> > @@ -3,4 +3,5 @@ Django==1.11.15; python_version < '3.0'  # pyup: ignore
> >  djangorestframework==3.8.2
> >  django-filter==2.0.0; python_version >= '3.4'
> >  django-filter==1.1.0; python_version < '3.0'  # pyup: ignore
> > +django-dbbackup==3.2.0
> >  -r requirements-test.txt
> > -- 
> > 2.17.1
> > 
> > _______________________________________________
> > Patchwork mailing list
> > Patchwork at lists.ozlabs.org
> > https://lists.ozlabs.org/listinfo/patchwork




More information about the Patchwork mailing list