es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Laradock – No se puede leer la carpeta de datos de mariadb

He creado una aplicación Laravel con Laradock. Tengo problemas con el contenedor de mariadb. Este es el archivo docker-compose.yml:

mariadb:
      build:
        context: ./mariadb
        args:
          - http_proxy
          - https_proxy
          - no_proxy
          - MARIADB_VERSION=${MARIADB_VERSION}
      volumes:
        - ${DATA_PATH_HOST}/mariadb:/var/lib/mysql
        - ${MARIADB_ENTRYPOINT_INITDB}:/docker-entrypoint-initdb.d
      environment:
        - TZ=${WORKSPACE_TIMEZONE}
        - MYSQL_DATABASE=${MARIADB_DATABASE}
        - MYSQL_USER=${MARIADB_USER}
        - MYSQL_PASSWORD=${MARIADB_PASSWORD}
        - MYSQL_ROOT_PASSWORD=${MARIADB_ROOT_PASSWORD}
      networks:
        - backend
      restart: always

${DATA_PATH_HOST} es ~/laradock/data.

Puedo leer la base de datos con phpmyadmin, con muchos datos. Después de un docker-compose down o docker-compose stop, la base de datos está vacía, pero la carpeta ~/laradock/data/mariadb y (dentro del contenedor) /var/lib/mysql tienen este archivo:

total 121M
-rw-rw---- 1 systemd-coredump systemd-coredump  32K Dec  2 13:10 aria_log.00000001
-rw-rw---- 1 systemd-coredump systemd-coredump   52 Dec  2 13:10 aria_log_control
-rw-rw---- 1 systemd-coredump systemd-coredump  976 Dec  2 13:10 ib_buffer_pool
-rw-rw---- 1 systemd-coredump systemd-coredump  12M Dec  2 13:10 ibdata1
-rw-rw---- 1 systemd-coredump systemd-coredump  96M Dec  2 13:10 ib_logfile0
-rw-rw---- 1 systemd-coredump systemd-coredump  12M Dec  2 13:10 ibtmp1
-rw-rw---- 1 systemd-coredump systemd-coredump    0 Dec  2 12:32 multi-master.info
drwx------ 2 systemd-coredump systemd-coredump 4.0K Dec  2 12:32 mysql
drwx------ 2 systemd-coredump systemd-coredump 4.0K Dec  2 12:32 performance_schema
drwx------ 2 systemd-coredump systemd-coredump 4.0K Dec  2 12:32 myuserdb

Parece que los datos persisten en la memoria, pero son inaccesibles a través de CLI o phpmyadmin. No hay errores en el registro. ¿Cómo puedo restaurar los datos?

¡Gracias!

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema aquí es que cuando se ejecutan los comandos docker-compose down o docker-compose stop, el contenedor se elimina y se pierden los cambios realizados en la base de datos. Sin embargo, los archivos de datos todavía se almacenan en disco.

    Para restaurar los datos, puede intentar los siguientes pasos:

    1. Primero, asegúrese de que el contenedor esté detenido o eliminado (docker-compose down o docker-compose stop).
    2. Copie los archivos de datos del directorio del host ~/laradock/data/mariadb a una ubicación temporal.
    3. Inicie el contenedor de nuevo (docker-compose up -d).
    4. Una vez que el contenedor esté en ejecución, copie los archivos de datos de vuelta al directorio /var/lib/mysql del contenedor (se puede usar docker cp para esto).
    5. Compruebe si los datos ahora son accesibles a través de phpmyadmin o la línea de comandos.

    Es importante tener en cuenta que los pasos anteriores pueden no siempre funcionar dependiendo del problema en cuestión. Además, es importante asegurarse de que los datos se respalden regularmente para evitar pérdidas en caso de problemas similares.

Comments are closed.