MySQL 8.2 es lo que todos estábamos esperando para Kubernetes con Transparent Read/Write Splitting

MySQL 8.2 es lo que todos estábamos esperando para Kubernetes con Transparent Read/Write Splitting
Imagen: https://lefred.be/

Oracle ha anunciado recientemente la disponibilidad general de MySQL 8.2 , que incluye soporte para división de lectura/escritura (read/write splitting). Esta característica tan esperada se introdujo en la última versión de innovación (un equivalente a "release candidate"), que ayuda a optimizar el rendimiento y la escalabilidad de la base de datos.

Read-write splitting permite a las aplicaciones dirigir de forma transparente todo el tráfico de escritura a instancias de lectura-escritura (primarias/sources) y todo el tráfico de lectura a instancias de sólo lectura, dependiendo del tipo de instancia (InnoDB Cluster o Replica Cluster).

Frederic Descamps , administrador de la comunidad MySQL, explica:

"A gran escala, distribuimos las lecturas entre las réplicas, pero esto debe gestionarse de alguna manera en la aplicación: apuntando las escrituras a un lugar y las lecturas a otro lugar. Desde MySQL 8.2, MySQL Router ahora puede identificar las lecturas y escrituras, para luego enrutarlas a instancias primarias en el caso de un clúster InnoDB, o a una fuente de replicación asincrónica para las escrituras y a instancias secundarias o réplicas para las lecturas."

Puedes realizar tu mismo una simple PoC (proof of concept/prueba de concepto), utilizando mysql-operator:

mysql-operator/deploy at 8.2.0-2.1.1 · mysql/mysql-operator
MySQL Operator for Kubernetes. Contribute to mysql/mysql-operator development by creating an account on GitHub.

Necesitarás desplegar los siguientes manifiestos:


kubectl apply -f "https://github.com/mysql/mysql-operator/blob/8.2.0-2.1.1/deploy/deploy-crds.yaml" # CRDs

kubectl apply -f "https://github.com/mysql/mysql-operator/blob/8.2.0-2.1.1/deploy/deploy-operator.yaml" # Operator

kubectl apply -f "https://github.com/mysql/mysql-operator/blob/8.2.0-2.1.1/samples/sample-secret.yaml" # Secret (recomendado editar)

kubectl apply -f "https://github.com/mysql/mysql-operator/blob/8.2.0-2.1.1/samples/sample-cluster.yaml" # Cluster 3 instancias 1 router

Basado en: https://www.infoq.com/news/2023/11/mysql-read-write-splitting/

Lectura complementaria: https://lefred.be/content/mysql-8-2-read-write-splitting-a-what-cost/

Keep reading on SREDevOps.org: