La mayoría de las veces, las réplicas se implementan para alta disponibilidad y/o escalado de lectura. Si el principal falla, una de las réplicas se promociona a principal. Si hay muchas lecturas, y ese es casi siempre el caso, se agregan réplicas para escalar horizontalmente. Idealmente, las escrituras se enrutan al principal y las lecturas se equilibran en la carga entre las réplicas. Es la forma más eficiente de utilizar los recursos disponibles.
RDS, Azure Database y Cloud SQL le brindan puntos finales individuales para las instancias de la base de datos, uno para el principal y uno para cada réplica. Si desea equilibrar la carga de las lecturas, debe crear varias conexiones (una para cada réplica) y hacerlo usted mismo. Si desea ejecutar escrituras en el primario y lecturas en las réplicas (es decir, división de lectura/escritura), debe crear una conexión adicional al primario y hacerlo usted mismo.
No es divertido. No está bien.
Con MaxScale, un proxy de base de datos avanzado para MariaDB Enterprise Server, no tiene que preocuparse por eso. MaxScale realiza el equilibrio de carga de lectura y la división de lectura/escritura por usted; es lo que llamamos enrutamiento de consulta transparente. Los desarrolladores no deberían preocuparse por la infraestructura física (es decir, la topología de la base de datos). ¿Por qué deberían? Tal vez haya una réplica, tal vez cinco. Tal vez los DBA agregaron una réplica anoche, tal vez quitaron dos. No debería importar, y las aplicaciones no deberían tener que dar cuenta de ello.
Eso es lo mejor de MaxScale. Abstrae la infraestructura de base de datos subyacente y la topología de implementación. Tal vez sea una base de datos independiente. Tal vez sea una base de datos replicada. Tal vez sea una base de datos agrupada. ¿A quién le importa? Especialmente en la nube.
Entonces, ¿por qué puede aprovechar el enrutamiento de consultas transparente en las instalaciones, pero no en la nube? Porque RDS, Azure Database y Google Cloud SQL no tienen MaxScale. Si tan solo hubiera un DBaaS con MaxScale y enrutamiento de consultas transparente. Ojalá pudiéramos volar más alto con la última nube de MariaDB. ¡Espera, hola SkySQL!
Sí, llevamos el poder de MaxScale a SkySQL.
Después de crear una base de datos replicada, se le proporciona un nombre de host y dos puertos, uno de lectura y otro de lectura/escritura. Solo necesita el puerto de lectura/escritura, ya que también lee el equilibrio de carga. Pero, si tiene aplicaciones de solo lectura (por ejemplo, BI/informes), el puerto de lectura puede ser útil. Muy fácil.
Quizás se esté preguntando, ¿Shane acaba de compartir el nombre de host y el puerto de su base de datos?
Por qué sí, sí lo hice. De forma predeterminada, las bases de datos de SkySQL no son accesibles. Debe incluir en la lista blanca las direcciones IP (o rangos) de cualquier cliente y servidor de aplicaciones que requiera acceso. Y la única dirección IP que he incluido en la lista blanca es la de mi computadora portátil en casa. Buena suerte. 😉
Volviendo al tema en cuestión, verá los dos puertos:5001 para la división de lectura/escritura (escribe en el principal, lee el equilibrio de carga en las réplicas) y 5002 para el equilibrio de carga de solo lectura. Mi base de datos tiene dos réplicas, pero las aplicaciones que se conectan a ella no tienen que preocuparse por eso. Podría agregar dos réplicas más mañana y no se requerirían cambios en la aplicación para aprovecharlas. MaxScale comenzaría de manera simple y automática a enrutarles las lecturas.
Y si la primaria falla, no pasa nada. MaxScale promoverá automáticamente una réplica y comenzará a enrutar las escrituras en ella (y equilibrará la carga de las lecturas en las réplicas restantes). Si alguna vez sufrió el impredecible tiempo de conmutación por error de RDS, sabe por qué. La conmutación por error de RDS se basa en la propagación de DNS, por lo que no tiene que cambiar el nombre de host del punto final. Es casi transparente, pero lleva tiempo. Con MaxScale, por otro lado, es inmediato:no se requiere propagación de DNS.
Pero no quiero desviarme demasiado del tema. Tengo algo más en mente planeado para HA. Estén atentos.