Usando o instantâneo lvm2 do MySQL InnoDB file-per-table, eu preciso parar o servidor para backup?

1

Eu li um monte de artigos sobre como fazer backups consistentes do mySQL, incluindo Qual o significado de um conjunto de dados consistente? (MySQL) , mas eu ainda não acho que sei o suficiente para responder a essa pergunta com confiança. Originalmente postei essa pergunta no stackoverflow, mas alguns membros de alta reputação recomendaram que esse seria um lugar melhor para isso. Então, eu basicamente copio e colo a questão aqui e deleto a partir daí. Espero que seja uma prática aceitável - pedi ajuda sobre como fazer a pergunta, mas não consegui nenhuma.

Execução do MySQL 5.5 usando apenas tabelas InnoDB com o arquivo por tabela ativado em um site multiusuário hospedado no Amazon EC2 executando o Amazon Linux.

Pelo que consegui encontrar aqui e em outros sites do Stack Exchange, parece que não há problema em copiar toda a árvore data para fazer um backup válido depois de encerrar o servidor.

O que estou fazendo atualmente para backups é:

  1. pare o apache
  2. para o mysql
  3. tire um instantâneo lvm2 do volume que contém o diretório de dados
  4. inicie o mysql
  5. inicie o apache
  6. use o rsnapshot para copiar o instantâneo lvm2 para um volume diferente
  7. elimine o instantâneo lvm2

Em sua resposta ao link , Bill Karwin observou que os instantâneos lvm podem degradar seriamente Desempenho de I / O. Mas acredito que como o instantâneo lvm está ativo apenas durante o curto tempo que o rsnapshot (que usa o rsync) leva para ser concluído, o desempenho não deve ser seriamente afetado.

Então, minha pergunta é se eu realmente preciso parar os servidores enquanto faço o snapshot lvm. Acho que li em algum lugar que, embora um instantâneo "instantâneo no tempo" possa capturar tabelas InnoDB com transações incompletas, se isso acontecer, o mySQL lidará com elas consistentemente quando iniciado novamente. Então, eu estou pensando que parar o servidor pode ser um exagero, mesmo que ele seja interrompido por um tempo muito curto enquanto o instantâneo lvm é tirado. (Eu paro o apache pela primeira vez para que os pedidos não entrem sem um banco de dados em execução).

Eu certamente vou dar uma olhada no conselho de Bill no link . E parece ser muito citado aqui. Funciona bem com o MySQL 5.5 ou eu preciso instalar o Percona Server? Enquanto isso, gostaria de saber se posso melhorar o que estou fazendo - ou se o que estou fazendo já está quebrado!

    
por sootsnoot 25.12.2014 / 04:59

1 resposta

2

TL; DR: Parar seus serviços não é necessário com os instantâneos do LVM. +1 para XtraBackup.

Não é necessário parar os serviços. O instantâneo LVM é equivalente a puxar o poder, o que significa que é consistente, mas o mesmo que um acidente. Ao iniciar o serviço a partir de um dos seus backups, ele terá que fazer a recuperação de falhas. O tempo necessário para fazer isso varia dependendo do tamanho dos arquivos de log do InnoDB, mas pode levar alguns minutos. Assim que a recuperação da falha for concluída, seu serviço estará funcionando normalmente novamente.

Ao encerrar os serviços antes do snapshot, sua recuperação será iniciada mais rapidamente, mas ao custo de algum tempo de inatividade toda vez que você executar seus backups. Também vale a pena considerar que, toda vez que você interromper os serviços, você perderá todo o pool de buffers, portanto também haverá alguma degradação no desempenho por ter que ler os dados na memória novamente.

O XtraBackup foi projetado para funcionar com o Oracle MySQL e com o Percona Server. É uma boa opção, embora, como todas as coisas, faça backup, teste, teste e teste novamente para garantir que ele funcione antes e você descobre que precisa.

    
por 25.12.2014 / 05:23

Tags