Effettuare il dump di un database MySQL all'interno di un container Docker è una procedura comune per eseguire backup o migrazioni. Di seguito sono descritti i passaggi per realizzare questa operazione.
Prerequisiti
- Docker installato sul sistema
- Un container MySQL attivo
- Accesso a un terminale con privilegi adeguati
1. Identificare il nome del container
Per prima cosa, è necessario individuare il nome o l'ID del container MySQL in esecuzione:
docker ps
Cerca una riga con mysql
o mariadb
nell'immagine e prendi nota del nome del container.
2. Eseguire il dump del database
Puoi eseguire il dump di un database utilizzando il comando mysqldump
all'interno del container.
docker exec -i nome_container \
mysqldump -u root -p nome_database > dump.sql
Questo comando esegue il dump del database nome_database
e lo salva come file dump.sql
sulla macchina host. Ti verrà chiesta la password dell'utente MySQL specificato.
3. Specificare la password direttamente (opzionale)
Per evitare l'inserimento manuale della password (non consigliato in ambienti di produzione), puoi specificarla direttamente:
docker exec -i nome_container \
mysqldump -u root -pPASSWORD nome_database > dump.sql
Nota: non ci deve essere spazio tra -p
e la password.
4. Dump di tutti i database
Per effettuare il dump di tutti i database presenti nel container:
docker exec -i nome_container \
mysqldump -u root -pPASSWORD --all-databases > full_dump.sql
5. Dump compressi
Per risparmiare spazio, puoi comprimere direttamente il dump:
docker exec -i nome_container \
mysqldump -u root -pPASSWORD nome_database \
| gzip > dump.sql.gz
6. Verifica del dump
Puoi visualizzare le prime righe del file di dump per verificarne il contenuto:
head dump.sql
7. Esempio di output
-- MySQL dump 10.13 Distrib 8.0.33, for Linux (x86_64)
--
-- Host: localhost Database: nome_database
-- ------------------------------------------------------
-- Server version 8.0.33
Conclusione
Ora sai come eseguire il dump di un database MySQL da un container Docker. Puoi utilizzare questi comandi per automatizzare i backup o trasferire dati tra ambienti.