|
| 1 | +Title: Fazendo backup do banco de dados no Django |
| 2 | +Date: 2020-10-27 22:19 |
| 3 | +Tags: Python,Django,backup |
| 4 | +Category: Python |
| 5 | +Slug: fazendo-backup-do-banco-de-dados-no-django |
| 6 | +Author: Jackson Osvaldo |
| 7 | + |
| 8 | +Github: JacksonOsvaldo |
| 9 | +About_author: Um curioso apaixonado por livros, tecnologia e programação. |
| 10 | + |
| 11 | +## Apresentação |
| 12 | + |
| 13 | +Em algum momento, durante o seu processo de desenvolvimento com Django, pode ser que surja a necessidade de criar e restaurar o banco de dados da aplicação. Pensando nisso, resolvi fazer um pequeno tutorial, básico, de como realizar essa operação. |
| 14 | + |
| 15 | +Nesse tutorial, usaremos o [django-dbbackup](https://github.com/django-dbbackup/django-dbbackup), um pacote desenvolvido especificamente para isso. |
| 16 | + |
| 17 | +## Configurando nosso ambiente |
| 18 | + |
| 19 | +Primeiro, partindo do início, vamos criar uma pasta para o nosso projeto e, nela, isolar o nosso ambiente de desenvolvimento usando uma [virtualenv](https://virtualenv.pypa.io/en/latest/index.html): |
| 20 | + |
| 21 | +```shell |
| 22 | +mkdir projeto_db && cd projeto_db #criando a pasta do nosso projeto |
| 23 | + |
| 24 | +virtualenv -p python3.8 env && source env/bin/activate #criando e ativando a nossa virtualenv |
| 25 | +``` |
| 26 | + |
| 27 | +Depois disso e com o nosso ambiente já ativo, vamos realizar os seguintes procedimentos: |
| 28 | + |
| 29 | +```shell |
| 30 | +pip install -U pip #com isso, atualizamos a verão do pip instalado |
| 31 | +``` |
| 32 | + |
| 33 | +## Instalando as dependências |
| 34 | + |
| 35 | +Agora, vamos instalar o [Django](https://www.djangoproject.com/) e o pacote que usaremos para fazer nossos backups. |
| 36 | + |
| 37 | +```shell |
| 38 | +pip install Django==3.1.2 #instalando o Django |
| 39 | + |
| 40 | +pip install django-dbbackup #instalando o django-dbbackup |
| 41 | +``` |
| 42 | + |
| 43 | +## Criando e configurando projeto |
| 44 | + |
| 45 | +Depois de instaladas nossas dependências, vamos criar o nosso projeto e configurar o nosso pacote nas configurações do Django. |
| 46 | + |
| 47 | +```shell |
| 48 | +django-admin startproject django_db . #dentro da nossa pasta projeto_db, criamos um projeto Django com o nome de django_db. |
| 49 | +``` |
| 50 | + |
| 51 | +Depois de criado nosso projeto, vamos criar e popular o nosso banco de dados. |
| 52 | + |
| 53 | +```shell |
| 54 | +python manage.py migrate #com isso, sincronizamos o estado do banco de dados com o conjunto atual de modelos e migrações. |
| 55 | +``` |
| 56 | + |
| 57 | +Criado nosso banco de dados, vamos criar um superusuário para podemos o painel admin do nosso projeto. |
| 58 | + |
| 59 | +```shell |
| 60 | +python manage.py createsuperuser |
| 61 | +``` |
| 62 | + |
| 63 | +Perfeito. Já temos tudo que precisamos para executar nosso projeto. Para execução dele, é só fazermos: |
| 64 | + |
| 65 | +```shell |
| 66 | +python manage.py runserver |
| 67 | +``` |
| 68 | + |
| 69 | +Você terá uma imagem assim do seu projeto: |
| 70 | + |
| 71 | + |
| 72 | + |
| 73 | +## Configurando o django-dbbackup |
| 74 | + |
| 75 | +Dentro do seu projeto, vamos acessar o arquivo settings.py, como expresso abaixo: |
| 76 | + |
| 77 | +```shell |
| 78 | +django_db/ |
| 79 | +├── settings.py |
| 80 | +``` |
| 81 | + |
| 82 | +Dentro desse arquivos iremos, primeiro, adiconar o django-dbbackup às apps do projeto: |
| 83 | + |
| 84 | +```python |
| 85 | +INSTALLED_APPS = ( |
| 86 | + ... |
| 87 | + 'dbbackup', # adicionando django-dbbackup |
| 88 | +) |
| 89 | +``` |
| 90 | + |
| 91 | +Depois de adicionado às apps, vamos dizer para o Django o que vamos salvar no backup e, depois, indicar a pasta para onde será encaminhado esse arquivo. Essa inserção deve ou pode ser feita no final do arquivo _settings.py_: |
| 92 | + |
| 93 | +```python |
| 94 | +DBBACKUP_STORAGE = 'django.core.files.storage.FileSystemStorage' #o que salvar |
| 95 | +DBBACKUP_STORAGE_OPTIONS = {'location': 'backups/'} # onde salvar |
| 96 | +``` |
| 97 | + |
| 98 | +Percebam que dissemos para o Django salvar o backup na pasta _backups_, mas essa pasta ainda não existe no nosso projeto. Por isso, precisamos criá-la [fora da pasta do projeto]: |
| 99 | + |
| 100 | +```shell |
| 101 | +mkdir backups |
| 102 | +``` |
| 103 | + |
| 104 | +## Criando e restaurando nosso backup |
| 105 | + |
| 106 | +Já temos tudo pronto. Agora, vamos criar o nosso primeiro backup: |
| 107 | + |
| 108 | +```shell |
| 109 | +python manage.py dbbackup |
| 110 | +``` |
| 111 | + |
| 112 | +Depois de exetudado, será criado um arquivo -- no nosso exemplo, esse arquivo terá uma extensão .dump --, salvo na pasta _backups_. Esse arquivo contem todo backup do nosso banco de dados. |
| 113 | + |
| 114 | +Para recuperarmos nosso banco, vamos supor que migramos nosso sistema de um servidor antigo para um novo e, por algum motivo, nossa base de dados foi corrompida, inviabilizando seu uso. Ou seja, estamos com o sistema/projeto sem banco de dados -- ou seja, exlua ou mova a a sua base dados .sqlite3 para que esse exemplo seja útil --, mas temos os backups. Com isso, vamos restaurar o banco: |
| 115 | + |
| 116 | +```shell |
| 117 | +python manage.py dbrestore |
| 118 | +``` |
| 119 | + |
| 120 | +Prontinho, restauramos nosso banco de dados. O interessante do django-dbbackup, dentre outras coisas, é que ele gera os backups com datas e horários específicos, facilitando o processo de recuperação das informações mais recentes. |
| 121 | + |
| 122 | +Por hoje é isso, pessoal. Até a próxima. ;) |
0 commit comments