Comment partitionner Mysql sur plusieurs serveurs?
-
05-07-2019 - |
Question
Je sais que le partitionnement horizontal ... vous pouvez créer de nombreux tableaux.
Comment pouvez-vous faire cela avec plusieurs serveurs? Cela permettra à Mysql d’évoluer.
Créer des tables X sur des serveurs X?
Quelqu'un souhaite-t-il expliquer ou dispose-t-il d'un bon tutoriel pour débutant (pas à pas) qui vous apprendra à partitionner plusieurs serveurs?
La solution
Avec MySQL, les utilisateurs effectuent généralement ce que l’on appelle une partition de base de données .
. .En résumé, vous aurez la même structure de base de données sur plusieurs serveurs de base de données. Mais il ne contiendra pas les mêmes données.
Ainsi, par exemple:
Users 1 - 10000: server A
Users 10001 - 20000: server B
La fragmentation (bien sûr) n’est pas une technique de sauvegarde, elle est destinée à distribuer des lectures et des écritures sur un cluster.
Les techniques utilisées pour partager sont le proxy MySQL, par exemple. Ce n'est rien de ce que HScale a inventé, c'est plus ou moins un simple script LUA qui distribue des lectures et des écritures sur différents serveurs principaux. Il devrait y avoir beaucoup d'exemples sur la forge MySQL.
Un autre outil (basé sur le proxy MySQL) est SpockProxy . Complètement adapté au sharding. Ils se sont également débarrassés de Lua, et ils ont travaillé sur différentes choses pour le rendre plus rapide que le proxy. Jusqu'à présent, je n'ai testé que SpockProxy, mais je ne l'ai jamais exécuté en production.
Maintenant, en dehors de ces mandataires, vous pouvez aussi vous séparer. Obligatoire serait une table principale, par exemple:
-------------------
| userA | server1 |
| userB | server2 |
| userC | server1 |
-------------------
Construisez ensuite vos lectures et écritures vers le serveur. Pas très joli mais ça marche. Le prochain obstacle serait de le rendre plus facile à supporter. Ainsi, par exemple, server1
, server2
et server3
doivent constituer chacun un petit cluster.
Faites-moi savoir si cela vous aide!
Autres conseils
Toutefois, vous devez garder à l’esprit que si, pour certaines raisons, vous souhaitez utiliser cette solution dans le cloud et la rendre multi-locataire, la configuration ci-dessus risque de devenir plus complexe. Pensez-y -
- vous vous êtes connecté au système et la base de données est sélectionnée (permutation de base de données) en fonction de la table d'organisation utilisateur
- Ce serait la nouvelle table principale à laquelle vous parlez maintenant avec ses propres esclaves
- Mais le point 2 ci-dessus nécessite également de la netteté maintenant, car vous voulez vous assurer que votre balance ne devienne pas un goulot d'étranglement.
Alors maintenant, la question est que vous aurez probablement besoin de penser à comment vous pouvez faire ce sharding dans un env. de type mster-esclave où les esclaves sont typiquement pour la lecture et les maîtres pour l'écriture.
acclamations! Gary
Voici ce qui est écrit à l'annonce de HSCALE 0.1:
Pour le moment, nous devons simplement nous séparer d'énormes tables mais plus tard, nous voulons distribuer des partitions sur plusieurs Les instances de serveur MySQL doivent avoir de vrais échelle horizontale sur. La partie la plus difficile traitera des transactions où nous devons utiliser distribué transactions (XA) ou interdire transactions impliquant des partitions sur différents hôtes ...
Découvrez ce projet: http://sourceforge.net/projects/hscale/ peut-être que cela vous conviendra.