Heim > Betrieb und Instandhaltung > Docker > Docker MySQL implementiert jeden Tag ein automatisches Backup!

Docker MySQL implementiert jeden Tag ein automatisches Backup!

藏色散人
Freigeben: 2022-12-08 20:33:01
nach vorne
3067 Leute haben es durchsucht

In diesem Artikel wird hauptsächlich beschrieben, wie Sie die Docker-MySQL-Datenbank sichern und wiederherstellen und wie Sie jeden Tag eine automatische Sicherung implementieren. Ich hoffe, dass er Freunden in Not hilfreich sein wird!

Sicherung und Wiederherstellung der Docker-MySQL-Datenbank sowie täglich geplante automatische Sicherung

Eins: Sicherung

Docker-MySQL anzeigen

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
Nach dem Login kopieren

Methode eins:

Schritt für Schritt, regelmäßige Sicherung, betreten Sie den Container und verwenden Sie mysqldump sichern. [Empfohlenes Lernen: Docker-Video-Tutorial]

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/
#将容器中的备份文件,复制到本地备份文件夹中
Nach dem Login kopieren

wird wie folgt angezeigt:

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
Nach dem Login kopieren

Methode 2:

Ein Schritt, hier sind zwei mögliche Befehle

1): (Empfohlen, Wiederherstellung ist kein Problem)

sudo docker exec mysql(容器名) sh -c 'exec mysqldump --all-databases -uroot -p123456 --all-databases' > /var/backup/music_`date +%F`.sql
Nach dem Login kopieren

2) : (Nicht empfohlen, es gibt ein Problem mit der Wiederherstellung)

Die meisten Sicherungsmethoden im Internet funktionieren auf diese Weise, aber ich habe ein Problem mit der Wiederherstellung. Sie können die Version 5.7 ausprobieren.

sudo docker exec -it mysql(容器名) mysqldump -uroot -p123456 --all-databases > /var/backup/music_`date +%F`.sql
Nach dem Login kopieren

Hinweis: Es kann an der Version liegen (meine Version ist 8.0). Es gibt kein Problem mit dieser Art der Sicherung, aber es wird Probleme mit der Wiederherstellung geben. Der Fehler wird wie folgt gemeldet:

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 &#39;mysqldump: [Warning] Using a password on the command line interface can be insec&#39; at line 1
Nach dem Login kopieren

Sie können auch die Datenbank aufrufen und die Befehlsquelle zum Wiederherstellen verwenden, der Fehler wird jedoch weiterhin angezeigt, aber ignoriert, was letztendlich zu einer unvollständigen Datenwiederherstellung führt. All dies ist nicht zu empfehlen. Zwei: Wiederherstellen wiederherstellen.

mysql -uroot -p123456 < /var/backup/emp_2022-03-15.sql
Nach dem Login kopieren

Drei: Geplante Aufgaben

1): Geplante Aufgaben festlegen

mysql -uroot -p
source /var/backup/emp_2022-03-15.sql
Nach dem Login kopieren

Der Inhalt ist wie folgt:

#复制备份文件到容器中的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
Nach dem Login kopieren

Befehlsbeschreibung:

Jeden Tag um 2 Uhr morgens ausführen

crontab -e
Nach dem Login kopieren

2): Geplante Aufgaben werden nicht ausgeführt

Update: Zweitens wurde festgestellt, dass keine Sicherungsdatei vorhanden war. Überprüfen Sie daher das Cron-Protokoll. Wenn nicht, aktivieren Sie bitte das Cron-Protokoll. Die Methode lautet wie folgt:

0 2 * * * find /backup/ -mtime +1 -name "*.sql" -delete && sudo docker exec mysql sh -c &#39;exec mysqldump --all-databases -uroot -p123456 --all-databases&#39; > /var/backup/music_`date +%F`.sql
Nach dem Login kopieren

Überprüfen Sie die Anzeige der geplanten Aufgabe

find /backup/ -mtime +1 -name "*.sql" -delete
#删除2天前的备份任务,即保留3个版本。根据需要自己选择。
Nach dem Login kopieren

und stellen Sie fest, dass %F`.sql nach dem Befehl nicht angezeigt wird. Der Grund dafür ist, dass % darin eine Variable ist und ein Escape-Zeichen hinzugefügt wird Behalten Sie die Originalcharaktere bei.

#编辑系统日志文件
vim /etc/rsyslog.d/50-default.conf
#去掉前面的#注释符号
cron.*      /var/log/cron.log
#重启日志服务
systemctl restart rsyslog.service
Nach dem Login kopieren

Speichern und der Test wird wirksam.

Das obige ist der detaillierte Inhalt vonDocker MySQL implementiert jeden Tag ein automatisches Backup!. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:csdn.net
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage