mysqlnd_ms
PHP Manual

Introducción

El complemento de equilibrado de carga y replicación de mysqlnd (mysqlnd_ms) añade soporte de uso sencillo para la replicación MySQL a todas las extensiones de MySQL para PHP que utilizan mysqlnd.

A partir de la versión 5.3.3 de PHP, el controlador nativo de MySQL para PHP (mysqlnd) ofrece una API en C de complementos internos. Los complementos en C, como el complemento de replicación y equilibrado de carga, pueden extender la funcionalidad de mysqlnd.

El controlador nativo de MySQL para PHP es una biblioteca en C que acompaña a PHP a partir de PHP 5.3.0. Sirve como un sustituto a corto plazo de la Biblioteca Cliente de MySQL (libmysqlclient). El uso de mysqlnd tiene varias ventajas: no son necesarias descargas extra debido a que está incluido con PHP, está bajo la licencia de PHP, hay menor consumo de memoria en ciertos casos, y contiene nueva funcionalidad, como consultas asíncronas.

Los complementos de mysqlnd como mysqlnd_ms operan, en mayor parte, de forma transparente desde la perspectiva del usuario. El complemento de replicación y equilibrado de carga admite todas las aplicaciones de PHP y todas las extensiones de MySQL para PHP. No cambia las APIs existentes. Por lo tanto, se puede usar fácilmente con las aplicaciones de PHP existentes.

Características principales

Las características principales de PECL/mysqlnd_ms son las siguientes:

Limitaciones

El mecanismo interno de división de lectura-escritura es muy básico. Cada consulta que comience con SELECT es considerada una petición de lectura para enviarla a un servidor esclavo de MySQL. Todas las demás consultas (como las sentencias SHOW) son consideradas como peticiones de escritura que son enviadas al servidor maestro de MySQL. El comportamiento interno se puede invalidar usando las sugerencias SQL, o una función de llamada de retorno definida por el usuario.

El divisor de lectura-escritura no considera las sentencias múltiples. Éstas son consideradas como una única sentencia. La decisión de dónde ejecutar la sentencia se basará en el comienzo de la dicha sentencia. Por ejemplo, si se usa mysqli_multi_query() para ejecutar la sentencia múltiple SELECT id FROM test ; INSERT INTO test(id) VALUES (1), ésta será redirigida a un servidor esclavo debido a que comienza con SELECT. La sentencia INSERT, la cual es también parte de la sentencia múltiple, no será redirigida a un servidor maestro.

Nota:

Las aplicaciones deben considerar las consecuencias de los intercambios de conexión que se realizan para el equilibrado de carga. Revise la documentación sobre intercambio y agrupación de conexiones, manejo de transacciones, tolerancia a fallos equilibrado de carga y división de lectura-escritura.

Sobre el nombre

La abreviatura mysqlnd_ms significa complemento maestro esclavo de mysqlnd. El nombre fue elegido por una rápida y desordenada prueba de conceptos. Al principio, los desarrolladores no esperaban que se continuase usando el código base.


mysqlnd_ms
PHP Manual