Docker部署MySQL?多庫自動(dòng)備份的方法(結(jié)構(gòu)+數(shù)據(jù)完整,適配CentOS)
前言:本文針對(duì)Docker部署的MySQL,實(shí)現(xiàn)「指定多個(gè)數(shù)據(jù)庫」的完整備份(含建庫、建表結(jié)構(gòu)+全量數(shù)據(jù)),適配CentOS服務(wù)器,結(jié)合定時(shí)任務(wù)實(shí)現(xiàn)自動(dòng)備份,附帶測(cè)試方法和避坑指南,全程實(shí)操可直接落地(已適配真實(shí)服務(wù)器環(huán)境)。
一、環(huán)境前提(已適配你的服務(wù)器)
先確認(rèn)服務(wù)器Docker容器信息,避免因容器名錯(cuò)誤導(dǎo)致備份失?。愕姆?wù)器實(shí)測(cè)信息):
# 查看Docker容器信息(執(zhí)行命令) docker ps
你的服務(wù)器核心容器信息(重點(diǎn)關(guān)注MySQL):
- MySQL容器名:mysql(非mysql8,避坑重點(diǎn)?。?/li>
- MySQL版本:8.0.28
- 備份目錄:/home/mysql-safe(已提前創(chuàng)建,無需額外新建)
- 系統(tǒng)環(huán)境:CentOS(騰訊云服務(wù)器,含系統(tǒng)自帶星網(wǎng)關(guān)進(jìn)程,不影響備份)
二、核心需求
- 備份內(nèi)容:指定多個(gè)MySQL數(shù)據(jù)庫,包含「建庫語句+建表結(jié)構(gòu)+全量業(yè)務(wù)數(shù)據(jù)」,可直接恢復(fù)。
- 自動(dòng)備份:先測(cè)試每分鐘備份(便于驗(yàn)證),測(cè)試完成后改為每天凌晨2點(diǎn)自動(dòng)備份。
- 自動(dòng)優(yōu)化:備份文件壓縮存儲(chǔ),自動(dòng)清理7天前舊備份,避免占用過多磁盤空間。
- 穩(wěn)定可靠:不影響MySQL正常運(yùn)行,適配Docker容器環(huán)境,避免出現(xiàn)「No such container」錯(cuò)誤。
三、完整操作步驟(全程實(shí)操)
步驟1:創(chuàng)建/修改多庫備份腳本
腳本路徑固定為 /home/mysql-safe/mysql_backup.sh,已適配你的備份目錄和容器名,只需修改2個(gè)關(guān)鍵參數(shù)即可使用。
# 編輯腳本(執(zhí)行命令) vi /home/mysql-safe/mysql_backup.sh
腳本內(nèi)容(復(fù)制粘貼,修改密碼和數(shù)據(jù)庫名即可):
#!/bin/bash # ===================== 需修改的2個(gè)關(guān)鍵參數(shù) ===================== CONTAINER_NAME="mysql" # 你的MySQL容器名(固定,無需改) MYSQL_ROOT_PASSWORD="你的MySQL真實(shí)密碼" # 替換為你的root密碼 BACKUP_DIR="/home/mysql-safe" # 備份目錄(固定,無需改) DATABASES="db1 db2 db3" # 多個(gè)要備份的數(shù)據(jù)庫,用空格隔開 # ============================================================== # 自動(dòng)創(chuàng)建備份目錄(防止目錄不存在) mkdir -p $BACKUP_DIR # 備份文件命名(含時(shí)間戳,避免重復(fù)) DATE=$(date +%Y%m%d_%H%M%S) BACKUP_FILE="$BACKUP_DIR/mysql_full_$DATE.sql" # 執(zhí)行多庫完整備份(結(jié)構(gòu)+數(shù)據(jù),無鎖備份不影響業(yè)務(wù)) docker exec $CONTAINER_NAME mysqldump -u root -p$MYSQL_ROOT_PASSWORD \ --single-transaction \ --set-charset \ --databases $DATABASES > $BACKUP_FILE # 壓縮備份文件(節(jié)省磁盤空間) gzip $BACKUP_FILE # 自動(dòng)清理7天前的舊備份(避免磁盤占滿) find $BACKUP_DIR -name "mysql_full_*.sql.gz" -mtime +7 -delete # 輸出備份成功日志 echo "? 多庫完整備份完成($(date +%Y-%m-%d %H:%M:%S)):$BACKUP_FILE.gz" }
步驟2:給腳本添加執(zhí)行權(quán)限
執(zhí)行命令,確保腳本可正常運(yùn)行:
chmod +x /home/mysql-safe/mysql_backup.sh
步驟3:手動(dòng)測(cè)試腳本(關(guān)鍵一步)
先手動(dòng)執(zhí)行腳本,驗(yàn)證備份是否成功,避免定時(shí)任務(wù)配置后無效果:
# 手動(dòng)執(zhí)行備份腳本 /home/mysql-safe/mysql_backup.sh
驗(yàn)證成功標(biāo)準(zhǔn):
- 無報(bào)錯(cuò)信息,輸出「? 多庫完整備份完成」。
- 執(zhí)行以下命令,能看到生成的 .sql.gz 壓縮備份文件:
ls -lh /home/mysql-safe/
步驟4:配置定時(shí)任務(wù)(先測(cè)試,后正式)
使用crontab配置定時(shí)任務(wù),先設(shè)置「每分鐘備份」便于測(cè)試,測(cè)試無誤后改為「每天凌晨2點(diǎn)備份」。
4.1 編輯定時(shí)任務(wù)
crontab -e
4.2 添加定時(shí)任務(wù)(當(dāng)前測(cè)試版:每分鐘備份)
你的服務(wù)器crontab已存在騰訊云星網(wǎng)關(guān)進(jìn)程(無需刪除,不影響),新增以下一行即可:
# 騰訊云系統(tǒng)自帶進(jìn)程(無需修改,保留) */5 * * * * flock -xn /tmp/stargate.lock -c '/usr/local/qcloud/stargate/admin/start.sh > /dev/null 2>&1 &' # MySQL多庫自動(dòng)備份(測(cè)試版:每分鐘執(zhí)行一次) */1 * * * * /home/mysql-safe/mysql_backup.sh >> /home/mysql-safe/backup.log 2>&1
說明:日志會(huì)輸出到 /home/mysql-safe/backup.log,便于查看備份是否正常。
4.3 驗(yàn)證定時(shí)任務(wù)是否生效
# 查看當(dāng)前定時(shí)任務(wù)列表 crontab -l
能看到新增的MySQL備份任務(wù),即為生效。
四、測(cè)試驗(yàn)證方法
配置好每分鐘備份后,等待1-2分鐘,通過以下命令驗(yàn)證效果:
- 查看備份文件(每分鐘新增1個(gè)壓縮文件):
ls -lh /home/mysql-safe/
- 查看實(shí)時(shí)備份日志(確認(rèn)無報(bào)錯(cuò)):
tail -f /home/mysql-safe/backup.log
若日志持續(xù)輸出「?jìng)浞萃瓿伞?,且有新增備份文件,說明測(cè)試成功。
五、正式環(huán)境配置(測(cè)試完成后必做)
每分鐘備份僅用于測(cè)試,測(cè)試無誤后,務(wù)必修改為「每天凌晨2點(diǎn)備份」,避免頻繁備份占用資源:
# 重新編輯定時(shí)任務(wù) crontab -e # 將測(cè)試版定時(shí)任務(wù)替換為正式版(每天凌晨2點(diǎn)執(zhí)行) 0 2 * * * /home/mysql-safe/mysql_backup.sh >> /home/mysql-safe/backup.log 2>&1
六、備份恢復(fù)方法(備用)
若需恢復(fù)備份,執(zhí)行以下步驟(完整恢復(fù)指定多庫的結(jié)構(gòu)和數(shù)據(jù)):
# 1. 解壓備份文件(替換為你的備份文件名) gzip -d /home/mysql-safe/mysql_full_20260403_xxxxxx.sql.gz # 2. 執(zhí)行恢復(fù)命令(容器名固定為mysql,替換密碼和備份文件名) docker exec -i mysql mysql -uroot -p你的密碼 < /home/mysql-safe/mysql_full_20260403_xxxxxx.sql
恢復(fù)完成后,登錄MySQL即可驗(yàn)證數(shù)據(jù)和結(jié)構(gòu)是否完整。
七、避坑指南(重點(diǎn)?。?/h2>
- 坑1:容器名錯(cuò)誤,報(bào)「No such container」。解決方案:確認(rèn)容器名為mysql(而非mysql8),腳本中CONTAINER_NAME固定為mysql。
- 坑2:腳本無執(zhí)行權(quán)限,報(bào)「Permission denied」。解決方案:執(zhí)行chmod +x /home/mysql-safe/mysql_backup.sh授權(quán)。
- 坑3:備份目錄不存在,備份失敗。解決方案:腳本已添加mkdir -p $BACKUP_DIR,無需手動(dòng)創(chuàng)建。
- 坑4:定時(shí)任務(wù)不生效。解決方案:確認(rèn)crontab配置正確,可通過crontab -l查看,重啟crond服務(wù)(systemctl restart crond)。
八、總結(jié)
本文實(shí)現(xiàn)了Docker部署MySQL的多庫自動(dòng)備份,適配你的CentOS騰訊云服務(wù)器,核心亮點(diǎn):
- 適配性強(qiáng):已根據(jù)你的服務(wù)器容器信息(mysql容器名、備份目錄)配置,修改密碼和數(shù)據(jù)庫名即可使用。
- 功能完整:支持多庫備份、結(jié)構(gòu)+數(shù)據(jù)完整、壓縮存儲(chǔ)、自動(dòng)清理舊備份。
- 易操作:全程命令復(fù)制即用,測(cè)試+正式配置清晰,新手也能快速落地。
- 穩(wěn)定可靠:無鎖備份不影響業(yè)務(wù),定時(shí)任務(wù)結(jié)合日志,便于排查問題。
測(cè)試完成后記得切換到正式定時(shí)任務(wù),避免頻繁備份占用服務(wù)器資源~
到此這篇關(guān)于Docker部署MySQL 多庫自動(dòng)備份(結(jié)構(gòu)+數(shù)據(jù)完整,適配CentOS)的文章就介紹到這了,更多相關(guān)docker mysql多庫自動(dòng)備份內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Docker MySQL每天定時(shí)自動(dòng)備份的實(shí)現(xiàn)方法
- docker環(huán)境調(diào)用mysqldump進(jìn)行數(shù)據(jù)備份方式
- docker啟動(dòng)mysql并映射數(shù)據(jù)目錄(含備份腳本)
- Docker?下MySQL數(shù)據(jù)庫的備份和恢復(fù)的操作方法
- 如何使用Docker恢復(fù)Mysql8備份的Data數(shù)據(jù)
- docker 使用mysqldump命令備份導(dǎo)出項(xiàng)目中的mysql數(shù)據(jù)
- docker環(huán)境下數(shù)據(jù)庫的備份(postgresql, mysql) 實(shí)例代碼
相關(guān)文章
淺談docker運(yùn)行nginx為什么要使用daemon off
這篇文章主要介紹了淺談docker運(yùn)行nginx為什么要使用daemon off,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-01-01
docker中run命令30個(gè)常用參數(shù)詳解和示例
這篇文章主要給大家介紹了關(guān)于docker中run命令30個(gè)常用參數(shù)的相關(guān)資料,docker?run命令是Docker中最常用的命令之一,用于創(chuàng)建并啟動(dòng)一個(gè)新的容器實(shí)例,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-01-01
docker-compose容器互相連接的實(shí)現(xiàn)
本文主要介紹了docker-compose容器互相連接的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03
詳解如何將java項(xiàng)目打包成docker鏡像并且可運(yùn)行
java?項(xiàng)目打包成?Docker?可運(yùn)行的鏡像,其目的是便于運(yùn)用docker容器來管理項(xiàng)目,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2024-11-11
基于iptables的Docker端口白名單控制實(shí)現(xiàn)
本文主要介紹了通過iptables為Docker?Compose部署的容器設(shè)置宿主機(jī)端口IP白名單,強(qiáng)調(diào)規(guī)則順序與持久化配置,提供單端口和multiport兩種實(shí)現(xiàn)方式,感興趣的可以了解一下2025-07-07
在Docker中部署Confluence和jira-software的方法步驟
這篇文章主要介紹了在Docker中部署Confluence和jira-software的方法步驟,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-06-06
使用rpm安裝指定版本docker(1.12.6)的詳細(xì)步驟
為了防止安裝高版本的docker引發(fā)的錯(cuò)誤,需要安裝1.12.6版本的docker,下面小編給大家?guī)砹耸褂胷pm安裝指定版本的docker(1.12.6)的步驟,感興趣的朋友一起看看吧2021-08-08

