desenv-web-rp.com

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

Eu tenho um blog WordPress sendo executado 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?

13
Matthew Shanley

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 o mysqldump despejar os cabeçalhos CREATE DATABASE IF NOT EXIST para que eu possa importá-lo para onde quiser.

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.

5
Mike

Eu consideraria o uso de um plugin do WordPress chamado "Backup do banco de dados do WordPress (WP-DB-Backup)", que também está listado em Wordpress Backup do banco de dados guia . 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 a você o maior 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.

5
citadelgrad

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 um script para mysqldump de maneiras diferentes ( Por favor, veja meu post no DBA StackExchange para a variedade de técnicas ), desde que você execute esses 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 opção --single-transaction 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.

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 em quando 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.

3
RolandoMySQLDBA

Depende do seu mecanismo de armazenamento para suas tabelas. 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)

O 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 mais rápidos e restaurações mais rápidas.

2
Aiden Bell

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.

1
Mark Hatton

mysqlhotcopy é um script Perl por volta de '05. Portanto, ele 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 para um arquivo local e 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. Maatkit irá ajudá-lo, e você apenas mk-show-grants -uroot -pPASSWORD > mygrantsdatabase.sql para fazer backup de suas tabelas de concessões e pronto para importar novamente.

1
intlect

Eu também sei 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.

0
Darryl Hein