MySQL: Mantenha o 'frontend', mova o banco de dados para outro computador

1

Temos esse banco de dados MySQL funcionando em um ambiente de produção e precisamos mover o banco de dados para outro servidor não utilizado com mais espaço. Nosso problema é que nós já temos realmente grandes quantidades de programas trabalhando com o endereço IP atual, e mudar tudo seria um pesadelo e muito lento, então pensamos em fazer da instância atual do MySQL um 'front-end' que requer e redireciona para um 'escravo' ou 'back-end' que realmente mantém o banco de dados verdadeiro.

Isso tudo vem também com a ideia de permitir algum tempo para migrar o software existente para o MySQL 'escravo' e migrar perfeitamente o banco de dados para o novo servidor.

Alguém tentou a mão deles?

    
por Reset Reboot 05.08.2010 / 12:39

5 respostas

5

O seu servidor atual é usado para qualquer outra coisa além do MySQL? se assim for, você pode sempre atribuir o endereço existente ao novo servidor.

Exceto isso, você também pode usar o NAT para encaminhar a porta do MySQL para o novo host. Por exemplo, no linux:

iptables -t NAT -A PREROUTING -d 10.0.0.1 -p tcp --dport 3306 -j DNAT --to-destination 10.0.0.2

Não se esqueça de ativar o encaminhamento e adicionar regras de firewall relevantes.

    
por 05.08.2010 / 13:24
0

Você pode dividir o datadir do resto do aplicativo mysql e mover o datadir para um volume em outro servidor. No entanto, você deve estar ciente de que não pode fazer isso com qualquer protocolo de rede, como o samba.

Supostamente você pode fazer isso usando o NFS, dependendo do tipo de servidor / SAN / NAS para o qual você o traz. Veja, por exemplo, MySQL 5.1.34 no NFS com NetApp .

Provavelmente, a melhor maneira de fazer isso seria usar o iSCSI. Você deve descobrir se essa opção está fornecendo IOPS suficiente para lidar com seu banco de dados.

    
por 05.08.2010 / 13:52
0

Dê uma olhada no MySQL Proxy, link text . Pode realizar o que você quer.

    
por 05.08.2010 / 17:56
0

Se você tivesse um replicante escravo, seria capaz de mover o IP dinamicamente, pois o MySQL não se liga à interface. Você terá dificuldades para encontrar uma solução sem impacto com um único servidor.

Você pode duplicar o esquema e elaborar um plano de migração, que inclui a fusão posterior do conjunto de dados.

    
por 06.08.2010 / 21:45
0

Havia um script de shell do Windows (.vbs) em stackoverflow que decompõe e recompõe um arquivo mysql em arquivos de texto e de volta. Desde o início, exporta formulários, módulos, macros e relatórios. Aqui está um link para isso aqui. É a primeira resposta escolhida. Agora, por algum motivo, o autor original escolheu não exportar Tabelas e Consultas ou Relacionamentos de Tabelas simplesmente porque eles são armazenados de maneira diferente pelo Access. Além disso, esse script exclui cada 'objeto' enquanto o exporta, portanto, uma dificuldade é que você não pode excluir uma tabela até que ela seja excluída. Um pouco de aborrecimento. Além disso, ele não forneceu suporte entre os arquivos .adp e .mdb. Você tem que fazer isso manualmente.

Tudo isso é possível, portanto, se você tiver tabelas vinculadas, poderá descobrir como exportá-las para o formato de texto. Em seguida, exporte os relacionamentos. Exclua os relacionamentos e, em seguida, exclua as tabelas. (Se você escreveu o ip em qualquer módulo ou consulta de passagem, você terá que fazê-lo também.) Peça ao script para excluí-los de tudo o que você escolheu para exportar do arquivo original. Depois disso, você essencialmente terá seu arquivo msaccess em um monte de arquivos de texto. A partir daí é apenas um simples caso de fazer um find / replace para cada arquivo (através de código) e então recompor o arquivo de cada elemento alterado.

É muito chato programar, mas com certeza ajuda muito a mudança da produção para os ambientes de desenvolvimento sem suar.

EDIT Parece que alguém fez algo parecido com o que eu fiz, mas provavelmente melhor que a minha versão: link EDITAR NOVAMENTE Hmmm, se funciona para você, então ótimo, mas esse programa não está funcionando para mim :( Além disso, é em C #: (

    
por 04.09.2012 / 20:16