Lecciones del particionamiento de RDB en GitHub
(github.blog)-
GitHub comenzó hace más de 10 años con RoR y una sola instancia de MySQL
-
En 2019 empezó el particionamiento y aquí comparten la experiencia de 2 años realizando distintos trabajos
→ Para 2021, la carga de la DB se había reducido en un 50%
- Partición virtual
-
Antes de mover las tablas reales, las separaron virtualmente en la capa de aplicación
-
Agruparon tablas y las unieron en dominios de esquema, y usaron un SQL Linter para forzar límites entre ellas
→ Para que luego el particionamiento fuera más seguro
- Verificaron los límites virtuales con Query Linter y Transaction Linter
- Mover datos sin downtime
- Usaron la función de Vertical Sharding de Vitess
→ Después de desplegar VTGate en un clúster de Kubernetes, cambiaron el punto de conexión
- Introdujeron un proceso de write-cutover
→ Usaron la función de replicación de MySQL para alimentar los datos a otro clúster
→ Usaron ProxySQL para multiplexar las conexiones de clientes MySQL
Resultado
-
En 2019,
mysql1, que era un solo clúster, respondía en promedio 950 mil consultas por segundo -
En 2021, se distribuyó en múltiples clústeres y respondió en promedio 1.2 millones de consultas por segundo, con la carga del host reducida a la mitad
Aún no hay comentarios.