Preciso baixar meu site apenas para usar o mysqldump?

1

Eu tenho um site LAMP com backend mysql com o mecanismo InnoDb para tabelas

Eu gostaria de poder usar o mysqldump para fazer descargas periódicas do banco de dados - SEM ter que parar o servidor mysql (ou seja, desligar o site) enquanto durar o backup.

Eu estou surpreso que eu não posso encontrar essa informação em qualquer lugar - nem mesmo na documentação do mySQL. Muita menção é feita sobre mysqlhotcopy, mas isso só funciona para tabelas IMSAM - e, portanto, não tem interesse / uso para mim.

Alguém sabe se (como?) eu posso usar o mysqldump para copiar / descarregar um banco de dados que ainda está sendo usado?.

Um link para a documentação oficial seria muito útil, já que eu quero ter certeza de que estou absolutamente certo.

Estou executando no Ubuntu 10.0.4 LTS

    
por user35402 02.08.2010 / 09:45

5 respostas

2

Não, você não precisa derrubar o site para fazer um backup do MySQL. Você não só pode usar o mysqldump em um banco de dados MySQL em execução, mas na verdade o servidor deve estar rodando para que o mysqldump possa se conectar a ele. O fato de você estar usando tabelas InnoDB é uma vantagem, já que qualquer bloqueio será breve e é altamente improvável que seus usuários estejam cientes deles.

Se você está nervoso ou hesitante em executar o backup, não é difícil executar outra instância do MySQL e configurar a replicação mestre / escravo, executando os backups no escravo. Dessa forma, você pode ter certeza de que o site não será afetado pelos backups.

    
por 02.08.2010 / 11:57
1

Depende de quanto você tem alta carga, mas a sugestão de Janne é a que a maioria dos administradores resolve por causa da carga ao fazer backups.

Para o InnoDB você não tem muitas opções quando se trata de backup:

Eu não tenho nenhuma experiência com nenhum deles - mas eu pesquisei isso alguns meses atrás, quando estávamos considerando um movimento do MyISAM para o InnoDB (nós não tivemos muitas pesquisas de índice de texto completo).

    
por 02.08.2010 / 10:01
1

Sim, você pode usar mysqldump em um servidor em execução - você precisa - mysqldump apenas se conecta ao servidor e executa comandos SQL no servidor para gerar o arquivo de despejo.

Se você estiver preocupado com a consistência do arquivo de despejo, você pode usar --single-transaction se estiver executando em tabelas InnoDB. Ele irá envolver o despejo em uma transação.

mysqldump pode afetar o desempenho do seu servidor (assim como qualquer backup poderia), portanto, teste antes de colocá-lo em produção.

Outra opção, se você estiver usando o LVM sob o MySQL, seria usar mylvmbackup - isso tira um instantâneo do LVM volume para que você possa fazer backup dos arquivos de dados da forma que desejar.

    
por 02.08.2010 / 11:42
0

(Ah, eu vejo que você postou isso para ambos os superusuários e aqui. Aqui está um copypastah.)

A maneira usual de fazer isso é configurar uma instância escrava do MySQL e fazer o backup a partir daí. Você não precisa necessariamente de um servidor físico separado para o escravo MySQL, é perfeitamente correto executá-lo no mesmo servidor (se você tiver espaço em disco e alguma memória para ele; do lado da CPU, um escravo do MySQL ocioso não faz muito mal).

    
por 02.08.2010 / 09:50
0

Usar o mysqldump para fazer backup de tabelas InnoDB é contemplado na documentação oficial aqui

link

Você não terá problema algum. Eu uso todos os dias para fazer backups periódicos de um monte de bancos de dados com uma frequência de até 15 minutos.

Para garantir que você tenha seus dados em um estado consistente, você deve usar a opção -single-transactione enquanto invoca o mysqldump. Isso é tudo.

    
por 02.08.2010 / 12:10