web-dev-qa-db-fra.com

Mise à l'échelle Percona Datacenter: Configuration et réplication

Étant donné que notre startup a été bien décollé, nous nous rencontrons maintenant avec certaines de ces problèmes que vous avez toujours supposés que vous ne vous apporteriez jamais.

Nous avons déjà échoué de notre pile d'applications: nous avons déchargé nos tables de lecture/écriture élevées pour des informations temporaires à un serveur PerCona distinct où les tables sont en cours d'exécution avec "moteur = mémoire", ainsi que d'autres sections migrées vers A cassandra Cluster.

Maintenant, nous sommes laissés avec une base de données "maigre" où nous avons une charge de lecture/écriture de 88%/12%. À ce stade, j'ai quelques questions que j'aimerais obtenir des commentaires sur:

1. Lire les esclaves

Avec notre configuration de lecture/écriture, un certain nombre d'esclaves de lecture (par exemple 2-3) devraient réduire au minimum la charge de lecture sur notre maître d'écriture. Quelle évolutive est une solution de lecture-esclave: si nous double/traphant, notre charge ajoute des esclaves de lecture supplémentaires pour continuer à offrir suffisamment de capacité de lecture? Je lisa ce post: Quelles sont les limites de la quantité d'esclaves par maître? Cependant, ne sortez pas d'un antécédents de scalyse, cela peut sembler stupide, mais est-ce une solution convertible? Il y a beaucoup de gens qui poussent des frissons plutôt qu'une solution lu-esclave, mais je ne vois vraiment pas besoin de besoin en ce moment avec notre chargement de lecture/écriture pour réécrire de grandes sections de notre application ... toutes les pensées?

2. Plusieurs centres de données et réplication

