Nous avons une configuration de deux éclats de MongoDB. Chaque fragment contient un maître, un esclave, un esclave de retard d'esclave 24h et un arbitre. Cependant, l'équilibreur ne migre pas les éclats en attendant que l'esclave retardé migre. J'ai essayé de définir _secondarythrottle à false dans la configuration de l'équilibreur, mais j'ai toujours le problème.
Il semble que la migration continue une journée puis échoue (une tonne d'attente des messages esclaves dans les journaux). Finalement, il abandonne et démarre une nouvelle migration. Le message indique en attendant 3 esclaves, mais l'esclave de retard est caché et PRIO 0, il devrait donc attendre celui-là. Et si le _secondarythrottle fonctionnait, il ne devrait pas attendre d'esclave, non?
C'est comme ça depuis quelques mois maintenant, donc la configuration aurait dû être rechargée sur tous les mongoses. Certains des Mongoses qui dirigent l'équilibreur ont récemment été le restaurateur.
Quelqu'un a-t-il une idée de la façon de résoudre le problème, nous n'avons pas eu ces problèmes avant de commencer l'esclave retardé, mais c'est juste notre théorie.
Config:
{ "_id" : "balancer", "_secondaryThrottle" : false, "stopped" : false }
Journal à partir du processus maître Shard1:
MigraTeThead] AVERTISSEMENT: Migrate Commit en attente de 3 esclaves pour 'xxx.xxx' {shardkey: ObjectId ('4FD2025AE087C37D32039A9E')} -> {Shardkey: ObjectId ('4FD2035AE087C37F04014A79')} Waiting For: 529DC9: 7a] réplication pour rattraper avant d'entrer dans la section critique
Journal à partir du processus maître Shard2:
Mar 3 14: 52: 25.302 [Conn1369472] MovEchunk Data Transfer Progress: {active: true, ns: "xxx.xxx", de: "Shard2 / Mongo2: 27018, Mongob2: 27018", Min: {Shardkey: ObjectId (ObjectId ( '4fd2025ae087c37d32039a9e') }, max: { shardkey: ObjectId('4fd2035ae087c37f04014a79') }, shardKeyPattern: { shardkey: 1.0 }, state: "catchup", counts: { cloned: 22773, clonedBytes: 36323458, catchup: 0, steady: 0}, ok: 1.0} mon mem utilisé: 0
MISE À JOUR: J'ai confirmé que la suppression de Slavedelay a fait fonctionner l'équilibreur. Dès qu'ils se sont mis à jour, des morceaux se sont déplacés. Le problème semble donc être lié au Slavedelay. J'ai également confirmé que l'équilibreur fonctionne avec "Secondarythrottle": False. Il semble de toute façon attendre les esclaves.
Shard2:
Mar 10 décembre 11: 44: 25.423 [migraTethRead] AVERTISSEMENT: migrater engager en attendant 3 esclaves pour 'xxx.xxx' {Shardkey: ObjectId ('4FF1213EE087C3516B2F703F')} -> {Shardke 52A6F089: 81
Mar 10 décembre 11: 44: 26.423 [MigrateThread] En attente de la réplication pour rattraper son retard avant d'entrer dans la section critique
Mar 10 décembre 11: 44: 27.423 [MigrateThread] En attente de la réplication pour rattraper son retard avant d'entrer dans la section critique
Mar 10 décembre 11: 44: 28.423 [MigrateThread] En attente de la réplication pour rattraper son retard avant d'entrer dans la section critique
Mar 10 décembre 11: 44: 29.424 [MigraTethead] En attente de la réplication pour rattraper son retard avant d'entrer dans la section critique
Mar 10 décembre 11: 44: 30.424 [MigrateThread] En attente de la réplication pour rattraper son retard avant d'entrer dans la section critique
Mar 10 décembre 11: 44: 31.424 [MigrateThread] En attente de la réplication pour rattraper son retard avant d'entrer dans la section critique
Mar 10 décembre 11: 44: 31.424 [migraTethread] migrate commit a réussi à faire du rinçage aux secondaires pour 'xxx.xxx' {shardkey: objectId ('4ff1213ee087c3516b2f703f')} -> {shardke
Mar 10 décembre 11: 44: 31.425 [MigraTeThead] Migrate Commit Flushed vers le journal pour 'xxx.xxx' {Shardkey: ObjectId ('4FF1213EE087C3516B2F703F')} -> {Shardkey: ObjectId ')
Mar 10 décembre 11: 44: 31.647 [migraTethread] migrate commit a réussi à rincer vers les secondaires pour 'xxx.xxx' {shardkey: ObjectId ('4ff1213EE087C3516B2F703F')} -> {shardke
Mar 10 décembre 11: 44: 31.667 [migraTead] migrater commit rouge au journal pour 'xxx.xxx' {shardkey: ObjectId ('4FF1213EE087C3516B2F703F')} -> {shardkey: ObjectId ')