1 votes

Comment faire une procuration vers des bases de données nommées différentes sur le même serveur en utilisant MySQL Proxy?

Je voudrais avoir deux bases de données sur mon serveur MySQL:

  • DEV_DB_A
  • DEV_DB_B

Cependant, afin de conserver les scripts de tout le monde, les paramètres du Query Browser et tout le reste sans changer lorsque nous passons d'une BD à une autre, je voudrais que tout le monde se connecte à DEV_DB, puis utilise quelque chose comme MySQL Proxy exécutant un script lua qui sait que la BD active actuellement est DEV_DB_A et routant les requêtes vers cette dernière. Si nous restaurons une version fraîche de la BD vers DEV_DB_B ou apportons des modifications (par exemple, partitionner une table), nous pouvons facilement passer à DEV_DB_B en modifiant un seul script Lua au lieu de mettre à jour toutes les références.

J'espérais pouvoir créer un lien symbolique à l'intérieur du répertoire de données mysql, mais cela n'a pas fonctionné, il semble donc que MySQL Proxy soit une approche raisonnable.

Étant nouveau dans Lua et MySQL Proxy, je me demande si d'autres ont abordé le problème de cette manière et comment cela a fonctionné.

2voto

cclark Points 557

Utiliser MySQL Proxy était vraiment une façon d'essayer de contourner l'absence de fonctionnalité RENAME DATABASE dans MySQL. Cette fonctionnalité existait à un moment donné mais a été supprimée car elle s'est avérée peu fiable.

À la fin, j'ai résolu le problème en émettant des instructions RENAME TABLE DEV_DB_A.table1 vers DEV_DB_B.table1 pour chaque table. Le seul problème que j'ai découvert était le RENAMEing des tables qui ont des déclencheurs échoue comme décrit sur le site de MySQL.

Pour simplifier les choses, j'ai écrit un petit script python pour faire le travail à ma place. Lorsque j'ai vu que c'était un problème pour d'autres, j'ai ajouté une vérification d'erreur de base et des options pour le rendre plus facile à utiliser et je l'ai posté pour les autres sur github.

0voto

Warner Points 23292

Il y a des avantages à abstraire la base de données avec quelque chose comme MySQL Proxy. Le principal étant la manipulation de requêtes sans altérer une application. Néanmoins, les solutions de haute disponibilité et de redondance sont souvent mieux abordées avec une autre technologie.

D'après votre description, il semble que vous vouliez être capable de déplacer dynamiquement l'équipement de la base de données sans changer l'application. Pour y parvenir, cela pourrait être aussi simple que de dédier une alias IP (VIP) à votre base de données. MySQL ne se lie pas à l'interface, ce qui permet à la relocation d'IP de se faire de manière transparente pour MySQL et donc pour votre application.

Si vous avez d'autres exigences, veuillez les décrire davantage et je peux probablement vous offrir d'autres alternatives.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X