Como fazer proxy para diferentes bancos de dados nomeados no mesmo servidor usando o MySQL Proxy?

1

Eu gostaria de ter dois bancos de dados no meu servidor MySQL:

  • DEV_DB_A
  • DEV_DB_B

No entanto, para manter os scripts de todos, as configurações do Query Browser e qualquer outra coisa de mudar quando trocamos de DB para outro, eu gostaria que todos se conectassem ao DEV_DB e usassem algo como o MySQL Proxy executando um script lua que conhece o banco de dados atualmente ativo é DEV_DB_A e encaminha as consultas para lá. Se restaurarmos uma nova versão do banco de dados para DEV_DB_B ou fizermos algumas alterações (por exemplo, particionar uma tabela), poderemos alternar facilmente para DEV_DB_B alterando um script Lua em vez de atualizar as referências em todos os lugares.

Eu esperava poder fazer symlink dentro do diretório de dados mysql, mas isso não funcionou, então parece que o MySQL Proxy é uma abordagem razoável.

Sendo novo no Lua e no MySQL Proxy, pergunto-me se alguém mais abordou o problema desta forma e como funcionou.

    
por cclark 26.03.2010 / 07:37

2 respostas

1

Usar o MySQL Proxy foi realmente uma maneira de contornar a falta da funcionalidade RENAME DATABASE no MySQL. Essa funcionalidade existia em determinado momento, mas foi removida quando se mostrou não confiável .

No final, resolvi que o problema poderia ser resolvido emitindo as instruções RENAME TABLE DEV_DB_A.table1 para DEV_DB_B.table1 para cada tabela. O único problema que descobri foi que as tabelas de RENOMEAÇÃO que têm gatilhos falha como descrito no site do MySQL .

Para facilitar, escrevi um pequeno script python para fazer o trabalho por mim. Quando eu vi isso era um problema para os outros Eu adicionei algumas verificações básicas de erros e opções para facilitar o uso e postar para outros usuários no github .

    
por 18.04.2010 / 11:45
0

Existem vantagens em abstrair o banco de dados com algo como o MySQL Proxy. O principal deles é a manipulação de consultas sem alterar um aplicativo. No entanto, soluções de alta disponibilidade e redundância são geralmente melhor abordadas com outras tecnologias.

Com base em sua descrição, parece que você deseja mover os equipamentos de banco de dados dinamicamente sem alterações nos aplicativos. Para conseguir isso, pode ser tão simples quanto dedicar um alias de IP (VIP) ao seu banco de dados. O MySQL não se liga à interface, o que permite que a realocação de IP seja feita de forma transparente para o MySQL e, portanto, para seu aplicativo.

Se você tiver requisitos adicionais, descreva mais e provavelmente posso oferecer outras alternativas.

    
por 26.03.2010 / 16:20

Tags