La versión 5.1.21 del controlador de la base de datos se actualiza a la 5.1.42 y se desencadena el problema de bloqueo del programa.

Escena del crimen

En ese momento, debido a algunas soluciones técnicas, la versión del controlador de la base de datos se cambió de

		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>5.1.21</version>
		</dependency>

actualizado a

		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<scope>runtime</scope>
		</dependency>

spring boot versión 1.5.4.RELEASE, después de comprobar que el uso real es

<dependency>
  <groupId>mysql</groupId>
  <artifactId>mysql-connector-java</artifactId>
  <version>5.1.42</version>
  </dependency>

Después de que la prueba se puso en marcha, la prueba de implementación previa al lanzamiento estuvo bien, pero en lo que respecta a la producción, no sé por qué se atascó.
Después de comparar los cambios de código, intente revertir los cambios modificados y luego vuelva a insertarlos.

Analisis fallido

El fenómeno en ese momento era que el programa estaba atascado, lo que provocaba que el POD se reiniciara continuamente, ELK no tenía registro de errores y la máquina física vio el siguiente registro de nivel de advertencia.

Thu Jun 01 19:19:25 CST 2023 WARN: Establishing SSL connection 

without server's identity verification is not recommended. 

According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ 

requirements SSL connection must be established by default if explicit option isn't set. 

For compliance with existing applications 

not using SSL the verifyServerCertificate property is set to 'false'. 

You need either to explicitly disable SSL by setting useSSL=false, 

or set useSSL=true and provide truststore for server certificate verification.

Hay una cosa a tener en cuenta aquí, MySQL debe indicar si se debe realizar una conexión SSL en versiones superiores.

Los servicios proporcionados por el protocolo SSL principalmente:
1) Autenticar los servidores de los usuarios para garantizar que los datos se envíen al servidor correcto;
2) Cifrar los datos para evitar que se roben durante la transmisión;
3) Mantener la integridad de los datos y verificar si se pierden durante la transmisión. Actualmente
admite dos capas del protocolo SSL: Protocolo de registro SSL (Protocolo de
registro SSL): establecido por el protocolo de alto nivel del protocolo de transmisión (TCP) para proporcionar funciones básicas como encapsulación de datos, compresión, cifrado, etc.
Protocolo (Protocolo de protocolo de enlace SSL): utilizado para establecer el protocolo de registro SSL Antes de la transmisión de datos real, las partes de la comunicación realizan la autenticación de identidad, negocian algoritmos de cifrado
, intercambian claves de cifrado, etc.

No se recomienda establecer una conexión SSL sin autenticación de servidor. Como requiere MySQL 5.5.45+, 5.6.26+ y 5.7.6+, se debe establecer una conexión SSL predeterminada si no se establece una opción explícita. SSL debe deshabilitarse explícitamente configurando useSSL=false, o configure useSSL=true y proporcione un almacén de confianza para la verificación del certificado del servidor.

1.verdadero requiere conexión
2.falso no requiere conexión

Por lo tanto, se recomienda establecer useSSL en falso y, a veces, los problemas encontrados pueden considerarse de esta manera.

autoReconnect=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&zeroDateTimeBehavior=convertToNull

ejemplo

jdbc:mysql://localhost:3306/test?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&zeroDateTimeBehavior=convertToNull

Entonces, ¿qué trampas tiene la base de datos MySQL 5.1.42?

  • MySQL 5.1.42 es una versión estable que se lanzó durante más de diez años a partir de septiembre de 2021.
  • Dado que es una versión con soporte a largo plazo, se han corregido muchos errores anteriores y MySQL 5.1.42 no presenta errores nuevos.
  • Sin embargo, al igual que otros programas, MySQL 5.1.42 puede tener errores conocidos.
  • Los siguientes son algunos errores conocidos de MySQL 5.1.42:
    • En algunos casos, MySQL 5.1.42 puede rechazar la solicitud porque se usó el conjunto de caracteres o la intercalación incorrectos al crear la tabla .

    • MySQL 5.1.42 puede fallar o bloquearse bajo ciertas condiciones. Estos problemas pueden estar relacionados con bloqueos u operaciones simultáneas .

    • Puede haber problemas de rendimiento con el optimizador de consultas en MySQL 5.1.42, especialmente cuando se procesan consultas complejas.

    • En MySQL 5.1.42, ciertos tipos de datos binarios pueden generar resultados incorrectos.

    • En general, MySQL 5.1.42 es una versión estable y se ha probado y verificado durante mucho tiempo.

    • Si necesita usar una versión anterior de MySQL, considere usar MySQL 5.1.43 o posterior.

¿Cuáles son los errores en mysql-connect-java 5.1.42?

  • mysql-connect-java es una biblioteca de Java para conectarse a bases de datos MySQL.
  • mysql-connect-java 5.1.42 es una versión con soporte a largo plazo que se lanzó durante más de diez años a partir de septiembre de 2021.
  • Dado que es una versión con soporte a largo plazo, se han corregido muchos errores anteriores y mysql-connect-java 5.1.42 no presenta errores nuevos.
  • Sin embargo, al igual que otros programas, mysql-connect-java 5.1.42 puede tener errores conocidos.
  • Aquí hay algunos errores conocidos de mysql-connect-java 5.1.42:
    • En algunos casos, mysql-connect-java 5.1.42 puede rechazar una solicitud porque se usó el conjunto de caracteres o la intercalación incorrectos al crear la tabla.
    • mysql-connect-java 5.1.42 puede fallar o bloquearse en determinadas circunstancias. Estos problemas pueden estar relacionados con bloqueos u operaciones simultáneas.
    • Puede haber problemas de rendimiento con el optimizador de consultas en mysql-connect-java 5.1.42, especialmente cuando se procesan consultas complejas.
    • En mysql-connect-java 5.1.42, algunos tipos de datos binarios podrían generar resultados incorrectos.
  • En general, mysql-connect-java 5.1.42 es una versión estable y ha sido probada y verificada durante mucho tiempo.
  • Si necesita usar una versión anterior de MySQL, considere usar mysql-connect-java 5.1.43 o posterior.

Parece que es muy probable que esta sea la causa. Por alguna razón, el proyecto intentó modificar el conjunto de caracteres y la intercalación.

Casualmente, volví a actualizar a esta versión.

advertencia

En el futuro, después de que el plan de prueba de modificación del código no sea válido, debe recordar volver a cambiar el código y no darlo por sentado.
Las reglas de intercalación de la base de datos no deben modificarse fácilmente; si se modifican, pueden afectar la coincidencia de datos que distingue entre mayúsculas y minúsculas.
Para actualizar la versión de la base de datos, debe modificar los parámetros de conexión de la URL de JDBC.

Artículos relacionados

Al conectarse a la base de datos, agregue useSSL=false después de la URL

Supongo que te gusta

Origin blog.csdn.net/hadues/article/details/130996363
Recomendado
Clasificación