Importar uma base de dados grande por SSH

O phpMyAdmin resolve a maior parte das importações. Mas há um tamanho a partir do qual ele desiste: o ficheiro não passa no envio, ou passa e a importação pára a meio sem dizer nada. Não é avaria; são os limites de tempo e de tamanho que existem para proteger toda a gente.

Por SSH não há esse tecto. A importação corre directamente no servidor, sem navegador pelo meio, e um ficheiro de vários gigabytes entra sem drama.

Primeiro: a sua conta tem SSH?

Nem todos os planos têm shell ligada. Dá para saber em meio minuto:

1 Abra o cPanel e procure Terminal ou SSH Access. Se algum dos dois aparecer, tem. O Terminal é ainda melhor do que ter SSH em casa: corre no próprio navegador e não precisa de instalar nada.
2 Se não aparecer nenhum, tente ligar-se mesmo assim, a partir do seu computador, com ssh -p 2299 utilizador@servidor. A porta aqui é a 2299, e não a 22. Se for recusado, não insista: veja o ponto seguinte.
3 Peça-nos. Diga-nos para que é e ligamos, ou fazemos nós a importação. Se o que quer é só pôr a base lá dentro uma vez, pode ser mais rápido mandar-nos o ficheiro.
Repetir tentativas falhadas bloqueia-lhe o IP. O firewall do servidor conta as falhas de ligação, e ao fim de algumas tranca o endereço de onde vêm, o que lhe corta também o site e o e-mail. Se errar a palavra-passe duas vezes, pare e confirme os dados. Se já ficou trancado, veja como desbloquear o seu endereço de IP.

A importação, passo a passo

1 Crie a base e o utilizador no cPanel, e ligue-os com todos os privilégios. O ficheiro que vai importar NÃO cria a base: espera encontrá-la feita. Veja criar bases de dados e usar o phpMyAdmin.
2 Ponha o ficheiro no servidor. Por SFTP na porta 2299, pelo gestor de ficheiros do cPanel, ou, se o ficheiro estiver na internet, com wget a partir da linha de comandos, que é muito mais rápido do que passar pelo seu computador.
3 Se estiver comprimido, não o descomprima primeiro. Dá para ler e importar ao mesmo tempo, o que poupa espaço em disco e tempo: gunzip < copia.sql.gz | mysql -u utilizador -p nomedabase .
4 Se estiver em texto simples, a linha é mysql -u utilizador -p nomedabase < copia.sql . Ele pede a palavra-passe e começa.
5 Espere em silêncio. Uma importação bem sucedida não escreve nada no ecrã: simplesmente acaba e devolve-lhe a linha de comandos. Se aparecer texto, é erro, e o erro diz a linha do ficheiro onde parou.
Não escreva a palavra-passe na linha de comandos. Use -p sozinho e deixe-o pedir. Colada ao -p, a palavra-passe fica guardada no histórico da shell e aparece a quem listar os processos do servidor naquele instante.

Importações longas, e ligações que caem

Numa base grande, a importação pode demorar muito. Se a sua ligação à internet oscilar, a sessão de SSH morre e leva a importação atrás dela, a meio, deixando a base num estado incompleto que é pior do que vazia.

A cura habitual noutros servidores é o screen ou o tmux. Aqui não existem nenhum dos dois. O que existe é o nohup, que faz o mesmo para este caso: lança o trabalho de maneira a que ele sobreviva à queda da sessão.

Para A linha
Lançar e largar nohup bash -c "mysql -u utilizador -pSENHA base < copia.sql" > ~/import.log 2>&1 &
Ver como vai tail -f ~/import.log
Confirmar que acabou ps aux | grep mysql

Repare que neste caso a palavra-passe tem mesmo de ir na linha, porque não há ninguém para a escrever depois. Mude-a a seguir, ou apague o histórico da shell.

E no sentido contrário: exportar

A mesma mecânica ao contrário, e é a maneira mais fiável de tirar uma cópia de uma base grande: mysqldump -u utilizador -p nomedabase | gzip > copia.sql.gz . O ficheiro fica na pasta onde estava quando correu o comando, e depois traz-se por SFTP.

Importar escreve por cima. Se a base já tinha tabelas com os mesmos nomes, o ficheiro substitui-as, e o que lá estava desaparece sem aviso nem confirmação. Exporte o que já lá está ANTES de importar por cima, ou faça a cópia da conta inteira: restaurar com o JetBackup.

Se depois da importação o site não abrir, quase de certeza os dados de ligação no ficheiro de configuração apontam para a base antiga: veja onde cada aplicação guarda os dados de ligação.

Base demasiado grande, ou sem SSH na conta? Mande-nos o ficheiro que importamos nós.

Abrir um pedido de suporte

VEJA TAMBÉM

Planos de hospedagem e o que cada um inclui

Migração de hospedagem: trazemos o site por si

PRODUTO RECOMENDADO

Servidor VPS com acesso root

Recursos só seus, o sistema que escolher, reinstalação quando quiser. desde 720,00 MT/mês

Ver planos
  • 0 Utilizadores acharam útil
Esta resposta foi útil?