MySQL - De repente "fallo del enlace de comunicaciones" entre el recipiente ventana acoplable y MySQL

L. Don:

Estoy trabajando en una aplicación acoplable que utiliza MySQL para almacenar grandes bases de datos (que es debido a razones de herencia). Éste se instala en el ordenador central.

Hoy en día yo estaba haciendo trabajos comunes que he estado haciendo durante 1 o 2 meses, y, de repente, no puedo comunicar más con mi base de datos.

El URI de la db ha sido la misma durante meses:jdbc:mysql://localhost:3306/dbname?verifyServerCertificate=false&useSSL=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC

Tan pronto como intento conectar a la base de datos de mi aplicación que se ejecuta en la máquina virtual que reciben:

java.sql.SQLException: Cannot create PoolableConnectionFactory (Communications link failure
The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.)
...
Caused by: java.net.ConnectException: Connection timed out

El código culpable es la siguiente:

private static boolean checkForExistence(String dbName) {
    boolean exists = false;
    BasicDataSource dataSource = new BasicDataSource();

    dataSource.setDriverClassName(JDBC_DRIVER); //com.mysql.cj.jdbc.Driver
    dataSource.setUrl(this.url); //that's the uri provided before
    dataSource.setUsername(USER);
    dataSource.setPassword(PASS);

    Connection conn = null;
    Statement stmnt = null;
    ResultSet dbs = null;
    try {       
        conn = dataSource.getConnection(); //And this is the line that triggers the exception.
        System.out.println(conn!=null);
        dbs = conn.getMetaData().getCatalogs();

        while(dbs.next() && !exists)
            if(dbs.getString(1).equals(dbName))
                exists = true;

    } catch (SQLException e) {
        e.printStackTrace();
    } finally {
        try {
            if(conn != null)
                conn.close();
            if(stmnt != null)
                stmnt.close();
            if(dbs != null)
                dbs.close();
            if(dataSource != null)
                dataSource.close();
        } catch (SQLException e) {
                logger.error(e.getMessage());
                return exists;
        }
    }

    return exists;
}

Probé las siguientes cosas:

  • Desde mi máquina local: telnet <public ip of the VM> 3306-> Conexión Tiempo de espera agotado
  • Desde mi máquina local: mysql -h<public ip of the VM> -u user -p->ERROR 2003 (HY000): Can't connect to MySQL server on 'remoteHostname.com' (110)
  • Desde el interior de la máquina virtual: nc localhost 3306-> puedo entrar.
  • Desde el interior de la máquina virtual: mysql -h127.0.0.1 -u user -p-> puedo entrar.
  • Desde el interior de la máquina virtual: mysql -h<public ip address> -u user -p-> puedo entrar.

Si me quedo netstat -tulpn | grep 3306tengo:

tcp6       0      0 :::3306                 :::*                    LISTEN      -                   
tcp6       0      0 :::33060                :::*                    LISTEN      -  

Esto es my.cnf:

[mysqld]
default_authentication_plugin=mysql_native_password
datadir=/local/user/mysql
socket=/var/lib/mysql/mysql.sock
general_log_file=/var/log/mysql.log
general_log=1
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

Puedo conectar con la base de datos a través de phpMyAdmin , pero creo que esto es debido al hecho de que está utilizando una conexión de socket.

Si puedo comprobar tanto /var/log/mysql.logy /var/log/mysqld.log(esto es el de los errores) no hay pruebas de nada. Básicamente, cuando intento conectar los no muestran nada.

EDIT: Si yo uso la misma configuración para conectar a mi instancia de la máquina local del mysql todo lo bien que funciona. Así que podría estar relacionado con un redes problema? O instane de MySQL de VM Doe no acepta conexión TCP más por alguna razón?

RE-EDIT : El registro /var/log/messagesdescubrí que la máquina anfitriona salió de espacio en disco. A partir de entonces, la interfaz docker0fue en una blocked statey luego disabled statebucle.

Configuración:

  • VM remota con RHEL7
  • 32 núcleos CPU
  • 64 GB de RAM
  • MySQL 8.0.13 - MySQL Community Server - GPL
  • phpMyAdmin 4.8.4
L. Don:

En la sección Re-edición de la cuestión que se especifica nuevos detalles. Todavía no puedo ejecutar la aplicación correctamente con la configuración antigua pero utilizando --network=hostparámetro en docker runresolvieron el problema.

Eso es simplemente una solución. Voy a actualizar esta pregunta con más informaciones.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=220012&siteId=1
Recomendado
Clasificación