這篇文章主要介紹docker MySQL資料庫是如何備份與還原,以及如何實現每天定時自動備份的,希望對需要的朋友有幫助!
docker MySQL資料庫的備份與還原,以及每天定時自動備份
一:備份
檢視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
#方法一:
一步一步來,常規備份,進入容器中,用mysqldump備份。 【推薦學習: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/ #将容器中的备份文件,复制到本地备份文件夹中
顯示如下:
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
方法二:
一步到位,這裡有兩個指令可行
1):(推薦,還原沒問題)
sudo docker exec mysql(容器名) sh -c 'exec mysqldump --all-databases -uroot -p123456 --all-databases' > /var/backup/music_`date +%F`.sql
2):(不推薦,還原有問題)
網路上大多數是這種備份方法,但是我還原有問題,5.7版的可以試試看。
sudo docker exec -it mysql(容器名) mysqldump -uroot -p123456 --all-databases > /var/backup/music_`date +%F`.sql
註:可能版本原因(本人版本8.0),這種備份時沒問題,但是還原會出問題。報錯如下:
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
也可以用進入資料庫,用指令source還原,但是報錯還是會出現,但會忽略,導致最後恢復資料不完整。所有這種不推薦。
二:還原
1):非容器中還原
1:直接指令還原
mysql -uroot -p123456 < /var/backup/emp_2022-03-15.sql
2:進入mysql後source還原
mysql -uroot -p source /var/backup/emp_2022-03-15.sql
2):容器mysql還原
需要進入mysql容器中還原。
#复制备份文件到容器中的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
三:定時任務
1):設定定時任務
crontab -e
內容如下:
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
命令說明:
每天凌晨2點執行
find /backup/ -mtime +1 -name "*.sql" -delete #删除2天前的备份任务,即保留3个版本。根据需要自己选择。
2):定時任務不執行
更新:第二天發現沒有備份文件,查看cron日誌。如沒有,請開啟cron日誌。方法如下:
#编辑系统日志文件 vim /etc/rsyslog.d/50-default.conf #去掉前面的#注释符号 cron.* /var/log/cron.log #重启日志服务 systemctl restart rsyslog.service
查看定時任務顯示
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 +) ....
發現指令後面%F`.sql 並沒有顯示,原因是%在裡面為變數了,加上\轉義符,讓保持原來的字元。
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
儲存,測試生效。
以上是docker MySQL實作每天定時自動備份!的詳細內容。更多資訊請關注PHP中文網其他相關文章!

Docker 鏡像採用分層存儲機制,每一層是對其父層的修改版本,允許鏡像輕鬆共享層以節省存儲空間。鏡像使用 OCI 標準化存儲格式,存儲於本地主機(/var/lib/docker/image)和 Docker 註冊表(如 Docker Hub)。

Docker 鏡像打包指南包括:編寫 Dockerfile,定義鏡像基礎、軟件包和命令。使用 docker build 構建鏡像。使用 docker tag 為鏡像打標籤,指定名稱和版本。如果需要,使用 docker push 將鏡像推送到註冊表。

修改 Docker 容器映射的端口的方法有:使用 --publish 或 -p 標誌重新啟動容器,指定新的映射端口。使用 Docker Compose 修改 docker-compose.yml 文件中的 ports 部分。通過 Docker Engine API 使用 cURL 命令修改端口映射。

使用 Docker 安裝 MinIO 步驟:安裝 Docker拉取 MinIO 鏡像運行 MinIO 容器配置 MinIO,訪問網頁界面輸入用戶名和密碼創建存儲桶上傳對象訪問對象

Docker 重啟慢的原因及其解決方法:卷掛載:減少卷的數量和大小,使用稀疏卷。容器數量:減少同時運行的容器,使用編排工具。鏡像大小:使用較小基本鏡像,緩存鏡像,優化圖像分發。資源限制:增加主機資源,限制容器資源使用,減少容器數量。數據量:將數據移出容器,使用分塊存儲卷,縮小容器大小。

要刪除 Docker 鏡像標籤,請按照以下步驟操作:登錄 Docker 註冊表。列出鏡像標籤。使用 docker image tag 命令刪除標籤,語法:docker image tag <image-name> <new-image-name> --rm <tag>。驗證標籤已刪除。

Docker 中搭建 Web 應用程序的步驟:創建 Dockerfile,定義基礎鏡像和應用程序代碼。構建 Docker 鏡像。使用端口映射運行 Docker 容器。通過訪問 localhost 或服務器 IP 地址和端口 80 測試應用程序。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

Dreamweaver CS6
視覺化網頁開發工具

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

SublimeText3 Linux新版
SublimeText3 Linux最新版

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

WebStorm Mac版
好用的JavaScript開發工具