Entonces, cuando se trata de enrutar su tráfico MySQL, existen varias opciones.
- HAproxy
- MariaDB MaxScale
- NGINX
- Enrutador MySQL
- ProxySQL
- Incluso puede obtener MySQL Proxy si lo desea, pero es EOF.
Ahora que he visto que HAproxy se usa con más frecuencia con los clientes, es bastante fácil de configurar. Percona tiene un ejemplo para los interesados:
Personalmente, me gusta ProxySQL. Percona también tiene pocos blogs sobre esto también
- https://github.com/sysown/proxysql/wiki/ProxySQL-Configuration
- https://www.percona.com/blog/2017/01/19/setup-proxysql-for-high-availability-not-single-point-failure/
- https://www.percona.com/blog/2017/01/25/proxysql-admin-configuration/
- https://www.percona.com/blog/2016/09/15/proxysql-percona-cluster-galera-integration/
Percona también tiene disponible la versión ProxySQL
Estaba pensando en escribir algunos ejemplos, pero en general Percona lo ha explicado muy bien. No quiero quitar nada de esas publicaciones, en cambio, señalo que hay mucha buena información disponible a través de esas urls. Entonces, en lugar de volver a escribir lo que ya se ha escrito, crearé una colección de información para los interesados.
Primero compare y decida por usted mismo lo que necesita y desea. El siguiente enlace por supuesto va a estar sesgado hacia ProxySQL, pero le da un alcance general para que usted considere.
Si tiene un clúster o maestro para dominar y no le importa a qué servidor van las escrituras vs lecturas, siempre que tenga una conexión; entonces es probable que HAproxy sea una configuración simple y rápida para usted.
La ventaja con ProxySQL es la capacidad de ordenar el tráfico de una manera ponderada, FÁCIL. Por lo tanto, puede hacer que las escrituras vayan al nodo 1 y seleccione la extracción del nodo 2 y del nodo 3. La documentación sobre esto se puede encontrar aquí:
Sí, se puede hacer con HAproxy, pero debe instruir a la aplicación en consecuencia.
Esto se maneja en ProxySQL en base a sus reglas de consulta.
Ahora la pregunta obvia aquí: OK, ¿cómo evitar que ProxySQL se convierta en el único punto de falla?
Puede invertir es un equilibrador de carga robusto y etc etc etc ... Mezcle hardware en él .... O hágalo fácil para usted y soporte de código abierto y use KeepAlive d. Esto es MUY fácil de configurar y todo está documentado nuevamente aquí:
- https://www.percona.com/blog/2017/01/19/setup-proxysql-for-high-availability-not-single-point-failure/
- http://www.keepalived.org/doc/
- Para ser justos aquí hay un ejemplo para keepalived y HAproxy también
- https://andyleonard.com/2011/02/01/haproxy-and-keepalived-example-configuration/
Si alguna vez se ocupó de lua y mysql-proxy , ProxySQL y Keepalived deberían ser muy simples para usted. Si aún lo desea, por alguna razón: https://launchpad.net/mysql-proxy
Independientemente de si elige HAproxy, ProxySQL u otra solución, debe asegurarse de no reemplazar un único punto de falla con otro y keepalived es ideal para eso. Muy pocas razones para no hacer esto si está usando un proxy.
Así que algunas cosas más en ProxySQL.
- Si realiza un seguimiento de los hosts que se conectan a su base de datos a través de su informe o monitoreo, se dará cuenta de que los IPS o nombres de host ahora serán el servidor proxy.
- ¿Qué pasa con todos los usuarios que ya tienes en MySQL? ¿Puedes migrarlos a proxysql? Sí tu puedes. Toma algunos pasos pero es capaz. Aquí hay un ejemplo de esto:
- Asegúrese de comprender el sistema de configuración de múltiples capas . Guarde su información en el disco!
- https://github.com/sysown/proxysql/wiki/Main-(runtime)#runtime-tables
- https://github.com/sysown/proxysql/wiki/Main-(runtime)#disk-database
- Puede ProxySQL ejecutarse en el puerto predeterminado de MySQL 3306
- Sí Editar las interfaces mysql
- Tenga en cuenta ahora sus max_connections. Si tiene Max_connections en mysql establecido en 500, entonces ese es su límite de curso para los usuarios estándar. Con ProxySQL ahora puede distribuir usuarios en todo el sistema y establecer un máximo por nodo. Entonces, para ayudar a asegurar que no golpees 500 conexiones, establece mysql-max_connections un poco más bajo que el valor de MySQL.
- Aproveche el Módulo Monitor y las estadísticas . Sepa qué está pasando con su proxy y tráfico.
- Aproveche el Caching de consultas si corresponde para su aplicación.
http://anothermysqldba.blogspot.com/2018/05/proxy-mysql-haproxy-proxysql-keepalived.html