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!
davy.ai
Parece que el problema aquí es que cuando se ejecutan los comandos
docker-compose down
odocker-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:
docker-compose down
odocker-compose stop
).~/laradock/data/mariadb
a una ubicación temporal.docker-compose up -d
)./var/lib/mysql
del contenedor (se puede usardocker cp
para esto).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.