radar-parlamentar / radar

Estamos de mudança para o GitLab: https://gitlab.com/radar-parlamentar/radar.
http://radarparlamentar.polignu.org
84 stars 44 forks source link

Rotina periódica para dump do banco #465

Open leonardofl opened 6 years ago

leonardofl commented 6 years ago

Pra poder fazer o dump a gente executa o comando pg_dump. Pra poder ter esse comando no container eu tive que instalar na imagem base o pacote postgresql, que instala o postgresql completo =( O esperado seria que o pg_dump estivesse no postgresql-client, mas não estava.

Mas mesmo assim, na hora de executar o pg_dump no container, obtive o seguinte erro:

pg_dump: aborting because of server version mismatch

=(

diraol commented 6 years ago

Opa, não tinha visto essa issue e acabei comentando no próprio commit. Reproduzo abaixo:

@leonardofl não sei se concordo com essa alteração. Acho que idealmente deveríamos utilizar as prórprias features do Django para fazer dump da base de dados (ver (manage.py dumpdata)[https://docs.djangoproject.com/en/2.0/ref/django-admin/#dumpdata]).

Dessa forma não temos a necessidade de instalar todo o postgresql na imagem do Radar, (sendo que já usamos o postgresql completo numa imagem à parte).

leonardofl commented 6 years ago

Opa, não sabia desse "manage.py dumpdata". Concordo que fica bem melhor, principalmente em vista das dificuldades enfrentadas... Em vez de publicar a imagem docker vou desfazer oq tinha feito e depois como usar esse dumpdata.

lopes05 commented 6 years ago

@leonardofl tenta colocar o postgres de novo no Dockerfile, e no docker-compose troca a imagem do container do postgres pra 9.5.12-alpine, acho que isso pode resolver o problema de versões diferentes

leonardofl commented 6 years ago

Legal, boa ideia. Vou tentar. Valeu.

@diraol: considerando a estratégia de gerar um sql vc enxerga algum outro caminho p não ter q instalar o postgres na VM do Django?

Por ora, eu estou mais propenso a seguir por esse caminho (claro, se alguém achar um jeito melhor... Melhor :)

leonardofl commented 6 years ago

Alterei a imagem do postgres para 9.5.12 e funcionou!!! Valeu @lopes05 !!!

Sempre um pouco triste fazer downgrade, mas acho que nesse caso é o preço a se pagar.

Obs: eu fiz o teste logando no container (sh) e executando o comando pg_dump. Agora tem que testar direitinho a classe DbDumper.

[]s

leonardofl commented 6 years ago

Droga, esqueci de referenciar a issue. Commit que altera versão do postgres: 0adf8d1f75841713264d90aee8b885e02eb4037d

diraol commented 6 years ago

@leonardofl não entendi exatamente qual foi o problema que demandou fazer o downgrade, mas acho que valem alguns mapeamentos:

O container que estava sendo utilizado para o radar é o python:3.6-alpine. Este, por sua vez, é baseado no alpine3.7. Olhando no repositório de pacotes do Alpine, vemos que a versão do postgresql disponível para alpine 3.7 é o 10.4-r0 (server e client).

Assim, acho que se o problema era uma incompatibilidade entre as versões do postgresql-client e "container", poderíamos tentar colocar todos na versã0 10.4 e ver se funciona, o que me parece melhor do que tentar voltar à 9.X. =)

leonardofl commented 6 years ago

O motivo foi

Mas mesmo assim, na hora de executar o pg_dump no container, obtive o seguinte erro:

pg_dump: aborting because of server version mismatch

Mas parece q vale sim a tentativa q vc falou!

Valeus

leonardofl commented 6 years ago

Acho que funcionou @diraol ! Valeu!

Único detalhe que achei mais digno de nota é que usando FROM python:3.7-alpine não funcionava: manifest for python:3.7-alpine not found. Por isso usei FROM python:3.7-rc-alpine.

diraol commented 6 years ago

@leonardofl perceba que o meu comentário foi: a imagem python:3.6-alpine usa, como base, a imagem alpine:3.7. E não que precisamos usar python:3.7 (foi só uma infeliz coincidência numérica das coisas!)

python:3.7-alpine ou python:3.7-rc-apline são referentes à versão 3.7 do python, que ainda não foi lançada de forma "stable" e definitiva.

leonardofl commented 6 years ago

Eh, parece q me confundi c isso :/