Importação e Exportação de Bancos de Dados MySQL: Um Guia Completo
A gestão eficiente de bases de dados é a espinha dorsal de qualquer aplicação web fiável. Quer esteja a realizar cópias de segurança rotineiras, a migrar dados entre servidores ou a configurar um novo ambiente, saber como importar e exportar bases de dados MySQL é uma competência essencial para todos os programadores e administradores de sistemas.
Este guia abrangente leva-o através de cada método, comando e passo de resolução de problemas que precisa para gerir bases de dados MySQL com confiança — desde a linha de comandos até phpMyAdmin.
Por que as operações de importação e exportação de MySQL são importantes
As exportações e importações de bases de dados MySQL servem vários propósitos críticos:
- Cópia de segurança e recuperação de desastres — proteja os seus dados contra eliminação acidental ou falha do servidor
- Migração de servidor — mova bases de dados entre ambientes de alojamento sem perda de dados
- Desenvolvimento e teste — clone bases de dados de produção para fins de teste
- Controlo de versão — tire um instantâneo do estado da sua base de dados antes de atualizações importantes da aplicação
Para que estas operações funcionem sem problemas, a sua infraestrutura de alojamento é importante. Um ambiente de Alojamento VPS com armazenamento NVMe, acesso root completo e elevado débito de E/S garante que até mesmo grandes despejo de bases de dados sejam concluídos de forma rápida e fiável.
1. Pré-requisitos: O que precisa antes de começar
Antes de mergulhar em exportações ou importações, confirme que tem o seguinte em vigor:
- Acesso ao servidor MySQL com privilégios de utilizador suficientes (
SELECT,LOCK TABLES,SHOW VIEW,TRIGGERpara exportações;CREATE,INSERT,ALTERpara importações) - Cliente MySQL instalado na sua máquina local ou servidor
- Um terminal ou cliente SSH para operações de linha de comandos
- phpMyAdmin (opcional) se preferir uma interface gráfica
- Espaço em disco suficiente para o ficheiro de despejo
.sql, especialmente para bases de dados grandes
> Dica profissional: Se está a gerir múltiplas bases de dados em vários projetos, considere um VPS com cPanel para uma experiência de gestão de bases de dados simplificada e baseada em GUI.
2. Exportação de uma base de dados MySQL
Exportar uma base de dados MySQL gera um ficheiro .sql contendo o esquema completo da base de dados (estrutura) e dados. Este ficheiro pode ser utilizado posteriormente para restaurar ou migrar a sua base de dados.
Método 1: Utilizando a linha de comandos MySQL (mysqldump)
O utilitário mysqldump é a ferramenta mais fiável e amplamente utilizada para exportar bases de dados MySQL. Funciona diretamente a partir do terminal e suporta uma ampla gama de opções.
Passo 1: Abra o seu terminal
Ligue-se ao seu servidor via SSH ou abra uma sessão de terminal local.
Passo 2: Execute o comando mysqldump
mysqldump -u username -p database_name > export_file.sqlSubstitua os marcadores de posição da seguinte forma:
| Marcador de posição | Descrição |
|---|---|
username | O seu nome de utilizador MySQL (por exemplo, root ou um utilizador de BD dedicado) |
database_name | O nome da base de dados que deseja exportar |
export_file.sql | O nome e caminho desejados para o ficheiro de saída |
Passo 3: Introduza a sua palavra-passe MySQL
Será solicitada a introdução da sua palavra-passe. A exportação prosseguirá imediatamente após a autenticação.
Exemplo:
mysqldump -u root -p my_wordpress_db > /home/backups/wordpress_backup_2024.sqlSinalizadores mysqldump úteis:
# Export all databases
mysqldump -u root -p --all-databases > all_databases.sql
# Export only the database structure (no data)
mysqldump -u root -p --no-data database_name > structure_only.sql
# Compress the output on the fly
mysqldump -u root -p database_name | gzip > export_file.sql.gz
# Export specific tables only
mysqldump -u root -p database_name table1 table2 > partial_export.sqlMétodo 2: Exportação via phpMyAdmin
phpMyAdmin fornece uma interface gráfica amigável para exportações de bases de dados, ideal para quem prefere não utilizar a linha de comandos.
Passo 1: Inicie sessão no phpMyAdmin
Abra o seu navegador e navegue para a sua instalação phpMyAdmin (por exemplo, https://yourdomain.com/phpmyadmin).
Passo 2: Selecione a sua base de dados
Na barra lateral esquerda, clique na base de dados que deseja exportar.
Passo 3: Navegue para o separador Exportar
Clique no separador Exportar no menu de navegação superior.
Passo 4: Escolha o seu método de exportação
- Rápido — Exporta toda a base de dados com definições padrão. Adequado para a maioria dos casos de utilização.
- Personalizado — Permite-lhe selecionar tabelas específicas, formato de saída, compressão e opções adicionais.
Passo 5: Selecione o formato SQL
Certifique-se de que o formato está definido como SQL (o padrão). Também pode escolher CSV, XML ou outros formatos dependendo das suas necessidades.
Passo 6: Clique em Ir
phpMyAdmin irá gerar e descarregar o ficheiro .sql para a sua máquina local.
3. Importação de uma base de dados MySQL
Importar um ficheiro .sql restaura uma base de dados previamente exportada para um servidor MySQL. Este é o método padrão para migrações, restauros e implementações.
Método 1: Utilizando a linha de comandos MySQL
Passo 1: Certifique-se de que a base de dados de destino existe
Antes de importar, a base de dados de destino deve já existir. Se não existir, crie-a:
mysql -u root -p -e "CREATE DATABASE new_database_name;"Passo 2: Execute o comando de importação
mysql -u username -p database_name < import_file.sqlSubstitua os marcadores de posição:
| Marcador de posição | Descrição |
|---|---|
username | O seu nome de utilizador MySQL |
database_name | A base de dados de destino para importar |
import_file.sql | O caminho para o seu ficheiro .sql |
Exemplo:
mysql -u root -p my_wordpress_db < /home/backups/wordpress_backup_2024.sqlImportação de um ficheiro comprimido:
gunzip < export_file.sql.gz | mysql -u root -p database_namePasso 3: Verifique a importação
Após a conclusão do comando, inicie sessão no MySQL e verifique os dados:
mysql -u root -p
USE database_name;
SHOW TABLES;Método 2: Importação via phpMyAdmin
Passo 1: Inicie sessão no phpMyAdmin
Abra phpMyAdmin no seu navegador.
Passo 2: Selecione ou crie a base de dados de destino
- Se a base de dados já existe, clique nela na barra lateral esquerda.
- Se não, clique em Bases de dados no menu superior, introduza um novo nome de base de dados e clique em Criar.
Passo 3: Navegue para o separador Importar
Clique no separador Importar no menu de navegação superior.
Passo 4: Escolha o seu ficheiro
Clique em Escolher ficheiro e selecione o ficheiro .sql da sua máquina local.
Passo 5: Configure as definições de importação
- Conjunto de caracteres: Certifique-se de que corresponde à codificação da sua base de dados (normalmente
utf8mb4) - Importação parcial: Útil para retomar importações interrompidas
- Formato: Deve ser definido como SQL automaticamente
Passo 6: Clique em Ir
phpMyAdmin iniciará o processo de importação. Aguarde a mensagem de confirmação de sucesso verde antes de fechar o separador.
> Nota: phpMyAdmin tem um limite de tamanho de ficheiro de carregamento padrão (normalmente 2MB–128MB). Para bases de dados maiores, utilize o método de linha de comandos ou ajuste as definições de PHP conforme descrito na secção de resolução de problemas abaixo.
4. Técnicas avançadas de exportação e importação
Automatização de cópias de segurança MySQL com trabalhos Cron
Para ambientes de produção, as exportações manuais não são suficientes. Automatize as suas cópias de segurança de bases de dados utilizando um trabalho cron:
# Open the crontab editor
crontab -e
# Add this line to run a daily backup at 2:00 AM
0 2 * * * mysqldump -u root -pYourPassword database_name | gzip > /backups/db_$(date +%F).sql.gzIsto garante que tem sempre uma cópia de segurança recente sem intervenção manual.
Migração de bases de dados entre servidores
Para migrar uma base de dados diretamente de um servidor para outro sem criar um ficheiro intermédio:
mysqldump -u root -p database_name | ssh user@remote_server "mysql -u root -p remote_database"Isto canaliza a saída de despejo diretamente sobre SSH para a instância MySQL remota — eficiente e rápido num ambiente de Alojamento VPS de alta largura de banda.
Tratamento de bases de dados grandes
Para bases de dados que excedem vários gigabytes, considere estas otimizações:
# Use single-transaction for InnoDB tables (avoids table locks)
mysqldump --single-transaction -u root -p database_name > export.sql
# Disable foreign key checks during import for speed
mysql -u root -p database_name -e "SET foreign_key_checks = 0;"
mysql -u root -p database_name < import_file.sql
mysql -u root -p database_name -e "SET foreign_key_checks = 1;"5. Resolução de problemas comuns de importação/exportação MySQL
Erro 1049: Base de dados desconhecida
ERROR 1049 (42000): Unknown database 'database_name'Causa: A base de dados de destino não existe.
Solução: Crie a base de dados antes de importar:
mysql -u root -p -e "CREATE DATABASE database_name CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"Erro 2002: Não é possível ligar ao servidor MySQL
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'Causa: O serviço MySQL não está em execução ou o caminho do socket está incorreto.
Solução: Verifique e reinicie o serviço MySQL:
# Check MySQL status
sudo systemctl status mysql
# Start MySQL if it's stopped
sudo systemctl start mysql
# For MariaDB
sudo systemctl start mariadbErro 1044: Acesso negado
ERROR 1044 (42000): Access denied for user 'username'@'localhost' to database 'database_name'Causa: O utilizador MySQL não tem privilégios suficientes.
Solução: Conceda as permissões necessárias:
mysql -u root -p
GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'localhost';
FLUSH PRIVILEGES;Limite de tamanho de ficheiro phpMyAdmin excedido
Causa: O ficheiro .sql excede o limite de carregamento do phpMyAdmin.
Solução: Edite o seu ficheiro de configuração PHP (php.ini):
upload_max_filesize = 256M
post_max_size = 256M
max_execution_time = 600
memory_limit = 512MApós guardar, reinicie o seu servidor web:
sudo systemctl restart apache2
# or
sudo systemctl restart nginxAlternativamente, mude para o método de importação de linha de comandos, que não tem restrições de tamanho de ficheiro.
A importação para a meio (Tempo limite)
Causa: As importações grandes excedem os limites de tempo limite de PHP ou MySQL.
Solução: Utilize a linha de comandos para ficheiros grandes ou aumente o tempo limite do MySQL:
SET GLOBAL wait_timeout = 28800;
SET GLOBAL interactive_timeout = 28800;6. Melhores práticas de segurança para exportações e importações MySQL
Proteger os seus despejos de bases de dados é tão importante quanto criá-los. Siga estas melhores práticas:
- Encripte despejos sensíveis — Utilize GPG para encriptar ficheiros exportados antes de os armazenar ou transferir:
gpg --symmetric --cipher-algo AES256 export_file.sql- Restrinja as permissões de ficheiro — Certifique-se de que os ficheiros de despejo não são legíveis por todos:
chmod 600 export_file.sql- Utilize utilizadores MySQL dedicados — Evite utilizar
rootpara exportações rotineiras. Crie um utilizador de cópia de segurança com privilégios mínimos necessários. - Armazene cópias de segurança fora do servidor — Carregue despejos para uma localização remota ou armazenamento de objetos para proteger contra falhas ao nível do servidor.
- Proteja a sua ligação — Utilize sempre SSL/TLS para ligações MySQL remotas. Combine isto com um Certificado SSL válido para proteger dados em trânsito.
7. Escolha do ambiente de alojamento correto para operações MySQL
O desempenho das suas operações de importação e exportação MySQL depende muito da sua infraestrutura de alojamento. Eis como diferentes ambientes se comparam:
| Tipo de alojamento | Melhor para | Desempenho MySQL |
|---|---|---|
| Alojamento Web Partilhado | Sites pequenos, tráfego baixo | Limitado; recursos partilhados |
| Alojamento VPS |
em todos os serviços de alojamento