AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / server / Perguntas / 1129978
Accepted
QF0
QF0
Asked: 2023-04-29 19:58:57 +0800 CST2023-04-29 19:58:57 +0800 CST 2023-04-29 19:58:57 +0800 CST

Prática recomendada para interromper o Apache durante os backups

  • 772

Durante os backups, preciso deixar o Apache 'inativo' para poder parar o MySQL e, em seguida, fazer backup dos bancos de dados MySQL e SQLite. O único acesso aos bancos de dados é através do Apache.

Atualmente, estou pensando em fazer isso com um script que modifique a configuração do Apache para redirecionar todos os acessos para uma página de 'site down', e então:

apache2ctl graceful
systemctl stop mysqld

No entanto, isso não parece ser uma ideia particularmente boa. gracefulnão para todos os trabalhadores infantis e, presumivelmente, apache2ctlretorna imediatamente. Este é um servidor de volume muito baixo e o backup é executado no meio da noite, em um fuso horário, e tenho certeza de que nenhuma solicitação durará mais de um minuto.

Existe uma maneira 'boa' de lidar com isso, em vez de apenas colocar um sleep 60após o graceful? Estou pensando que pode ser uma ideia melhor fazer um graceful-stope não se preocupar com uma página do site inativa, definida GracefulShutdownTimeoutpara 60 e dormir por 60 também.

apache-2.4
  • 1 1 respostas
  • 24 Views

1 respostas

  • Voted
  1. Best Answer
    John Mahowald
    2023-04-30T01:23:27+08:002023-04-30T01:23:27+08:00

    Os procedimentos de tempo de inatividade são relativamente fáceis quando apenas desligá-lo por uma longa janela é aceitável. Mais ou menos o que você está fazendo.

    Antes do tempo de inatividade, enquanto ainda estiver em execução, considere um lembrete no site de que ele está em manutenção. As organizações variam no que esperam para isso, alguns sistemas têm um banner informando que será desativado hoje à noite, alguns têm um calendário de manutenção separado.

    Como o servidor web está sendo desligado, não há muita oportunidade de mostrar uma página de manutenção. Provavelmente não se preocupe por agora. Talvez no futuro, isso esteja atrás de um balanceador de carga e isso pode mostrar uma página estática inativa enquanto as conexões estão sendo drenadas.

    Quando disponível, use o mesmo gerenciador de serviço para iniciar e parar todos os aplicativos. O uso de uma ferramenta permite relatórios consistentes de status, dependências, manipulação de limpeza de paradas com falha e outros recursos. Confusamente, nem toda distro gosta de usar o programa apachectl, mas tudo bem porque como o httpd para por meio de sinais está bem documentado .

    Pare a web e, em seguida, o servidor de banco de dados. Confie no gerenciador de serviços, neste caso, unidades systemd, para fornecer desligamentos relativamente suaves, semelhantes a apachectl graceful-stop. Leia as unidades para obter os detalhes de como elas são implementadas.

    # Stop web first to stop application from accessing data
    systemctl stop apache2
    # A long wait here is likely not necessary
    # the service manager is shutting down processes, and the database is going away soon as well
    
    # Stop one at a time to ensure done in this order
    systemctl stop mysqld
    # Wait a bit for database files to be closed, just in case
    # FIXME this delay is arbitrary
    sleep 10
    

    Se você fizer backups copiando os arquivos de banco de dados ao vivo, tome cuidado para que nenhum processo ainda os acesse. A cópia de arquivos que ainda estão sendo gravados tem o risco de as cópias serem corrompidas e de um backup incorreto. Em situações normais, uma parada normal impedirá rapidamente novas solicitações. E sob carga leve, o trabalho de limpeza e desligamento é concluído rapidamente. A parte complicada é garantir que isso seja verdade mesmo em circunstâncias extraordinárias.

    Um backup cuidadoso pode verificar se nada tem os arquivos abertos, como fuserem um script. Possivelmente também enviando um sinal para quaisquer processos restantes, como um SIGTERM.

    Exigir tempo de inatividade, além de um pouco de paranóia sobre como garantir que os arquivos sejam fechados, torna esse método de backup de cópia de arquivo não tão fácil quanto pode parecer. Considere métodos de backup on-line alternativos, como usar os métodos integrados do banco de dados para copiar seus dados ou despejar exportações para arquivos.

    Para completar, outra opção é consistente, on-line, instantâneos de nível de armazenamento e copiar esses arquivos. Também evita o tempo de inatividade, mas pode ser ainda mais complicado, pois o banco de dados nunca foi encerrado. Fazer isso com segurança significa pausar as gravações e entender como os bancos de dados fazem a recuperação de inicialização.

    Restaurações de teste ocasionalmente. Na verdade, restaure os dados para algum banco de dados de preparação em um ambiente de teste, inicie-o e verifique se os dados estão corretos.

    • 1

relate perguntas

  • O que significa %{REQUEST_FILENAME}.ext? Por que o final .ext extra?

  • Por que meu Apache é capaz de servir 200 arquivos .php que incluem uma barra final?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Você pode passar usuário/passar para autenticação básica HTTP em parâmetros de URL?

    • 5 respostas
  • Marko Smith

    Ping uma porta específica

    • 18 respostas
  • Marko Smith

    Verifique se a porta está aberta ou fechada em um servidor Linux?

    • 7 respostas
  • Marko Smith

    Como automatizar o login SSH com senha?

    • 10 respostas
  • Marko Smith

    Como posso dizer ao Git para Windows onde encontrar minha chave RSA privada?

    • 30 respostas
  • Marko Smith

    Qual é o nome de usuário/senha de superusuário padrão para postgres após uma nova instalação?

    • 5 respostas
  • Marko Smith

    Qual porta o SFTP usa?

    • 6 respostas
  • Marko Smith

    Linha de comando para listar usuários em um grupo do Windows Active Directory?

    • 9 respostas
  • Marko Smith

    O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL?

    • 3 respostas
  • Marko Smith

    Como determinar se uma variável bash está vazia?

    • 15 respostas
  • Martin Hope
    Davie Ping uma porta específica 2009-10-09 01:57:50 +0800 CST
  • Martin Hope
    kernel O scp pode copiar diretórios recursivamente? 2011-04-29 20:24:45 +0800 CST
  • Martin Hope
    Robert ssh retorna "Proprietário incorreto ou permissões em ~/.ssh/config" 2011-03-30 10:15:48 +0800 CST
  • Martin Hope
    Eonil Como automatizar o login SSH com senha? 2011-03-02 03:07:12 +0800 CST
  • Martin Hope
    gunwin Como lidar com um servidor comprometido? 2011-01-03 13:31:27 +0800 CST
  • Martin Hope
    Tom Feiner Como posso classificar a saída du -h por tamanho 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent Como determinar se uma variável bash está vazia? 2009-05-13 09:54:48 +0800 CST

Hot tag

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve