Backup e restauração do banco de dados MySQL sem acesso ao sistema

1

Eu estou tentando mover um banco de dados de um provedor para outro, o problema é que eu não tenho acesso ao sistema em nenhuma das extremidades (isto é, nenhum ssh), então não posso usar um mysqldump.

Eu já tentei usar o MySQL Administrator, o backup demorou cerca de 45 minutos, mas quando se trata de restaurá-lo, ele está se movendo em um ritmo de caracóis e estimando mais de 12 horas. Este é um aplicativo ao vivo, portanto, preciso manter o tempo de inatividade no mínimo.

O banco de dados consiste em 35 tabelas, uma mistura de MyISAM e InnoDB, a coisa toda chega a cerca de 4,4 GB. Os bancos de dados de origem e destino estão sendo executados em servidores muito poderosos.

Qualquer sugestão sobre uma maneira rápida de fazer isso será recebida com gratidão.

Obrigado

    
por Sencerd 27.04.2010 / 19:56

3 respostas

1

Alguns truques antigos para o carregamento de dados em massa (que funciona para praticamente qualquer banco de dados baseado em SQL com recursos avançados, como transações, UDFs e disparadores):

  1. Se o seu mecanismo de carregamento permitir, role suas tabelas InnoDB em transações gigantescas de 1000 registros. Registrar um registro por vez cria uma grande sobrecarga transacional, mas a publicação de 1.000 registros por vez torna a sobrecarga insignificante.
  2. Se você tiver suporte ao acionador, desative os acionadores durante o processo de carregamento.
  3. Desative as restrições antes de carregá-las e aplique-as após o carregamento. Isso inclui índices, remova-os e reconstrua os índices após o carregamento dos dados. A sobrecarga de manter os índices durante uma carga de dados em massa diminuirá consideravelmente as coisas.

Versões mais recentes do MySQL permitem a replicação; você pode sempre replicar os dados em outra máquina e, quando a replicação for concluída, alternar seu aplicativo para apontar para a nova máquina e desativar a replicação.

    
por 27.04.2010 / 20:04
0

Se puder, coloque o conteúdo da tabela em CSV ou delimitado por tabulações e use o ' LOAD DATA '- normalmente é muito mais rápido para dados de carregamento em massa do que inserções individuais.

    
por 27.04.2010 / 20:29
0

Você é capaz de executar uma consulta no seu banco de dados original a partir do novo? Se assim for, crie um script (pode até ser executado em PHP como uma página web sem saída) para sugar os dados do servidor original e empurrá-los para o novo, eliminando o sistema intermediário.

    
por 28.04.2010 / 00:07