O que é mysqldump e como posso usá-lo?

Índice:

O que é mysqldump e como posso usá-lo?
O que é mysqldump e como posso usá-lo?
Anonim

Como um dos principais bancos de dados disponíveis gratuitamente, o MySQL é uma escolha popular para muitas aplicações web. Ao ser exposto à Internet, seu aplicativo fica exposto a ataques maliciosos. Se o seu servidor estiver comprometido, na melhor das hipóteses, você precisará reinstalar o aplicativo; na pior das hipóteses, você pode perder seus dados. Além disso, você pode se deparar com uma situação em que precisa migrar um banco de dados de um servidor para outro.

Para que serve o mysqldump?

A ferramenta mysqldump cobre tanto o comprometimento do servidor quanto as situações de migração. Sua função básica é pegar um banco de dados MySQL e despejá-lo como um arquivo de texto. Mas não qualquer arquivo de texto; o arquivo é um conjunto de instruções SQL. Essas instruções, quando executadas, reconstroem o banco de dados para o estado preciso em que estava quando o dump foi executado.

Use mysqldump para criar exportações de um banco de dados como backups, ou ao mover o banco de dados para um novo host. Em ambos os casos, o arquivo de texto será importado de volta para um servidor de banco de dados MySQL. Ele executará todas as instruções SQL no arquivo, que reconstrói o banco de dados ao seu estado original. Esta parte não usa o comando mysqldump, mas também não seria possível sem este utilitário.

Os documentos do MySQL listam outros métodos para fazer backups, mas estes têm desvantagens:

  • Hotcopy de um banco de dados do MySQL Enterprise é uma ótima maneira de obter esses backups - se você não se importar com o preço do Enterprise.
  • Copiar os diretórios de dados do banco de dados pode ser complicado ao se mover entre sistemas operacionais, pois os destinos serão diferentes.
  • Exportar para um arquivo de texto delimitado fornecerá o conteúdo, mas você terá que recriar a estrutura.
  • Você pode frequentemente fazer backup de bancos de dados de programas GUI como MySQL Workbench. Mas este é um processo manual; não é algo que você possa criar scripts ou incluir em um trabalho em lote.

Instale a ferramenta mysqldump

Para Windows, verifique nossas instruções para instalar o MySQL no Windows 7 (o processo de instalação é o mesmo para o Windows 10). No macOS, consulte nossas instruções para instalar o MySQL no macOS 10.7 (novamente, mais antigo, mas ainda aplicável). Usuários de sistemas Linux baseados em Ubuntu podem usar o seguinte comando para instalar o cliente MySQL e utilitários:

sudo apt install mysql-client

Extrair um dump do MySQL

Uma vez instalado, use mysqldump para obter um backup completo de um banco de dados.

mysqldump -h [nome ou IP do seu host do banco de dados] -u [nome do usuário do banco de dados] -p [nome do banco de dados] > db_backup.sql

Aqui está uma descrição dos sinalizadores usados neste comando:

  • - h: Este sinalizador é o host do banco de dados. Pode ser um nome de host completo (por exemplo, myhost.domain.com) ou um endereço IP. Deixe em branco se você executar o comando no mesmo host que o servidor MySQL.
  • - u: Seu nome de usuário.
  • - p: Se você protegeu adequadamente a instalação do MySQL, precisará de uma senha para se conectar. Este sinalizador sem argumento solicita uma senha quando você executa o comando. Às vezes é útil fornecer a senha diretamente como argumento para esse sinalizador, por exemplo, em um script de backup. Mas no prompt, você não deveria, porque se alguém obtivesse acesso ao seu computador, poderia obter essa senha no histórico de comandos.
  • > db_backup.sql: Esta parte diz ao mysqldump para direcionar sua saída para um arquivo. Normalmente, o comando envia tudo para o console, o que significa que você verá várias instruções SQL na tela. O símbolo > afunila a saída para o arquivo de texto nomeado. Se este arquivo não existir, ele será criado automaticamente.

Quando terminar, você terá um arquivo. SQL. Este é um arquivo de texto contendo instruções SQL. Você pode abri-lo em qualquer editor de texto para inspecionar o conteúdo. Aqui está uma exportação de um banco de dados WordPress que mostra como esses arquivos são reunidos.

Image
Image

O arquivo é dividido em seções. A primeira seção configura a tabela para comentários do WordPress. A segunda seção recria o conteúdo dessas tabelas (neste exemplo, os registros de comentários). Quando você reimporta o dump do MySQL, o comando funciona através do arquivo, executa as instruções e reconstrói o banco de dados do jeito que estava.

Importar um arquivo de despejo MySQL

Antes de importar o arquivo dump, você precisará de um banco de dados já criado e seu nome de usuário e senha válidos. Você também deve ter todas as permissões para o banco de dados. Você não precisa da permissão GRANT, mas é mais fácil conceder todas elas.

Saiba mais sobre permissões de banco de dados antes de alterar as funções de segurança em seu banco de dados.

Para reimportar seus dados, faça login no servidor MySQL com o comando mysql. Digite use [nome do banco de dados] no prompt e substitua o nome do banco de dados. Digite source [nome do arquivo] e substitua o nome do arquivo de despejo que você tirou anteriormente.

Quando você terminar, aparecerá uma lista de mensagens informando que as instruções SQL estão sendo executadas. Fique de olho nos erros, mas se você tiver as permissões certas, tudo bem.

Image
Image

Quando o processo estiver concluído, você terá uma duplicata do banco de dados original. Para verificar a semelhança entre os bancos de dados, execute outro dump e compare as duas saídas. Use um editor de texto ou uma ferramenta de comparação dedicada para comparar os dois arquivos.

Image
Image

Existem duas diferenças entre esses arquivos, representadas por linhas vermelhas na parte superior e inferior da barra de rolagem direita. A primeira é a linha que contém o nome do banco de dados, e isso é diferente porque os arquivos foram nomeados de forma diferente. O segundo é o carimbo de data/hora do arquivo de despejo. Isso é diferente porque o segundo banco de dados foi recriado após o primeiro. Caso contrário, os arquivos são exatamente os mesmos, o que significa que os bancos de dados que os geraram também são.

FAQ

    Como você corrige o erro mysqldump: Acesso negado ao usar tabelas de bloqueio?

    Peça ao administrador do banco de dados para lhe conceder o privilégio LOCK. Se isso não resolver o problema, tente executar o mesmo comando mysqldump adicionando o sinalizador - -single-transaction, como [ $ mysqldump --single-transaction] [-u user] [-p DBNAME] > backup.sql

    Você pode usar uma cláusula "where" com mysqldump?

    Use uma cláusula WHERE ao criar um backup que inclua apenas as linhas que atendem à condição especificada. Por exemplo, para despejar dados apenas de linhas com a coluna id maior que 100, digite "mysqldump my_db_name my_table_name --where="id > 100" > my_backup.sql".

Recomendado: