mirror of
https://github.com/php/doc-es.git
synced 2026-03-29 10:52:21 +02:00
git-svn-id: https://svn.php.net/repository/phpdoc/es/trunk@334898 c90b9560-bf6c-de11-be94-00142212c4b1
362 lines
12 KiB
XML
362 lines
12 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<!-- $Revision$ -->
|
|
<!-- EN-Revision: d976ef507bfa953098069f9c541e49b0529f7d16 Maintainer: seros Status: ready -->
|
|
<!-- Reviewed: no -->
|
|
|
|
<book xml:id="book.mysqlnd-ms" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
|
|
<title>Complemento de equilibrado de carga y replicación de mysqlnd</title>
|
|
<titleabbrev>mysqlnd_ms</titleabbrev>
|
|
|
|
<preface xml:id="intro.mysqlnd-ms">
|
|
&reftitle.intro;
|
|
<para>
|
|
El complemento de equilibrado de carga y replicación de mysqlnd (<literal>mysqlnd_ms</literal>)
|
|
añade soporte de uso sencillo para la replicación MySQL a todas las extensiones de MySQL para PHP que utilizan
|
|
<link linkend="book.mysqlnd">mysqlnd</link>.
|
|
</para>
|
|
<para>
|
|
A partir de la versión 5.3.3 de PHP, el controlador nativo de MySQL para PHP
|
|
(<literal>mysqlnd</literal>)
|
|
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
|
|
<link linkend="book.mysqlnd">mysqlnd</link>.
|
|
</para>
|
|
<para>
|
|
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.
|
|
</para>
|
|
<para>
|
|
Los complementos de mysqlnd como <literal>mysqlnd_ms</literal> 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.
|
|
</para>
|
|
<section xml:id="mysqlnd-ms.key-features">
|
|
<title>Características principales</title>
|
|
<para>
|
|
Las características principales de PECL/mysqlnd_ms son las siguientes:
|
|
</para>
|
|
<para>
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>
|
|
Es transparente y, por lo tanto, fácil de usar.
|
|
</para>
|
|
<para>
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>
|
|
Admite todas las extensiones de MySQL para PHP.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Admite SSL.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Es una <acronym>API</acronym> consistente.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Se requieren pocos cambios o ningún cambio en la aplicación, dependiendo del escenario de uso requerido.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Conexiones retardadas: las conexiones a servidores maestros y esclavos no se
|
|
abren antes de que se ejecute una sentencia SQL.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Opcional: uso automático del maestro después de la primera escritura en una petición web, para
|
|
disminuir el posible impacto de la demora de la replicación.
|
|
</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Se puede usar con cualquier solución de clúster MySQL.
|
|
</para>
|
|
<para>
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>
|
|
Replicación MySQL: La división de lectura-escritura la realiza el complemento.
|
|
Es el foco primario del complemento.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Clúster MySQL: La división de lectura-escritura se puede deshabilitar.
|
|
Es posible la configuración de múltiples maestros.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Soluciones de terceros: el complemento está optimizado para la Replicación MySQL,
|
|
pero se puede usar con cualquier otro tipo de solución de clúster MySQL.
|
|
</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Estrategias destacadas de la división de lectura-escritura.
|
|
</para>
|
|
<para>
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>
|
|
Detección automática de SELECT.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Admite sugerencias SQL para invalidar el automatismo.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Definido por el usuario.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Se puede deshabilitar, por ejemplo, al usar un clúster sincrónico, como el Clúster MySQL.
|
|
</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Estrategias destacadas del equilibrado de carga.
|
|
</para>
|
|
<para>
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>
|
|
Rotación: elegir un esclavo diferente, de un modo 'round bobin', en cada petición a los esclavos.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Aleatorio: elegir un esclavo aleatorio en cada petición a los esclavos.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Aleatoiro una vez (adhesión): elegir un esclavo aleatorio una vez para ejecutar todas las peticiones a los esclavos durante toda una petición web.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Definido por el usuario. La aplicación puede registrar llamadas de retorno con mysqlnd_ms.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
PHP 5.4.0 o superior: consideración de transacciones al usar solamente llamadas a la API para controlar transacciones.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Equilibrado de carga ponderado: a los servidores se les pueden asignar diferentes propiedades, por ejemplo, para
|
|
dirigir más peticiones a una máquina potente que a otra menos potente. O para
|
|
elegir máquinas cercanas para reducir la latencia.
|
|
</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
ID de transacciones global.
|
|
</para>
|
|
<para>
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>
|
|
Emulación en el lado del cliente. Hace más sencilla la tolerancia a fallos manual del servidor maestro y la promoción de esclavos
|
|
con clústeres asíncronos, como la Repliación MySQL.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Soporte para la característica del identificador de transacciones global interno de MySQL 5.6.5 o superior.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Soporte del uso de IDs de transacciones para identificar esclavos asíncronos actualizados
|
|
para lectura cuando se necesite consistencia de sesión. Observe las restricciones
|
|
mencionadas en el manual.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Estrangulamiento: opcionalmente, el complemento puede esperar a que un esclavo se convierta en "sincrónico" antes
|
|
de continuar.
|
|
</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Niveles de servicio y de consistencia.
|
|
</para>
|
|
<para>
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>
|
|
Las aplicaciones puede solicitar para las conexiones niveles de servicios
|
|
de consistencia final, de sesión y fuerte. Los nodos adecuados de clústeres
|
|
se buscarán automáticamente.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Los accesos a un esclavo de Replicación MySQL de consistencia final pueden ser reemplazados
|
|
por accesos rápidos a la caché local de forma transparente para reducir la carga del servidor.
|
|
</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Particionamiento y fragmentación
|
|
</para>
|
|
<para>
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>
|
|
Los servidores de un clúster de réplica pueden estar organizados en grupos. Se pueden
|
|
usar las sugerencias SQL para dirigir manualmente consultas a un grupo específico.
|
|
La agrupación se puede usar para particionar (fragmentar) los datos, o para paliar problemas de
|
|
hotspots con actualizaciones.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Los filtros de Replicación de MySQL están soportados a través del filtro de tabla.
|
|
</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
MySQL Fabric
|
|
</para>
|
|
<para>
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>
|
|
Se incluye <link linkend="mysqlnd-ms.quickstart.mysql_fabric">soporte experimental</link>
|
|
para MySQL Fabric.
|
|
</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</para>
|
|
</section>
|
|
|
|
<section xml:id="mysqlnd-ms.limitations">
|
|
<title>Limitaciones</title>
|
|
<para>
|
|
El mecanismo interno de división de lectura-escritura es muy básico. Cada
|
|
consulta que comience con <literal>SELECT</literal>
|
|
es considerada una petición de lectura para enviarla a un servidor esclavo de MySQL.
|
|
Todas las demás consultas (como las sentencias <literal>SHOW</literal>)
|
|
son consideradas como peticiones de escritura que son enviadas al servidor maestro de MySQL.
|
|
El comportamiento interno se puede invalidar usando las
|
|
<link linkend="mysqlnd-ms.constants">sugerencias SQL</link>, o una
|
|
<link linkend="ini.mysqlnd-ms-plugin-config-v2.filter-user">función de llamada de retorno</link> definida por el usuario.
|
|
</para>
|
|
<para>
|
|
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 <function>mysqli_multi_query</function>
|
|
para ejecutar la sentencia múltiple <literal>SELECT id FROM test ; INSERT INTO test(id) VALUES (1)</literal>,
|
|
ésta será redirigida a un servidor esclavo debido a que comienza con
|
|
<literal>SELECT</literal>. La sentencia <literal>INSERT</literal>, la cual es
|
|
también parte de la sentencia múltiple, no será redirigida a un servidor maestro.
|
|
</para>
|
|
<note>
|
|
<para>
|
|
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
|
|
<link linkend="mysqlnd-ms.pooling">intercambio y agrupación de conexiones</link>,
|
|
<link linkend="mysqlnd-ms.transaction">manejo de transacciones</link>,
|
|
<link linkend="mysqlnd-ms.failover">tolerancia a fallos</link>
|
|
<link linkend="mysqlnd-ms.loadbalancing">equilibrado de carga</link> &listendand;
|
|
<link linkend="mysqlnd-ms.rwsplit">división de lectura-escritura</link>.
|
|
</para>
|
|
</note>
|
|
</section>
|
|
|
|
<section xml:id="mysqlnd-ms.name">
|
|
<title>Sobre el nombre</title>
|
|
<para>
|
|
La abreviatura <literal>mysqlnd_ms</literal>
|
|
significa <literal>complemento maestro esclavo de mysqlnd</literal>. 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.
|
|
</para>
|
|
</section>
|
|
</preface>
|
|
|
|
&reference.mysqlnd-ms.quickstart;
|
|
&reference.mysqlnd-ms.concepts;
|
|
&reference.mysqlnd-ms.setup;
|
|
&reference.mysqlnd-ms.constants;
|
|
&reference.mysqlnd-ms.reference;
|
|
&reference.mysqlnd-ms.changes;
|
|
|
|
</book>
|
|
|
|
<!-- Keep this comment at the end of the file
|
|
Local variables:
|
|
mode: sgml
|
|
sgml-omittag:t
|
|
sgml-shorttag:t
|
|
sgml-minimize-attributes:nil
|
|
sgml-always-quote-attributes:t
|
|
sgml-indent-step:1
|
|
sgml-indent-data:t
|
|
indent-tabs-mode:nil
|
|
sgml-parent-document:nil
|
|
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
|
|
sgml-exposed-tags:nil
|
|
sgml-local-catalogs:nil
|
|
sgml-local-ecat-files:nil
|
|
End:
|
|
vim600: syn=xml fen fdm=syntax fdl=2 si
|
|
vim: et tw=78 syn=sgml
|
|
vi: ts=1 sw=1
|
|
-->
|