Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Tutorial de como fazer backup e restaurar (exportar e importar) bancos de dados MySQL

O phpMyAdmin pode ser usado para exportar ou fazer backup de bancos de dados MySQL ou MariaDB facilmente. No entanto, se o tamanho do banco de dados for muito grande, provavelmente não será uma boa ideia. O phpMyAdmin permite que os usuários salvem o dump do banco de dados como arquivo ou exiba na tela, o que envolve a exportação de instruções SQL do servidor e a transmissão dos dados através de uma conexão de rede mais lenta ou da Internet para o computador do usuário. Esse processo retarda o processo de exportação, aumenta o tempo de bloqueio do banco de dados e, portanto, a indisponibilidade do MySQL ou MariaDB, diminui a velocidade do servidor e pode simplesmente travar o servidor Apache HTTPD se muitas conexões da Web de entrada sobrecarregarem os recursos do sistema.

A melhor maneira de fazer backup e exportar o banco de dados MySQL ou MariaDB é fazendo a tarefa localmente no servidor, para que os dados das tabelas possam ser despejados instantaneamente no disco local sem demora. Assim, a velocidade de exportação será mais rápida e reduzirá o tempo de bloqueio do banco de dados ou tabela MySQL ou MariaDB para acesso. Este tutorial é o guia sobre como fazer backup (exportar) e restaurar (importar) banco de dados MySQL ou MariaDB no próprio servidor de banco de dados usando o mysqldump e mysql Serviços de utilidade pública. Existem basicamente dois métodos para fazer backup do MySQL ou MariaDB , um é copiando todos os arquivos de tabela (arquivos *.frm, *.MYD e *.MYI) ou usando mysqlhotcopy utilitário, mas só funciona para tabelas MyISAM. O tutorial abaixo se concentrará no mysqldump, que funciona para as tabelas MyISAM e InnoDB.

Como exportar, fazer backup ou despejar um banco de dados MySQL ou MariaDB

Para exportar um banco de dados MySQL ou MariaDB para um arquivo dump, basta digitar a seguinte sintaxe de comando no shell. Você pode usar Telnet ou SSH para fazer login remotamente na máquina se não tiver acesso à caixa física.
mysqldump -u username -ppassword database_name > dump.sql

Substituir nome de usuário com um ID de usuário MySQL ou MariaDB válido, senha com a senha válida para o usuário (IMPORTANTE:sem espaço após -p e a senha, senão o mysqldump solicitará a senha, mas tratará a senha como nome do banco de dados, então o backup falhará) e database_name com o nome real do banco de dados que você deseja exportar. Finalmente, você pode colocar o nome que quiser para o arquivo de despejo SQL de saída, aqui foi dump.sql .

Todos os dados, tabelas, estruturas e banco de dados de database_name será feito backup em um arquivo de texto SQL chamado dump.sql com o comando acima.

Como exportar apenas estruturas de banco de dados MySQL ou MariaDB

Se você não precisar mais dos dados dentro das tabelas do banco de dados (improvável), basta adicionar –no-data alterne para exportar apenas as estruturas das tabelas. Por exemplo, a sintaxe é:
mysqldump -u username -ppassword --no-data database_name > dump.sql

Como fazer backup apenas de dados de um banco de dados MySQL ou MariaDB

Se você deseja apenas fazer backup dos dados, use –no-create-info opção. Com essa configuração, o dump não recriará o banco de dados, tabelas, campos e outras estruturas durante a importação. Use isso apenas se tiver certeza de que possui bancos de dados duplicados com a mesma estrutura, onde você só precisa atualizar os dados.
mysqldump -u username -ppassword --no-create-info database_name > dump.sql

Como despejar vários bancos de dados MySQL ou MariaDB em um arquivo de texto

–bancos de dados A opção permite que você especifique mais de 1 banco de dados. Sintaxe de exemplo:
mysqldump -u username -ppassword --databases db_name1 [db_name2 ...] > dump.sql

Como despejar todos os bancos de dados no servidor MySQL ou MariaDB

Para despejar todos os bancos de dados, use –all-databases opção, e nenhum nome de banco de dados precisa mais ser especificado.
mysqldump -u username -ppassword --all-databases > dump.sql

Como fazer backup online de tabelas InnoDB

Fazer backup do banco de dados inevitavelmente faz com que o servidor MySQL ou MariaDB fique indisponível para as aplicações, pois ao exportar, todas as tabelas adquiriram um bloqueio de leitura global usando FLUSH TABLES WITH READ LOCK no início do dump até o final. Portanto, embora as instruções READ possam prosseguir, todas as instruções INSERT, UPDATE e DELETE terão que enfileirar devido a tabelas bloqueadas, como se o MySQL ou o MariaDB estivessem inativos ou travados. Se você estiver usando o InnoDB, –transação única é a maneira de minimizar essa duração do tempo de bloqueio para quase inexistente, como se estivesse realizando um backup online. Ele funciona lendo as coordenadas do log binário assim que o bloqueio é adquirido e o bloqueio é liberado imediatamente.

Sintaxe:
mysqldump -u username -ppassword  --all-databases --single-transaction > dump.sql

Como restaurar e importar banco de dados MySQL ou MariaDB

Você pode restaurar a partir do phpMyAdmin, usando a guia Importar. Para uma maneira mais rápida, carregue o arquivo de despejo para o servidor MySQL ou MariaDB e use o seguinte comando para importar os bancos de dados de volta para o servidor MySQL ou MariaDB.
mysql -u username -ppassword database_name < dump.sql
Se você deseja se conectar a servidores MySQL ou MariaDB remotamente em outro servidor, acrescente -h nome-do-servidor-ou-endereço-IP ao comando.
A importação e exportação do banco de dados MySQL ou MariaDB não só é importante para recuperar os dados quando ocorre um desastre, mas também fornece uma maneira fácil de migrar ou mover para outro servidor, como ao trocar de provedor de hospedagem na web. No entanto, observe que um problema comum – codificação do conjunto de caracteres. A versão mais recente do mysqldump usa UTF8 como seu conjunto de caracteres padrão se nada for especificado, enquanto as versões mais antigas (mais antigas que 4.1 normalmente) usam Latin1 como conjunto de caracteres padrão. Se o conjunto de caracteres do banco de dados for Latin1 e despejar no agrupamento UTF8, os dados podem acabar se tornando simplesmente lixo, ilegíveis ou ilegíveis (frequentemente acontece com o blog WordPress). Nesse caso, use –default-character-set=charset_name opção para especificar o conjunto de caracteres ou converter o banco de dados para UTF8.