En outre, nous envisageons de servir différents emplacements géographiques avec des centres de données proches de réduire le décalage réseau (nous traitons des applications mobiles qui n'aiment pas vraiment le retard). Le plan serait d'utiliser la Semisync beaucoup mentionnée. Réplication (voir: - est-il une bonne idée de diviser MySQL DB en deux serveurs et la réplication MySQL est-elle affectée par une interconnexion à haute latté? ) pour une réplication maître-maître, Lorsque chaque datacenter a un seul maître et plusieurs esclaves de lecture. Encore une fois, dans ma naïveté, je suis très intéressé à savoir si cela serait dans les limites des "meilleures pratiques" lors de la mise à l'échelle.

3. Matériel et configuration

J'ai été occupé ces dernières semaines comparant notre système en direct et je suis arrivé à la conclusion que, quelle que soit la solution que nous avons choisie pour les points 1 et 2, le serveur que nous utilisons actuellement ne le rendra pas très longtemps, pourrait Je reçois des pensées sur notre configuration:

CPU: Intel(R) Xeon(R) CPU E31275 @ 3.40GHz mit 8 cores (hyperthreading)
RAM: 16GB
Raid 10 with a strip size of 64 KB and controller cache enabled
Software: Percona 5.5
Database size: 83.7GB
Top 5 Tables:
 21302MB  table1
 7656MB  table2
 5477MB  table3
 4352MB  table4
 3663MB  table5

my.cnf Paramètres:

 max_heap_table_size=64M
 tmp_table_size=64M
 default_storage_engine = InnoDB
 innodb_buffer_pool_size = 10G
 innodb_file_per_table   = 1
 innodb_old_blocks_time=1000
 innodb_buffer_pool_instances=10
 innodb_log_file_size=256M
 innodb_flush_method=O_DIRECT
 innodb_read_io_threads=10
 innodb_write_io_threads=10
 join_buffer_size = 67108864 #64M
 expand_fast_index_creation=ON

Se déplacera vers une solution de cluster de Percona Xtradb résolve certaines de nos problèmes, par ex. Stabilité de la réplication?

Je sais que ce sont beaucoup de questions très théoriques et j'apprécie toute personne qui prend le temps de lire et de commenter mes pensées. En tant que petite start-up en Europe, nous n'avons vraiment pas la capitale de risque de "aller au nuage", et nous préférons avoir plus de contrôle nous-mêmes. Pendant que nous examinons des consultants, etc. Je pensais que Stackexchange était le bon endroit pour rebondir des idées.

6
tnosaj

Dans ce cas, vous avez réellement deux choix

Choix n ° 1: PARCONA XTRADB CLUSTER

Je l'évalue actuellement et je pense qu'il est brillamment conçu pour les écrivies multimaster. Il peut utiliser MySqldump (par défaut), RSYNC et Xtrabackup (préféré) pour initialiser le nouveau nœud de cluster. Vous avez la liberté totale et le pouvoir. Cela peut être le plus grand cliché de tous les temps mais avec une grande puissance, leur doit aussi toujours être une grande responsabilité (19:16 - 19:25 de la vidéo) .

Vous deviendrez finalement responsable de

  • exigences de la mémoire de dimensionnement et configuration de disque pour Innodb
  • rappelez-vous que DDL/DML sur Myisam n'est pas répliqué dans les bibliothèques de réplicator Galera Write Set Set. Étant donné que les commandes de subvention sont neutres du moteur de stockage, la table Myisam dans le schéma MySQL est traitée sans problème. Tout DML contre mysql.user n'est pas répliqué.
  • ajout de nouveaux nœuds de cluster à provisioning pour des lectures/écritures

Choix n ° 2: Amazon RDS

Amazon RDS fabrique des services de cloud de base de données MySQL. Vous devez passer du temps à déployer des serveurs avec l'un des 7 modèles de serveurs. Par défaut, tous les fichiers journaux Innodb sont de 128 m. Voici les seules options propres à chaque modèle de serveur:

MODEL      max_connections innodb_buffer_pool_size
---------  --------------- -----------------------
t1.micro   34                326107136 (  311M)
m1-small   125              1179648000 ( 1125M,  1.097G)
m1-large   623              5882511360 ( 5610M,  5.479G)
m1-xlarge  1263            11922309120 (11370M, 11.103G)
m2-xlarge  1441            13605273600 (12975M, 12.671G)
m2-2xlarge 2900            27367833600 (26100M, 25.488G)
m2-4xlarge 5816            54892953600 (52350M, 51.123G)

Vous n'êtes pas donné (( Super Privilege et il n'y a pas d'accès direct à my.cnf. À la lumière de cela, afin de modifier mes options MyCNF pour le démarrage, vous devez d'abord créer une liste d'options de paramètres de paramètre DB basé sur MySQL et utiliser l'interface RDS CLI (interface de ligne de commande) pour modifier les options souhaitées. . Ensuite, vous devez le faire pour importer les nouvelles options:

  • Créez un groupe de paramètres DB personnalisé (appelez-le MySettings)
  • Téléchargez RDS CLI et configurez un fichier de configuration avec vos informations d'identification AWS
  • Exécuter ce qui suit: ./rds-modify-db-parameter-group MySettings --parameters "name=whateveroption,value=whatevervalue,method=immediate"
  • Modifier à l'aide de la liste d'options de paramètre dB MySettings
  • Redémarrez l'instance MySQL RDS

En ce qui concerne la mise à l'échelle des centres de données, vous avez la possibilité de créer des répliques de lecture. Étant donné que le moteur de stockage par défaut est InnoDB, la réplique de lecture est devenue transparente car les données peuvent être synchronisées à des esclaves sans interrompre le maître.

Les modèles de serveurs supérieurs signifie que vous pouvez avoir plus de mémoire, plus d'iops. N'oubliez pas le cliché que j'ai mentionné parce que quand il s'agit d'Amazon RDS, avec , une grande puissance vient beaucoup d'argent.

9
RolandoMySQLDBA

Eh bien @Tnosaj, concernant votre première question sur Lecture Slaves - Normalement, un maître peut reproduire 5-6 esclaves de manière transparente. Cependant, évaluer si Lire Slave fonctionne correctement, il est important de connaître le type d'applications que vous avez. Par exemple, le nombre de "goûts" dans une application sociale ne doit pas nécessairement être mis à jour en temps réel comme s'opposer à un site de commerce électronique, où si un article est épuisé, il doit être mis à jour immédiatement. Donc, ce type d'esclave de lecture conviendrait dans l'ancien cas mais pas dans ce dernier.

En ce qui concerne votre deuxième question, sur plusieurs centres de données et réplication - la meilleure pratique consiste à mettre en œuvre une réplication Master-Master dans le même centre de données, et il convient idéalement de se faire sur des hôtes de cluster dédiés. Exécution de la réplication MASTER-MASTER sur plusieurs centres de données n'est pas une pratique courante. La raison en est que la plus grande réplication principale du maître de défi (similaire à toutes les clusters) peut présenter une situation appelée "cerveau divisée". Dans un tel cas, chaque maître est déconnecté, puis après le redémarrage commence à fonctionner de manière indépendante. La réparation de ce type de problème de "cerveau divisé" nécessite généralement des temps d'arrêt et du traitement manuel. (Consultez ceci page wiki sur le cerveau divisé ).

Quant à un fournisseur de DB accompagner, en plus du cluster de Percona Xtradb et de RDS, qui mentionné par @rolando, je vous recommande de vérifier également Xéround Offre (je pense que cela présente une alternative juste à - RDS ).

0
Lena Weber