Skip to content

Commit a27e090

Browse files
authored
Merge pull request #312 from JacksonOsvaldo/pelican
Fazendo backup do banco de dados no Django [ci skip]
2 parents d336cf7 + b7e6986 commit a27e090

File tree

1 file changed

+122
-0
lines changed

1 file changed

+122
-0
lines changed
Lines changed: 122 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,122 @@
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+
![](https://jacksonosvaldo.github.io/img/django_db.png)
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

Comments
 (0)