mysqlnd_ms
PHP Manual

Introduction

Le plugin de réplication mysqlnd et de balance de charge mysqlnd (mysqlnd_ms) ajoute la possibilité d'utiliser facilement la réplication MySQL pour toutes les extensions PHP MySQL qui utilisent mysqlnd.

Depuis la version 5.3.3 de PHP, le driver natif MySQL pour PHP (mysqlnd) utilise un plugin interne C API. Les plugins C, comme le plugin de réplication et de balance de charge, peuvent étendre la fonctionnalité de mysqlnd.

Le driver MySQL natif de PHP est une bibliothèque C qui est livré avec PHP depuis la version 5.3.0. Il agit en remplacement de la bibliothèque cliente MySQL (libmysql/libmysqlclient). L'utilisation de mysqlnd a plusieurs avantages : aucun téléchargement supplémentaire n'est nécessaire car elle est fournie avec PHP, elle est sous licence PHP, elle consomme moins de mémoire dans certains cas, et elle fournie de nouvelles fonctionnalités comme les requêtes asynchrones.

Les plugins mysqlnd comme mysqlnd_ms opère la plupart du temps de façon transparente d'un point de vue utilisateur. Il supporte toutes les applications PHP et toutes les extensions PHP MySQL. Il ne modifie pas les APIs existantes. Toutefois, il peut être utilisé très facilement avec les applications PHP existantes.

Fonctionnalités clés

Les fonctionnalités clés de PECL/mysqlnd_ms sont les suivantes.

Limitations

Le mécanisme interne de séparation lecture/écriture est très basique. Chaque requête qui commence par SELECT est considérée comme une requête en lecture à envoyer à un serveur esclave MySQL. Toutes les autres requêtes (y compris les requêtes de type SHOW) sont considérées comme des requêtes en écriture à envoyer vers le serveur maître MySQL. Le comportement interne peut être écraser en utilisant les astuces SQL ou une fonction de rappel définie par l'utilisateur.

La séparation lecture/écriture ne prend pas en considération les requêtes multiples. Elles sont considérées comme une seule et unique requête. La décision de l'endroit où doit être exécutée la requête sera prise suivant le début de la chaîne de requête. Par exemple, si mysqli_multi_query() est utilisé pour exécuter une requête multiple comme SELECT id FROM test ; INSERT INTO test(id) VALUES (1), la requête sera redirigée vers un serveur esclave car elle commence par SELECT. La requête INSERT, qui fait également partie de la requête multiple, ne sera pas redirigée vers le serveur maître.

Note:

Les applications doivent tenir compte des conséquences des commutations de connexion effectuées pour la balance de charge. Veuillez vous rapporter à la documentation sur la file de connexion et la commutation, la gestion des transactions, la bascule, la balance de charge et la séparation lecture/écriture avec attention.

A propos du nom

Le raccourci mysqlnd_ms provient de mysqlnd master slave plugin. Le nom a été choisi pour une démonstration rapide du concept. Au début, les développeurs n'avaient pas prévus de continuer à utiliser le code de base.


mysqlnd_ms
PHP Manual