Devo usar mysqldump ou mysqlhotcopy para backups de banco de dados MySQL?

14

Eu tenho um blog WordPress em execução em um banco de dados MySQL que desejo fazer backup regularmente. Seria melhor usar o programa mysqldump ou o script mysqlhotcopy para fazer backups? Quais são os prós e os contras de cada um? Existem outras opções que devo considerar?

Matthew Shanley
fonte

Respostas:

5

Posso dizer que atualmente uso o mysqldump para manter um backup do meu banco de dados. Faço isso porque meu objetivo é manter backups semanais para que, caso alguém remova suas páginas da Web, eu possa recuperá-las no máximo há uma semana.

O bom disso é que ele é um arquivo de texto básico para que eu possa importá-lo para qualquer computador com MySQL, carregá-lo e procurar os dados ausentes. Nota: para obter o que eu queria, o comando que estou usando no meu script é o seguinte:

mysqldump --databases databaseName > /file/path

o --databases é o que faz mysqldump despejar os CREATE DATABASE IF NOT EXISTcabeçalhos para que eu possa importá-lo em qualquer lugar que eu quero.

Embora esse método funcione para mim, tenho certeza de que existem métodos melhores para outros fins. Também posso dizer que, como em qualquer solução de backup, você deve armazená-la pelo menos em outro computador e, de preferência, fora do local (nosso na nuvem), se puder.

Mike
fonte
5

Eu consideraria usar um plugin do WordPress chamado "Backup do banco de dados do WordPress (WP-DB-Backup)", que também está listado no guia de backup do banco de dados do Wordpress . Este plug-in pode fazer backup do banco de dados em uma programação e enviá-lo por e-mail (assumindo que seja um banco de dados pequeno). Você também pode fazer o backup localmente. Você pode excluir spam e revisões de comentários para diminuir o banco de dados

Menos controle, mas mais fácil de implementar.

Os dumps do MySQL oferecem mais controle . Seu serviço de hospedagem também pode ser um fator limitante. Alguns hosts não dão acesso para executar tarefas cron ou executar o comando mysqldump.

citadelgrad
fonte
4

SUGESTÃO # 1

Se você fizer backups da Instância MySQL, é melhor configurar o MySQL Replicaton para que qualquer imposição de carga do servidor ou aumento de E / S de disco não afete seu banco de dados de produção.

Depois de configurar o MySQL Replication, você pode criar scripts para um mysqldump de diferentes maneiras ( consulte meu post no DBA StackExchange para a variedade de técnicas ), desde que você execute o mysqldumps em um escravo.

SUGESTÃO # 2

Se você não conseguir configurar outro servidor para replicação do MySQL e todos os seus dados forem do InnoDB, será necessário executar um mysqldump point-in-time. Isso é feito usando a --single-transactionopção com o mysqldump. Portanto, se você executou um mysqldump a partir da meia-noite e o backup terminou às 12h15, a saída do mysqldump quando restaurada reflete os dados a partir das 12h.

SUGESTÃO # 3

Outro programa disponível para backups do MySQL é o XtraBackup da Percona.

O XtraBackup é uma ferramenta abrangente que se comporta como o rsync, mas tem um objetivo direcionado na vida. Ele pode começar a copiar todos os dados e espaços de tabela do InnoDB. Ele tem a capacidade de criar pontos de verificação internamente e executar no local uma recuperação de falhas do InnoDB para ajudar a obter um backup point-in-time perfeito. O XtraBackup também possui um recurso extra que permite a criação de backups incrementais. Outro recurso adicional é a criação de arquivos de log do InnoDB, também criados por uma recuperação de falhas no local. Há também algum software de invólucro para fornecer cópia congelada de tabelas MyISAM também.

Ele executa uma parte traseira da instância do MySQL, mas com uma diferença distinta. O momento exato do backup é baseado no momento em que o backup foi concluído e não quando foi iniciado. Portanto, se você executou o XtraBackup a partir da meia-noite e o backup terminou às 12h15, a saída do mysqldump quando restaurada reflete os dados a partir das 12h15.

RolandoMySQLDBA
fonte
2

Depende do seu mecanismo de armazenamento para suas tabelas. Ele funciona apenas para tabelas ARCHIVE e MyISAM de acordo com esta página de manual do MySQL e deve ser executado na mesma máquina (ou seja, não usando soquete local ou TCP / IP)

MySQL também diz

Se você estiver fazendo um backup no servidor e todas as suas tabelas forem tabelas MyISAM, considere usar o mysqlhotcopy, pois ele pode realizar backups e restaurações mais rápidos.

Aiden Bell
fonte
1

Eu recomendo o uso de um dos muitos scripts de backup mySQL preexistentes para aliviar a dificuldade de fazê-lo corretamente.

Eu uso "automysqlbackup", que é um script de shell de código aberto que pode ser definido como um trabalho cron no servidor. Ele cobre quase todas as situações de backup possíveis: http://sourceforge.net/projects/automysqlbackup/ . Ele funcionou perfeitamente para mim por vários anos - completamente recomendado.

Mark Hatton
fonte
1

mysqlhotcopy é um script Perl por volta de '05. Por isso, adiciona dependências, para Perl e vários Perl. Eu passaria adiante.

O mysqldump é um programa em C sendo distribuído com o MySQL e mantido ativamente. Se você adicionar a opção -x, ela bloqueia as tabelas para que você fique dourado.

Pessoalmente, tenho esse script no cron (você vai querer remover esses `escapes se quiser executá-lo manualmente) e funciona como um encanto para mim, fazendo backup de cada um dos meus bancos de dados em um arquivo local, bem como um despejo completo de todos os bancos de dados.

E se você tiver mais de um banco de dados lá, também precisará despejar as concessões para eles. O Maatkit o ajudará lá, e você terá apenas mk-show-grants -uroot -pPASSWORD > mygrantsdatabase.sqlo backup de suas tabelas de doações e pronto para importar novamente.

intlect
fonte
0

Sei também que várias ferramentas de gerenciamento de servidor, como Interworx e Ensim, usam o mysqldump para fazer backup dos bancos de dados e, em seguida, um simples comando mysql para restaurar. A partir disso, acho que essa é uma das melhores maneiras.

Darryl Hein
fonte