搜尋
首頁運維Dockerdocker MySQL實作每天定時自動備份!

這篇文章主要介紹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 &#39;mysqldump: [Warning] Using a password on the command line interface can be insec&#39; 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 &#39;exec mysqldump --all-databases -uroot -p123456 --all-databases&#39; > /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 &#39;exec mysqldump --all-databases -uroot -p123456 --all-databases&#39; > /var/backup/music_`date +)
....

發現指令後面%F`.sql 並沒有顯示,原因是%在裡面為變數了,加上\轉義符,讓保持原來的字元。

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

儲存,測試生效。

以上是docker MySQL實作每天定時自動備份!的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:csdn。如有侵權,請聯絡admin@php.cn刪除
docker image是怎麼存儲的docker image是怎麼存儲的Apr 15, 2025 am 09:54 AM

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

docker打包鏡像怎麼打docker打包鏡像怎麼打Apr 15, 2025 am 09:51 AM

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

docker部署完怎麼使用docker部署完怎麼使用Apr 15, 2025 am 09:48 AM

Docker 部署後使用六個步驟:連接到容器、啟動應用程序、訪問應用程序、安裝軟件、修改文件、持續集成和部署。

怎麼修改docker中容器映射的端口怎麼修改docker中容器映射的端口Apr 15, 2025 am 09:45 AM

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

docker怎麼安裝minisodocker怎麼安裝minisoApr 15, 2025 am 09:42 AM

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

docker重啟慢怎麼解決docker重啟慢怎麼解決Apr 15, 2025 am 09:39 AM

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

docker怎麼刪除標籤鏡像docker怎麼刪除標籤鏡像Apr 15, 2025 am 09:36 AM

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

docker怎麼搭建webdocker怎麼搭建webApr 15, 2025 am 09:33 AM

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

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
4 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
4 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
4 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
1 個月前By尊渡假赌尊渡假赌尊渡假赌

熱工具

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

Safe Exam Browser

Safe Exam Browser

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

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

MantisBT

MantisBT

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

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具