Como carregar um arquivo SQL grande no mysql

2

Eu tenho um backup de banco de dados de um banco de dados MySQL que é de cerca de 250MB. Eu fiz isso com mysqldump

Eu estava tentando carregá-lo em outro servidor da seguinte forma:

mysql -u xxxx -pxxxx data_mirror < dbdump.sql

Eu não estava satisfeito com este processo porque

  1. Ele não me deu nenhum feedback sobre o progresso (demorado)
  2. Falhou com a mensagem "Servidor foi embora"

Qual método você recomendaria para fazer backup e restaurar um grande banco de dados MySQL?

Estou fazendo isso em servidores baseados no Windows 7.

    
por Goro 19.04.2012 / 22:03

4 respostas

3

A razão pela qual você tem um "servidor foi embora" é porque sua sessão de terminal expirou. Use nohup para evitar que o processo seja interrompido, assim:

nohup mysql -u xxxx -pxxxx data_mirror < dbdump.sql &

Nota: oe comercial significa que o processo é executado em segundo plano. Para acompanhar o estado do processo em execução, simplesmente siga o arquivo nohup.out criado:

tail -f nohup.out

    
por 19.04.2012 / 22:19
2

use LOAD DATA INFILE é o complemento de SELECT ... INTO OUTFILE. isso deve ser muito mais rápido, pois não há processamento de sql envolvido.

    
por 19.04.2012 / 22:14
2

Usando o Percona Xtrabackup por um bom tempo em diferentes falhas do Linux. Infelizmente, é em alfa para o Windows.

    
por 19.04.2012 / 23:32
1

Grande backup? Eu restaurei dados de mais de 10 GB de dumps SQL compactados ...

Não há como ter um indicador de progresso, pela natureza muito (não linear) do dump SQL. E quase não há correlação entre o tamanho do dump e a utilização real do disco pelo servidor MySQL.

O 'servidor foi embora' parece indicar que algo está perdendo a conexão entre seu cliente e servidor mysql. O servidor MySQL travou (ou ficou com lentidão invencível), ou checou sua rede se o seu servidor é remoto (alguns firewalls são dolorosos com conexões TCP de longa duração).

Observe que o uso de dumps SQL compactados é mais rápido, já que requer menos E / S para ler o despejo real. Por exemplo:

mysqldump the_db | gzip > the_db.sql.gz  # backup
zcat the_db.sql.gz | mysql the_db        # restore
    
por 20.04.2012 / 16:48