13 votes

Cluster MySQL pour les débutants

Alors, quelle est l'idée derrière un cluster?

  1. Vous avez plusieurs machines avec la même copie de la DB où vous répartissez la lecture/écriture? Est-ce correct?

  2. Comment cette idée fonctionne-t-elle? Lorsque je fais une requête SELECT, le cluster analyse quel serveur a moins de lectures/écritures et redirige ma requête vers ce serveur?

  3. Quand devez-vous commencer à utiliser un cluster, je sais que c'est une question délicate, mais peut-être que quelqu'un peut me donner un exemple comme, 1 million de visites et une base de données de 100 millions de lignes.

11voto

RandomSeed Points 14960

1) Correct. Every data node does not hold a full copy of the cluster data, but every single bit of data is stored on at least two nodes.

2) Essentially correct. MySQL Cluster supports distributed transactions.

3) When vertical scaling is not possible anymore, and replication becomes impractical :)


As promised, some recommended readings:

2voto

user2656474 Points 81

1->Votre premier point est correct d'une certaine manière. Mais je pense que si plusieurs machines partagent les mêmes données, il s'agirait de réplication au lieu de clustering. Dans le clustering, les données sont réparties entre les différentes machines et il y a une partition horizontale signifiant que la division des données est basée sur les lignes, les enregistrements sont divisés en utilisant un algorithme parmi ces machines.

La division des données est faite de telle manière que chaque enregistrement obtiendra une clé unique, tout comme dans le cas d'une paire clé-valeur, et chaque machine a également un identifiant de machine unique qui est utilisé pour définir quelle paire clé-valeur irait à quelle machine.

Nous appelons chaque machine un cluster et chaque cluster se compose d'un serveur mysql individuel, de données individuelles et d'un gestionnaire de cluster. De plus, il y a un partage de données entre tous les noeuds du cluster pour que toutes les données soient disponibles pour chaque noeud à tout moment.

La récupération des données se fait à travers des dispositifs/serveurs memcached pour une récupération rapide et il y a aussi un serveur de réplication pour un cluster particulier pour sauvegarder les données.

2->Oui, il y a une possibilité car il y a un partage de toutes les données entre tous les nœuds du cluster. Vous pouvez également utiliser un équilibreur de charge pour équilibrer la charge. Mais l'idée d'équilibreur de charge est assez courante car elle est utilisée par la plupart des serveurs. Mais si vous essayez juste pour votre connaissance, alors il n'y a pas besoin car vous ne verrez pas le type de charge qui crée le besoin d'un équilibreur de charge, le gestionnaire de cluster lui-même peut faire l'ensemble du processus.

3->RandomSeed a raison. Vous ressentez le besoin d'un cluster lorsque votre réplication devient impraticable, c'est-à-dire si vous utilisez le serveur maître pour les écritures et l'esclave pour les lectures, puis à un moment donné lorsque le trafic devient énorme au point que le serveur ne pourra pas fonctionner en douceur, alors vous ressentirez le besoin de clustering, simplement pour accélérer tout le processus. Ce n'est pas le seul cas, ce n'est qu'un des scénarios, c'est juste un cas.

J'espère que cela vous sera utile!!

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X