Criando um serviço iniciante para descarregar e carregar um banco de dados mysql no desligamento

1

Estou executando o Ubuntu Server 14.04 LTS x64. Eu tenho dois convidados do KVM. Um é um servidor de arquivos e outro executa o servidor mysql.

Eu tenho um script que eu executo no servidor de arquivos. O script conecta-se via ssh ao convidado que executa o servidor mysql, copia um banco de dados mysql e faz o upload para outro servidor remoto. O script funciona conforme o esperado. Agora eu quero fazer este script para ser executado no desligamento.

Eu li sobre o upstart e tentei fazer um serviço para conseguir isso. Eu criei meu arquivo init (/etc/init/dotproject_backup.conf) com este conteúdo:

# dotproject_backup
# This service makes a dump and rsync of a dotproject mysql database prior to shutdown.

description "dotproject backup"
author "Rodrigo Martinho"

start on startup
stop on runlevel [016]

pre-stop script
exec /home/user/script.sh
end script

Neste exemplo, eu também coloco o runlevel 6 para que eu possa testá-lo na reinicialização. Eu posso mudar isso depois de todos os trabalhos. Na reinicialização, o sistema não está aguardando a execução do script. Na verdade, parece que o script não está sendo executado, como posso ver no arquivo de log (/ var / log / upstart / dotproject_backup).

Eu tentei algumas outras configurações onde o script foi iniciado, mas o desligamento foi concluído antes do despejo do upload:

# dotproject_backup
# This service makes a dump and rsync of a dotproject mysql database prior to shutdown.

description "dotproject backup"
author "Rodrigo Martinho"

start on runlevel [016] or stopping dbus or deconfiguring-networking

script
exec /home/user/script.sh
end script

Nesta configuração, posso ver no arquivo de log que o script foi iniciado, mas foi cancelado quando o arquivo estava sendo carregado.

Eu li em outro post aqui que a maneira correta de realizar isso é mudar a condição de início, então o script é executado antes do processo de reinicialização ser iniciado:

# dotproject_backup
# This service makes a dump and rsync of a dotproject mysql database prior to shutdown.

description "dotproject backup"
author "Rodrigo Martinho"

start on starting rc RUNLEVEL=[016]

script
exec /home/user/script.sh
end script

Mas neste exemplo, novamente, o desligamento foi concluído antes do script.

Então, minhas perguntas são:

  • Devo iniciar ou interromper o serviço quando alterações de nível de execução para desligamento ou reinicialização?
  • Como devo fazer o desligamento para esperar até que o script esteja completo?
  • Seria uma abordagem melhor executar meu script como uma pré-parada dentro de outro serviço?

Agradecemos antecipadamente por qualquer ajuda,

Rodrigo Martinho.

    
por rodrigomartinho 22.01.2016 / 04:10

0 respostas