Compartir tecnología

Entrevista: tabla y base de datos del clúster Mysql-3

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina


Prefacio

¿Conoce los clústeres de MySQL? ¿Entiende el proceso de replicación maestro-esclavo? ¿Cómo maneja cantidades masivas de datos? Este artículo se centra en presentar las preguntas de la entrevista y deseo que todos los programadores puedan participar. ! !


1. Clúster MySQL

En el entorno en línea, generalmente implementamos una instancia de Mysql con 1 maestro y 1 esclavo, o 1 maestro con múltiples esclavos, para lograr la alta disponibilidad de Mysql y la sincronización maestro-esclavo de Mysql se realiza a través de registros binlog.

1.1 Construcción del clúster Mysql:

Con respecto a la construcción del clúster maestro-esclavo de Mysql, puede consultar el siguiente artículo del blogger

1.2 Proceso de sincronización maestro-esclavo:

Insertar descripción de la imagen aquí

2. ¿Cómo afronta Mysql el almacenamiento masivo de datos?

Como almacenamiento de datos relacionales, MySQL tendrá un cuello de botella en el rendimiento cuando el volumen de datos de una sola tabla supere los 30 millones. De manera similar, la conexión del cliente y la concurrencia admitida por una sola instancia de MySQL tendrán ciertos cuellos de botella. considere utilizar la tecnología de subbase de datos y subtabla para implementar.

2.1 División vertical

2.1.1 Subbiblioteca vertical:

Por ejemplo, los microservicios actuales se han dividido verticalmente. Cada módulo de microservicio se puede conectar a su propia instancia de base de datos Mysql. Su característica es que se basa en tablas y divide diferentes tablas en diferentes bibliotecas según el negocio. y ampliar los datos en diferentes niveles; aumentar la I0 del disco y las conexiones del volumen de datos en condiciones de alta concurrencia;
Insertar descripción de la imagen aquí

2.1.2 Mesa vertical:

Según los campos, los diferentes campos se dividen en diferentes tablas según los atributos del campo.Se puede hacer: separar los datos fríos y calientes; reducir la competencia de transición de IO y las dos tablas no se afectan entre sí.

Insertar descripción de la imagen aquí

2.2 División horizontal:

2.2.1 Subbiblioteca horizontal:

Divida los datos de una biblioteca en varias bibliotecas. Resuelve el problema del cuello de botella en el rendimiento causado por una gran cantidad de bibliotecas únicas y una alta concurrencia, y mejora la estabilidad y disponibilidad del sistema.
Insertar descripción de la imagen aquí

2.2.2 Mesa horizontal:

Divida los datos de una tabla en varias tablas (pueden estar en la misma biblioteca). Optimice los problemas de rendimiento causados ​​por un volumen excesivo de datos en una sola tabla; evite la contención de IO y reduzca la probabilidad de bloqueos de tablas;
Insertar descripción de la imagen aquí

2.3 ¿Utiliza subbiblioteca y subtablas en su proyecto?

Hemos establecido instancias de bases de datos según diferentes negocios en spring-boot administrado por spring-cloud y realizamos particiones verticales. Para hacer frente al almacenamiento de datos masivos, nuestro proyecto también utiliza el middleware Mycat para dividir bases de datos y tablas.

Instalación de Mycat e integración Spring-boot:

2.4 ¿Ha encontrado algún desafío técnico al dividir bases de datos y tablas?

Después de dividir la base de datos en tablas, debido a que los datos se almacenarán en varias tablas en varias bases de datos, se encontrarán transacciones distribuidas con ID globales distribuidas, configuraciones de reglas de enrutamiento y problemas de paginación entre nodos;


Resumir

Este artículo clasifica algunas preguntas de la entrevista sobre clústeres, subbases de datos y tablas de Mysql.