É possível extrair os valores do último mês de um servidor MySQL e construir um novo banco de dados a partir desses valores?

8

Eu tenho uma tarefa para criar um modelo de máquina virtual de desenvolvimento.

Eu preciso adicionar ao servidor bancos de dados MySQL de cada um dos produtos da minha empresa, de modo que novos desenvolvedores tenham a capacidade de desenvolver para cada um dos produtos.

A maioria dos bancos de dados é menor que 1 GB.

Mas eu tenho alguns bancos de dados que são enormes (cerca de 160G) - mas estou limitado no tamanho do modelo que estou tentando criar, e não é razoável adicionar um DB de 160GB.

Portanto, estou tentando encontrar o método certo para extrair, digamos, os valores do mês passado desse enorme banco de dados e adicioná-los ao servidor para que o desenvolvedor possa "sentir" como é trabalhar com esse banco de dados.

É possível fazer uma coisa dessas e como é feito? Obrigado!

Editar:

Infelizmente, não há opção para um servidor de banco de dados principal separado que armazena todos os bancos de dados de desenvolvimento; também não há necessidade de atualizar os dados regularmente; basta apresentar os mesmos dados dos servidores de produção (em um período aleatório ) como um ambiente seguro para novos desenvolvedores.

    
por Itai Ganot 27.07.2014 / 10:08

3 respostas

8

Se eu entendi corretamente, você está planejando fazer uma cópia de banco de dados separada para cada ambiente de desenvolvimento.

Embora isso possa ser viável com bancos de dados pequenos, isso não funcionará tão bem com grandes bancos de dados. Portanto, a menos que você tenha uma boa razão para configurar um banco de dados separado para cada ambiente, talvez seja melhor considerar ter uma única cópia do banco de dados de desenvolvimento e definir todos os ambientes de desenvolvimento para usá-lo.

Essa abordagem permitirá que você atualize o banco de dados de desenvolvimento com os dados mais recentes periodicamente e, se alguém estragar tudo, basta atualizá-lo novamente.

Imagine também a situação em que seus desenvolvedores começam a trabalhar em algum novo projeto que requer que novas tabelas sejam criadas. Se você tiver uma única cópia do DB de desenvolvimento, você (ou desenvolvedores) precisará criar essas tabelas e preenchê-las com dados de teste apenas uma vez. Agora imagine que os desenvolvedores percebam que a estrutura inicial da tabela não é ideal e precisa ser alterada. Novamente, isso precisará ser feito em um único banco de dados, em oposição a possivelmente dezenas de ambientes.

Esta é a abordagem que eu vi sendo usada para grandes projetos uma e outra vez e na maioria das vezes funciona muito bem.

    
por 27.07.2014 / 11:01
4

Isso é extremamente dependente do tipo de dados no banco de dados. Em alguns casos, pode ser tão fácil quanto

select * from table where date > ....

enquanto em outros casos, é impossível separar isso por causa da estrutura dos dados. No final, provavelmente será uma mistura e muito difícil de acertar.

    
por 27.07.2014 / 11:04
0

Tivemos recentemente a situação em que um cliente queria extrair os últimos 30 dias de um banco de dados. Se TODAS as tabelas tiverem o mesmo atributo onde você pode definir o datetime, você pode fazer um

mysqldump --where = 'datetimefield > "2014-06-28" '

mas ele queria misturar tabelas diferentes com dados antigos e novos. Então isso não foi uma solução para ele, mas pode ser uma para você?

    
por 28.07.2014 / 16:37

Tags