Serie PECL/mysqlnd_ms 1.6

1.6.0-alpha

  • Fecha de publicación: TBD
  • Motivo/tema: Mantenimiento y soporte inicial para MySQL Fabric

Nota:

Esta es la serie actualmente en desarrollo. Todas las características están en una etapa primitiva. Los cambios podrían ocurrir en cualquier momento sin previo aviso. Por favor, no use esta versión en entornos de producción.

La documentación podría no reflejar aún todos los cambios.

Corrección de errores

  • No se podrá corregir: #66616 Falla la división de lectura/escritura: QOS con mysqlnd_get_last_gtid con GTID internos de MySQL

    Esto no es un error en la implementación del complemento, sino una limitación de una característica del lado del servidor no considerada ni documentada antes. Los GTID internos de MySQL 5.6 no pueden usarse para asegurar la consistencia de sesión al leer desde los esclavos en cualquier caso. En el peor de los casos, el complemento no considerará el uso de esclavos y recurrirá al uso del maestro. No habrá resultados erróneos, excepto que no habrá el beneficio de realizar la comprobación del GTID.

  • Corregido #66064 - Equilibrio de carga aleatorio una vez ignora los pesos

    Debido a un error de análisis de configuración, el equilibrio de carga ha ignorado el nodo de pesos si, y solo si, la bandera 'sticky' estaba establecida (aleatorio una vez).

  • Corregido #65496 - Comprobación errónea de la demora de esclavos

    El filtro de calidad de servicio ha ignorado de forma errónea a los esclavos que demoraban cero (0) segundos si se hubo establecido cualquier máximo de demora. Aunque un esclavo no se demorara, era excluido de la lista de equilibrio de carga si el filtro QoS estableció un máximo de edad. Esto era debido al uso de un operador de comparación erróneo en el código fuente del filtro.

  • Corregido #65408 - Fallo de compilación con -Werror=format-security

Cambio en las características

  • Se introdujo una agrupación de conexiónes interna. Al usar Fabric y cambiar de un grupo de fragmentos A a un grupo de fragmentos B, se remplaza la lista entera de maestros y esclavos. Esto obstaculiza a la lógica de alineamiento de estados de conexiones y a algunos filtros. Algunos filtros almacenan información en cacé en las listas de maestros y esclavos. La nueva abstracción de la agrupación de conexiones interna permite informar de los filtros de cambios, de ahí que puedan actualizar sus cachés.

    Más adelante, la agrupación puede también emplearse para reducir la sobrecarga de conexiones. Se asume que se está cambiando de un grupo de fragmentos a otro y se vuelve otra vez. Siempre que se realice un cambio, las listas de los servidores activos (y conexiones) de la agrupación son remplazadas. Sin embargo, la conexiones que ya no se utilizan no se cierran necesariamente de inmediato, por lo que se pueden permanecer en la agrupación para una reutilización posterior.

    Obsérvese que la agrupación de conexiones es interna en este momento. Hay algunas estadísticas nuevas para monitorizarla. Sin embargo, no se puede configurar aún el comportamiento del tamaño de la agrupación.

  • Se añadió una abstracción básica para transacciones distribuidas. Las transacciones XA están soportadas desde el empleo de llamads SQL estándar. Esto es inadecuado debido a que los participantes de XA deben ser administrador manualmente. PECL/mysqlnd_ms introduce llamadas a la API para controlar transacciones XA entre servidores de MySQL. Al utilizar las nuevas funciones, PECL/mysqlnd_ms actúa como un coordinador de transacciones. Después de iniciar una transacción distribuida, el complemento rastrea todos los servidores involucrados hasta que la transacción finaliza y se envían las sentencias SQL apropiadas a los participantes de XA.

    Esto es útil, por ejemplo, al utilizar Fabric y la fragmentación. Cuando se emplea Fabric, los servidores de fragmentación reales involucrados en una transacción de negocio podrían no ser conocidos de antemano. Así, el control manual de una transacción que genere varios fragmentos sería dificultoso. Por favor, tenga en cuenta las limitaciones actuales.

  • Se introdujo un bucle de reintentos automático para errores transitorios y las estadísticas correspondientes para contar el número de intentos implícitos. Algunos clústeres de bases de datos distribuidas usan erroes transitorios para sugeriri a un cliente que reintente su operación en un momento. Muy amenudo, el cliente se supone que para la ejecución (duerme) por un coroto momento antes del reintentar la operación deseada. No es necesario recurrir inmediatamente a otro nodo en respuesta al error. En su lugar, se puede realizar un blucle de reintentos. Una situación común al usar un Clúster de MySQL.

  • Se introdujo un bucle de reintentos automático para errores transitorios y las estadísticas correspondientes para contar el número de intentos implícitos. Algunos clústeres de bases de datos distribuidas usan erroes transitorios para sugeriri a un cliente que reintente su operación en un momento. Muy amenudo, el cliente se supone que para la ejecución (duerme) por un coroto momento antes del reintentar la operación deseada. No es necesario recurrir inmediatamente a otro nodo en respuesta al error. En su lugar, se puede realizar un blucle de reintentos. Una situación común al usar un Clúster de MySQL.

  • Se introdujo el soporte más básico para MySQL Fabric High Availability y el marco de trabajo de fragmentación.

    Considere este como calidad prealfa. El código del marco de trabajo del lado del servidor y del cliente client debe funcionar de forma precisa considerando solamente los ejemplos del inicio rápido de MySQL Fabric. Sin embargo, no se han realizado pruebas al nivel de versiones del complemento anteriores a alfa. Ambos lados son objetivos móviles, los cambios en la API podrían ocurrir en cualquier momento sin previo aviso.

    Ya que se está trabajando aún en ello, el manual podría no reflejar las limitaciones de las características permitidas y los errores conocidos.

  • Nuevas estadísticas para monitorizar la llamada XML RPC de Fabric 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.

  • Nuevas funciones relacionadas con MySQL Fabric: mysqlnd_ms_fabric_select_shard(), mysqlnd_ms_fabric_select_global(), mysqlnd_ms_dump_servers().