


docker MySQL réalise une sauvegarde automatique chaque jour !
Cet article explique principalement comment sauvegarder et restaurer la base de données Docker MySQL, et comment mettre en œuvre une sauvegarde automatique chaque jour. J'espère que cela sera utile aux amis dans le besoin !
Sauvegarde et restauration de la base de données Docker MySQL, ainsi que sauvegarde automatique planifiée quotidiennement
Première : Sauvegarde
Afficher Docker mysql
ubuntu@ubuntu:~$ sudo docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a30ead8a26fc mysql:8.0.27 "docker-entrypoint.s…" 10 seconds ago Up 7 seconds 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp mysql
Première méthode :
Étape par étape, sauvegarde régulière, entrez dans le conteneur et utilisez mysqldump pour sauvegarder. [Apprentissage recommandé : tutoriel vidéo docker]
sudo docker exec -it mysql /bin/bash #进入mysql容器 mysqldump -uroot -p123456 --all-databases > emp_`date +%F`.sql #在容器中备份所有数据库,并以日期命名 exit #退出容器 sudo docker cp mysql:emp_2022-03-17.sql /var/backup/ #将容器中的备份文件,复制到本地备份文件夹中
s'affiche comme suit :
ubuntu@ubuntu:~$ sudo docker exec -it mysql /bin/bash root@a30ead8a26fc:/# mysqldump -uroot -p123456 --all-databases > emp_`date +%F`.sql mysqldump: [Warning] Using a password on the command line interface can be insecure. root@a30ead8a26fc:/# exit exit ubuntu@ubuntu:~$ sudo docker cp mysql:emp_2022-03-17.sql /var/backup/ ubuntu@ubuntu:~$ ll /var/backup/ total 11492 drwxrwxrwx 2 root root 4096 Mar 17 15:45 ./ drwxr-xr-x 14 root root 4096 Mar 14 17:49 ../ -rw-r--r-- 1 root root 3915599 Mar 17 15:42 emp_2022-03-17.sql
Méthode 2 :
Une étape, deux commandes sont disponibles
1) : (Recommandé, la restauration ne pose aucun problème)
sudo docker exec mysql(容器名) sh -c 'exec mysqldump --all-databases -uroot -p123456 --all-databases' > /var/backup/music_`date +%F`.sql
2) : (Non recommandé, il y a un problème avec la restauration)
La plupart des méthodes de sauvegarde sur Internet sont de cette façon, mais j'ai un problème avec la restauration. Vous pouvez essayer la version 5.7.
sudo docker exec -it mysql(容器名) mysqldump -uroot -p123456 --all-databases > /var/backup/music_`date +%F`.sql
Remarque : cela peut être dû à la version (ma version est 8.0). Il n'y a aucun problème avec ce type de sauvegarde, mais il y aura des problèmes avec la restauration. L'erreur est signalée comme suit :
ubuntu@ubuntu:~$ sudo mysql -uroot -p < emp_2022-03-15.sql Enter password: ERROR 1064 (42000) at line 1: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'mysqldump: [Warning] Using a password on the command line interface can be insec' at line 1
Vous pouvez également entrer dans la base de données et utiliser la source de commande pour restaurer, mais l'erreur apparaîtra toujours, mais sera ignorée, ce qui entraînera finalement une récupération incomplète des données. Tout cela n'est pas recommandé.
Deux : Restaurer
1) : Restaurer dans un non-conteneur
1 : Commande directe pour restaurer
mysql -uroot -p123456 < /var/backup/emp_2022-03-15.sql
2 : Restauration de la source après avoir entré mysql
mysql -uroot -p source /var/backup/emp_2022-03-15.sql
2) : Restauration du conteneur mysql
Besoin d'entrer dans le conteneur mysql à restaurer.
#复制备份文件到容器中的var目录 sudo docker cp /var/backup/emp_2022-03-17.sql mysql:/var #进入容器 sudo docker exec -it mysql bin/bash #进入mysql mysql -uroot -p #使用备份sql恢复数据库 source /var/backup/emp_2022-03-15.sql #或者不进入mysql直接容器中还原 mysql -uroot -p123456 < /var/backup/emp_2022-03-15.sql
Trois : Tâches planifiées
1) : Définir des tâches planifiées
crontab -e
Le contenu est le suivant :
0 2 * * * find /backup/ -mtime +1 -name "*.sql" -delete && sudo docker exec mysql sh -c 'exec mysqldump --all-databases -uroot -p123456 --all-databases' > /var/backup/music_`date +%F`.sql
Description de la commande :
Exécutée à 2 heures du matin tous les jours
find /backup/ -mtime +1 -name "*.sql" -delete #删除2天前的备份任务,即保留3个版本。根据需要自己选择。
2) : Les tâches planifiées ne sont pas exécutées
Mise à jour : Deuxièmement, il a été découvert qu'il n'y avait pas de fichier de sauvegarde, alors vérifiez le journal cron. Sinon, veuillez activer le journal cron. La méthode est la suivante :
#编辑系统日志文件 vim /etc/rsyslog.d/50-default.conf #去掉前面的#注释符号 cron.* /var/log/cron.log #重启日志服务 systemctl restart rsyslog.service
Vérifiez l'affichage de la tâche planifiée
cat /var/log/cron.log .... CRON[2015636]: (root) CMD (find /backup/ -mtime +1 -name "*.sql" -delete && sudo docker exec mysql sh -c 'exec mysqldump --all-databases -uroot -p123456 --all-databases' > /var/backup/music_`date +) ....
et constatez que %F`.sql après la commande n'est pas affiché. La raison est que % est une variable et qu'un caractère d'échappement y est ajouté. conserver les personnages originaux.
0 2 * * * find /backup/ -mtime +1 -name "*.sql" -delete && sudo docker exec mysql sh -c 'exec mysqldump --all-databases -uroot -p123456 --all-databases' > /var/backup/music_`date +\%F`.sql
Enregistrez et le test prendra effet.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Les étapes pour mettre à jour une image Docker sont les suivantes: Tirez la dernière étiquette d'image Nouvelle image Supprimer l'ancienne image pour une balise spécifique (facultative) Redémarrez le conteneur (si nécessaire)

Quatre façons de quitter Docker Container: Utilisez Ctrl D dans le terminal de conteneur Entrez la commande d'exit dans le terminal de conteneur Utilisez Docker Stop & lt; contener_name & gt; Commande utilise docker kill & lt; contener_name & gt; commande dans le terminal hôte (sortie de force)

Méthodes de copie de fichiers en hôtes externes dans Docker: Utilisez la commande docker cp: exécuter docker cp [options] & lt; Container Path & gt; & lt; Host Path & gt;. Utilisation de volumes de données: créez un répertoire sur l'hôte et utilisez le paramètre -v pour monter le répertoire dans le conteneur lors de la création du conteneur pour obtenir la synchronisation de fichiers bidirectionnels.

Comment redémarrer le conteneur Docker: Obtenez l'ID de conteneur (Docker PS); Arrêtez le conteneur (docker stop & lt; contener_id & gt;); Démarrer le conteneur (docker start & lt; contener_id & gt;); Vérifiez que le redémarrage réussit (Docker PS). Autres méthodes: Docker Compose (redémarrage Docker-Compose) ou API Docker (voir Docker Documentation).

Comment utiliser Docker Desktop? Docker Desktop est un outil pour exécuter des conteneurs Docker sur les machines locales. Les étapes à utiliser incluent: 1. Installer Docker Desktop; 2. Démarrer Docker Desktop; 3. Créer une image Docker (à l'aide de DockerFile); 4. Build Docker Image (en utilisant Docker Build); 5. Exécuter Docker Container (à l'aide de Docker Run).

Méthode de visualisation du processus docker: 1. Commande Docker CLI: Docker PS; 2. Commande CLI Systemd: Docker d'état SystemCTL; 3. Docker Compose CLI Commande: Docker-Compose PS; 4. Process Explorer (Windows); 5. / Répertoire proc (Linux).

Vous pouvez interroger le nom du conteneur Docker en suivant les étapes: répertorier tous les conteneurs (Docker PS). Filtrez la liste des conteneurs (à l'aide de la commande grep). Obtient le nom du conteneur (situé dans la colonne "Noms").

Dépannage des étapes pour la construction d'image Docker échouée: cochez la syntaxe Dockerfile et la version de dépendance. Vérifiez si le contexte de construction contient le code source et les dépendances requis. Affichez le journal de construction pour les détails d'erreur. Utilisez l'option - cibler pour créer une phase hiérarchique pour identifier les points de défaillance. Assurez-vous d'utiliser la dernière version de Docker Engine. Créez l'image avec --t [Image-Name]: Debug Mode pour déboguer le problème. Vérifiez l'espace disque et assurez-vous qu'il est suffisant. Désactivez SELINUX pour éviter les interférences avec le processus de construction. Demandez de l'aide aux plateformes communautaires, fournissez Dockerfiles et créez des descriptions de journaux pour des suggestions plus spécifiques.
