Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

933
Vistas
Cómo recuperar datos MySQL del contenedor Docker

Estaba ejecutando la instancia de mariadb en el kit de herramientas de Windows Docker. Hice un cambio env vaiable en el contenedor mariaDB usando kitematic. Ahora ha recreado una instancia que pierde toda mi base de datos. ¿Hay alguna manera de recuperarse de esto?

Comprobado si hay tres volúmenes pendientes, y hay pocos

volumen acoplable ls -f colgando = verdadero

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Recuperé los datos usando los volúmenes colgantes. El enfoque es el siguiente.

Primero obtenga la lista de volúmenes pendientes.

 $ docker volume ls -f dangling=true DRIVER VOLUME NAME local 6f79b6329d98379495a284287e32a7a57605483dd7bf7fa19924fb2a98fb1d19 local 47bb077ef6f6df9f56bd30c35eeb45f35e62213d2c50db6f078bfdeeee6698ec

Luego lo montó en un contenedor de Ubuntu (para que pueda ingresar al directorio y verificar qué hay allí, ya que no hay otra forma de hacer esto cuando usa Docker Tool Box en Windows)

 $ docker run --name tempContainer1-UBUNTU -v 6f79b6329d98379495a284287e32a7a57605483dd7bf7fa19924fb2a98fb1d19:/var/lib/backup -t -i ubuntu /bin/bash

Entonces estarás dentro de la fiesta del contenedor recién creado. Vaya al directorio recién montado y verifique el contenido

 $cd /var/lib/backup $ls $aria_log.00000001 aria_log_control ib_buffer_pool ib_logfile0 ib_logfile1 ibdata1 ibtmp1 multi-master.info mysql performance_schema -- once you are sure directory data is what you require, make a zip file of the folder $apt-get update $apt-get install zip $cd .. $zip -r backup.zip backup

En otro terminal desde el host, copie el contenido del contenedor backup.zip al host

 $docker cp tempContainer1-UBUNTU:/var/lib/backup.zip .

A continuación, cree un archivo de composición acoplable como el siguiente y monte la carpeta de copia de seguridad como directorio de datos. Ejecute esto en el host de Linux, ya que este montaje no funcionará como se esperaba para mysql en Windows.

 version: "3.2" services: mysql: image: mariadb:10.4.12 restart: always ports: - "3306:3306" command: mysqld --innodb-flush-method=littlesync --innodb-use-native-aio=ON --log_bin=ON volumes: - ./backup_data_folder:/var/lib/mysql environment: MYSQL_ROOT_PASSWORD: somepassword TZ: Asia/Singapore networks: - frontend container_name: maria networks: frontend:

Comienzo

 $docker-compose up

Una vez que esté arriba, desde otra terminal, ingrese al contenedor recién creado

 $docker exec -t -i maria /bin/bash -- Take dump of all the DBS $mysqldump -u root -p --all-databases > alldb.sql

Copie el contenido del volcado al host desde otro terminal desde el host

 $docker cp maria:/alldb.sql .

Ahora este archivo sql es un volcado completo, restáurelo como de costumbre en su base de datos mysql o contenedor.

 mysql -u root -p < alldb.sql
over 4 years ago · Santiago Trujillo Denunciar

0

Recientemente tuve que enfrentar el mismo problema por un contenedor de wordpress perdido y seguí las instrucciones de Don. Sin embargo, como había muchos volúmenes pendientes, tuve que optimizar el proceso. Logré una forma de hacerlo más simple, en la misma terminal, lo que resultó en los siguientes pasos:

 docker volume ls -f dangling=true DRIVER VOLUME NAME local 43277666c8bc3da0b585d90952c2303226c92c6c6a561007c0c7ee00b6da817e local 4fde3ea412e54a1b8b42fce6dae5de5135b9fd12933b020b43bd482cd5fd2225 local 52074ccfd62fb83b8b40cff5f8024215b34f79ad09b630e067ec732f811f798c ...

Luego, para cada contenedor, ejecute la siguiente instrucción, reemplazando 43277666c8bc3d... con cada NOMBRE DE VOLUMEN encontrado. Esta instrucción eliminará los contenedores maria-restore anteriores, si existen, creará uno nuevo y lo adjuntará:

 docker container ls -a -q --filter "name=maria-restore" && docker container rm -f maria-restore; docker run --name maria-restore -v 43277666c8bc3da0b585d90952c2303226c92c6c6a561007c0c7ee00b6da817e:/var/lib/mysql -d mariadb:10.4.12 mysqld --innodb-flush-method=littlesync --innodb-use-native-aio=ON --log_bin=ON && docker exec -it maria-restore bash

Si no era un volumen mysql, fallará y saldrá inmediatamente. Si es un volumen mysql, estará dentro del contenedor mariadb. La base de datos ya estará iniciada. Luego puede conectarse a la base de datos para ver si es la correcta y hacer una copia de seguridad:

 root@8b35c8e2c474:/# mysql -uadmin -p root@8b35c8e2c474:/# mysqldump -uadmin -p --all-databases > alldb.sql root@8b35c8e2c474:/# exit

Copie la base de datos respaldada:

 docker cp mysql-restore:/alldb.sql .

Finalmente tendrás que limpiar el contenedor maria-restore :

 docker container ls -a -q --filter "name=maria-restore" && docker container rm -f maria-restore
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda