Je gère un site qui connaît une forte augmentation du trafic et, à cause de cela, les solutions de mise à l'échelle automatique sont très rentables dans ce cas. Actuellement, le serveur Web peut évoluer automatiquement horizontalement, mais le goulot d'étranglement se trouve sur le serveur MySQL.
- J'ai essayé avec Amazon RDS Multi-AZ mais il faut environ 15 minutes pour que la base de données de 12 Go se mette à niveau avec quelques minutes d'arrêt. Cela m'a beaucoup aidé quand je savais déjà qu'une augmentation du trafic allait se produire à un moment précis.
- J'ai également considéré Xeround. C'est probablement la meilleure solution bien qu'elle soit assez chère pour des bases de données de cette taille. Quoi qu'il en soit, ce n'est pas une option car j'ai légalement besoin que la base de données se trouve dans l'Union européenne.
- J'ai lu sur Scalr mais je ne sais pas si cela pourrait être utile et comment.
- J'ai vu que de nombreux fournisseurs d'hébergement cloud proposent des solutions de mise à l'échelle verticale qui, je pense, n'ont aucun temps d'arrêt (je ne sais pas si c'est vraiment possible, pour autant que je sache, ils utilisent l'hyperviseur Xen). Cela pourrait être une solution, mais je me demande s'il n'y a pas de temps d'arrêt et comment la configuration MySQL (et bien d'autres choses sur le système d'exploitation) peuvent également être mises à niveau sans temps d'arrêt.
- J'ai essayé avec des serveurs esclaves MySQL mais ce n'était pas du tout utile.
- J'utilise memcache qui aide beaucoup mais ce n'est pas suffisant. J'ai besoin de mettre à niveau à cause des écritures, pas seulement à cause des lectures.
Aucune suggestion? Merci d'avance
mysql
scalability
amazon-rds
scalr
Zillo
la source
la source
Réponses:
En fait, une solution plus simple serait d'essayer d'ajouter Memcached à votre pile pour économiser sur la charge de la base de données. Cela peut considérablement économiser de la charge et est beaucoup plus simple que d'essayer de résoudre rapidement le problème de la mise en service des serveurs (faible difficulté), puis de prévoir une synchronisation MySQL rapide (difficulté beaucoup plus élevée).http://toblender.com/?s=memcachedPour résoudre le problème d'un trop grand nombre d'écritures, la solution la plus courante consiste à ajouter de la mémoire au serveur (un ensemble de travail plus important peut être conservé dans la RAM), à placer votre base de données sur des disques plus rapides (les SSD sont une bonne solution, mais coûteuse), ou à partager (ce qui coûte cher en serveurs supplémentaires et en complexité).
Une autre façon de réduire la charge d'écriture de la base de données consiste à incorporer un magasin de données en mémoire (tel que Redis) pour gérer les données qui changent fréquemment et, si nécessaire, réécrire périodiquement les modifications dans votre base de données principale.
la source
Vous devriez envisager d'utiliser une topologie en étoile
Voici ce que je propose
Préparez la topologie comme ceci
Étape 01: Configurer 5 RSS avec ces options courantes
Cela entraînera la création de toutes les tables chargées en tant que moteur de stockage MyISAM
Étape 02: configuration de DM et de tous les serveurs RS
tblname ROW_FORMAT=Fixed;
sur toutes les tables en RSStblname ENGINE=BLACKHOLE;
sur toutes les tables dans DMÉtape 03: configuration de la réplication de DM vers les 5 flux RSS
Étape 04: configuration de la réplication de WM vers DM
FIN DE LA CONFIGURATION
Voici comment fonctionne votre mécanisme de lecture / écriture
Maintenant, voici le hic ...
service mysql stop
au 5ème RSSservice mysql stop
au 5ème RSSservice mysql stop
au nouveau RSSVous pouvez utiliser RSS # 5 pour faire tourner de nouveaux serveurs encore et encore
Sur un sidenote, veuillez ne pas utiliser XEROUND pour WM ou DM car ils ne prennent pas en charge le moteur de stockage InnoDB ou BLACKHOLE.
J'espère que ces idées vous aideront.
la source
Si vous utilisez Innodb, vous devriez considérer les multi-maîtres Mysql gérés par Galera . Cela rend la configuration de mysql multi-master plus facile, et devrait vous faciliter la mise à l'échelle automatique "semi".
S'il s'agit d'une application que vous ou votre entreprise écrivez, vous pouvez envisager de passer à une conception fragmentée (partitionnée) pour l'application. Mais le sharding peut devenir compliqué. Voici un lien pour commencer.
Je suppose que vous avez "réglé" les fichiers de configuration mysql, comme dans la mémoire appropriée allouée, etc.
la source
Est-ce dans un rack que vous contrôlez ou dans le cloud? 12 Go est une très petite base de données par rapport à la taille des disques disponibles. Placez-le sur une matrice RAID1 ou RAID10 de petits SSD SLC et votre latence d'écriture disparaîtra.
Le SSD SLC Intel 311 de 20 Go (120 $ chacun) ferait le travail avec brio.
Si la base de données était plus grande, vous pourriez obtenir des résultats tout aussi spectaculaires en déplaçant votre base de données vers une cible iSCSI sur un serveur SAN ZFS (construit sur du matériel de serveur standard utilisant Nexenta, OpenIndiana, FreeNAS ou autre) et en configurant un miroir de SSD similaires pour votre cache d'écriture ZIL. Dans toutes les circonstances, sauf les plus extraordinaires, Gigabit Ethernet est plus que suffisant pour déplacer le trafic iSCSI de la base de données.
la source