Pare o contêiner postgresql

2

Eu tenho uma pergunta sobre parar o contêiner do banco de dados.

  • Eu tenho uma imagem docker que executa o postgresql. Quando eu criar um contêiner com esta imagem:

sudo docker run --name db -d asg1612/postgresql

  • ele executa o comando:

/usr/lib/postgresql/9.3/bin/postgres -D /var/lib/postgresql/9.3/main -c config_file=/etc/postgresql/9.3/main/postgresql.conf

  • e o diretório / var / lib / pgdata é criado como volume do contêiner

  • Eu paro o contêiner com:

sudo docker stop db

O banco de dados parou de funcionar normalmente?

Terei dados corrompidos?

    
por Andrés Sánchez García 29.08.2014 / 10:41

1 resposta

4

Se o banco de dados parar ou não "normalmente", você não terá dados corrompidos. O PostgreSQL é seguro contra falhas, a menos que você configure de outra forma, desde que o sistema de arquivos subjacente e o armazenamento em disco respeitem as solicitações de descarga de disco (fsync). Você perde as transações em andamento, mas nada é corrompido ou deixado pela metade. Isto é verdade mesmo se você SIGKILL ( kill -9 ) o servidor, embora isso não é uma boa ideia fazer isso rotineiramente .

O principal problema que você terá é que, se o servidor PostgreSQL for encerrado abruptamente, pode levar mais tempo para ser iniciado na próxima vez, pois ele precisa fazer mais trabalho para recuperar o trabalho que está comprometido, mas ainda não totalmente aplicado. (simplificação excessiva).

Se não houver init em execução no contêiner (sysvinit / systemd / upstart), provavelmente, nenhum desligamento normal será executado, a menos que você tenha fornecido explicitamente algum tipo de script de desligamento ao Docker. (Eu não trabalhei com o docker ainda). Algumas pesquisas rápidas sugerem que apenas envia um SIGTERM para o (s) processo (s) no contêiner. Isso é bom para o PostgreSQL e é de fato o que pg_ctl -m smart faz . Pode demorar um pouco para parar, portanto, você pode optar por usar SIGINT para forçar a interrupção da transação e encerrar mais rapidamente.

    
por 01.09.2014 / 09:23