## Séries 1.6 PECL/mysqlnd_ms

1.6.0-alpha

- Date de sortie : TBD
- Motto/thème : Maintenance et support initial de MySQL Fabric

> Note:

> C'est la série courante de développement. Toutes les fonctionalités sont encore à un stade précoce. Les modifications peuvent survenir à n'importe quel moment sans aucun avertissement. Veuillez ne pas utiliser cette version dans un environnement de production.

> La documentation peut ne pas refléter pour l'instant l'ensemble des modifications.

Correction de bogues

- Modification refusée : #66616 R/W split fails : QOS with mysqlnd_get_last_gtid with built-in MySQL GTID

  Ceci n'est pas un bogue dans l'implémentation du plugin, mais une limitation de la fonctionalité côté serveur non considérée ni documentée auparavant. MySQL 5.6 built-in GTIDs ne peut être utilisé pour assurer la consistence de la session lors de la lecture depuis des esclaves, dans tous les cas. Dans le pire des cas, le plugin ne va pas considérer l'utilisation des esclaves et se retournera vers le maître. Il n'y aura aucun résultat incorrect, mais il n'y aura, non plus, aucun bénéfice de faire des vérification GTID.

- Correction du bogue #66064 - la balance de charge aléatoire ingore le poids

  En raison d'un bogue sur l'analyseur de configuration de la balance de charge aléatoire, le poids du noeud était ignoré, si et seulement si le drapeau sticky était défini.

- Correction du bogue #65496 - Vérification incorrecte du délai de l'esclave

  Le filtre de qualité de service ignorait les esclaves pour lesquels le lag était de 0 seconde si un lag maximum était défini. Malgré le fait qu'un esclave ne lag pas du tout, il était exclus de la liste de la balance de charge si un âge maximal était défini par le filtre QoS. Ceci était du à l'utilisation d'un opérateur de comparaison incorrect dans les sources du filtre.

- Correction du bogue #65408 - Echéc de la compilation avec -Werror=format-security

Modification de fonctionalités

- Introduction d'un pool de connexion interne. Lors de l'utilisation de Fabric, et du passage du groupe partagé A vers le groupe partagé B, nous remplaçons la liste entière des maîtres et des esclaves. Ceci va perturber la logique d'alignement des status de connexions ainsi que quelques filtres et leurs informations en cache sur la liste des maîtres et des esclaves. La nouvelle abstraction du pool de connexion interne permet d'informer les filtres des modifications, leur permettant ainsi de mettre à jour leurs caches.

  Par la suite, le pool peut également être utilisé pour réduire la charge des connexions. Supposons que vous passez d'un groupe partagé à un autre, et que vous revenez par la suite à la situation de départ. Chaque fois que la bascule survient, la liste du pool de serveurs actifs (et de connexions) est remplacée. Cependant, les connexions qui ne sont plus utilisées ne sont pas nécessairement fermées immédiatement, mais conservées dans le pool pour une utilisation ultérieure.

  Notez que le pool de connexion est interne à ce moment là. Il existe quelques nouvelles statistiques permettant de le surveiller. Cependant, vous ne pouvez pas pour l'instant configurer la taille de ce pool.

- Ajout d'une abstraction padique des transactions distribuées. Les transactions XA sont supportées en utilisant des appels SQL standarts. Ceci est un inconvénient car les participans XA doivent être gérés manuellement. PECL/mysqlnd_ms introduit des appels API pour contrôler les transactions XA sur les serveurs MySQL. Lors de l'utilisation de nouvelles fonctions, PECL/mysqlnd_ms agit comme un coordinateur de transaction. Après le début d'une transaction distribuée, le plugin surveille tous les serveurs concernés tant que la transaction ne s'est pas terminée, et envoie les requêtes SQL appropriées sur les participants XA.

  Ceci est utile, par exemple, lors de l'utilisation de Fabric et du partage. Lors de l'utilisation de Fabric, les serveurs partagés concernés dans une transaction peuvent ne pas être connus par avance. Aussi, le contrôle manuelle d'une transaction qui touchent plusieurs serveurs partagés devient difficile. Soyez attentif aux limitations courantes.

- Introduction d'une boucle de tentatives automatique pour les erreurs passagères et les statistiques correspondantes pour compter le nombre de tentatives implicites. Quelques clusters de bases de données distribuées utilisent les erreurs passagères pour avertir le client de re-tenter son opération dans un moment. Le plus souvent, le client est alors supposé stopper l'exécution (sleep) pendant un court instant avant de re-tenter l'opération désirée. Le fait de passer immédiatement à un autre noeud n'est pas nécessaire comme réponse à ces erreurs. Il convient plutôt de lancer une boucle de tentative. C'est une situation commune lors de l'utilisation d'un cluster MySQL.

- Introduit une boucle de re-tentative automatique pour les erreurs transitoires et les statistiques correspondantes pour compter le nombre de re-tentatives implicites. Quelques grappes de bases de données distribuées utilisent les erreurs transitoires pour toucher un client afin qu'il re-tente ses opérations un peu plus tard. La plupart du temps, le client est alors supposé mettre en pause l'exécution pendant une court instant avant de tenter de nouveau l'opération. Le passage immédiat au noeud suivant n'est pas nécessaire en réponse à cette erreur. Au lieu de cela, une boucle de re-tentative peut être mise en place. Ceci est une situation commune lors de l'utilisation de grappe MySQL.

- Introduction d'un support basic le framework d'haute disponibilité et de fragmentation MySQL Fabric.

  Attention, ce support est au stade pré-alpha. A la fois le framework côté serveur et côté client sont supposés fonctionner normalement ; toutefois, les tests n'ont pas été effectués avant la mise à disposition de la version alpha du plugin. De plus, l'API peut être modifié sans aucune alerte préalable.

  Sachant que c'est un travail en cours, le manuel peut ne pas refléter toutes les limitations des fonctionalités, ainsi que les bogues connus.

- Les statistiques pour surveiller Fabric XML RPC appellant sharding.lookup_servers : fabric_sharding_lookup_servers_success, fabric_sharding_lookup_servers_failure, fabric_sharding_lookup_servers_time_total, fabric_sharding_lookup_servers_bytes_total, fabric_sharding_lookup_servers_xml_failure.

- Nouvelles fonctions en relation avec MySQL Fabric : mysqlnd_ms_fabric_select_shard(), mysqlnd_ms_fabric_select_global(), mysqlnd_ms_dump_servers().