Docker?下MySQL數(shù)據(jù)庫的備份和恢復(fù)的操作方法
docker
最近迷戀使用doker容器,在docker容器進(jìn)行部署MySQL,以前針對容器的安全性一直存在懷疑的態(tài)度,不過如果能夠通過容器也能數(shù)據(jù)庫備份問題,就這樣開始docker容器備份
備份和恢復(fù):
第一種方式
#全部備份 [root@localhost home]# docker exec c_mysql sh -c 'exec mysqldump --all-databases -uroot -p123456 --all-databases' > /home/movice202302.sql #備份數(shù)據(jù)轉(zhuǎn)移 [root@localhost home]# docker cp /home/movice202302.sql salve-mysql:/var # salve-mysql 是容器 #全部恢復(fù) root@6faa12ee2d96:/# mysql -uroot -p123456 < /var/movice202302.sql #查看恢復(fù)數(shù)據(jù)庫情況: mysql -uroot -p123456 -e 'drop database SCHOOL;' mysql -uroot -p123456-e 'SHOW DATABASES;'
恢復(fù):
導(dǎo)出數(shù)據(jù)庫的表結(jié)構(gòu)和表數(shù)據(jù)
mysqldump -uroot -pdbpasswd db_name >db.sql;
[root@localhost home]# docker exec c_mysql sh -c 'exec mysqldump -uroot -p123456 movice_fuli' > /home/movie0216.sql Warning: Using a password on the command line interface can be insecure.
導(dǎo)出數(shù)據(jù)庫表數(shù)據(jù) mysqldump -uroot -pdbpasswd -t db_name >db.sql; root@localhost home]# docker exec c_mysql sh -c 'exec mysqldump -uroot -p123456 -t movice_fuli' > /home/movie.sql 導(dǎo)出數(shù)據(jù)庫表結(jié)構(gòu) mysqldump -uroot -pdbpasswd -d db_name >db.sql; root@localhost home]# docker exec c_mysql sh -c 'exec mysqldump -uroot -p123456 -d movice_fuli' > /home/movie.sql 導(dǎo)出數(shù)據(jù)庫中某個(gè)表的表結(jié)構(gòu) mysqldump -uroot -pdbpasswd -d db_name table_name >db.sql root@localhost home]# docker exec c_mysql sh -c 'exec mysqldump -uroot -p123456 -d movice_fuli user' > /home/movie.sql 導(dǎo)出數(shù)據(jù)庫中某個(gè)表的表結(jié)構(gòu)和表數(shù)據(jù) mysqldump -uroot -pdbpasswd db_name table_name >db.sql; root@localhost home]# docker exec c_mysql sh -c 'exec mysqldump -uroot -p123456 movice_fuli user' > /home/movie.sql
自動(dòng)化備份mysql
1 創(chuàng)建目錄/usr/data用于存放mysql的數(shù)據(jù)存放
root@localhost ~]# cd /usr [root@localhost usr]# ls bin etc games include lib lib64 libexec local sbin share src tmp [root@localhost usr]# mkdir data [root@localhost usr]# ls bin data etc games include lib lib64 libexec local sbin share src tmp [root@localhost usr]# cd data [root@localhost data]# ls [root@localhost data]# touch back_clean.sh [root@localhost data]# touch backup .sh [root@localhost data]# mkdir logs [root@localhost data]# mkdir mysql_bak [root@localhost data]# ls back_clean.sh backup logs mysql_bak [root@localhost data]# rm backup rm:是否刪除普通空文件 "backup"?y [root@localhost data]# touch backup.sh [root@localhost data]# ls back_clean.sh backup.sh logs mysql_bak
2 編輯 備份腳本和清除大于給定期限的備份數(shù)據(jù)backup.sh,back_clearn.sh
vi backup.sh
BACKUP_ROOT=/usr/data/
BACKUP_FILEDIR=$BACKUP_ROOT/mysql_bak
#當(dāng)前日期
DATE=$(date +%Y%m%d)
# 獲取容器
mysqlid=docker ps -aqf "name=c_mysql"
#查詢所有數(shù)據(jù)庫
DATABASES=$(docker exec -i ${mysqlid} mysql -uroot -p123456 -e "show databases" | grep -Ev "Database|sys|information_schema|performance_schema|mysql")
#循環(huán)數(shù)據(jù)庫進(jìn)行備份
for db in $DATABASES
do
echo
if [[ "${db}" =~ "+" ]] || [[ "${db}" =~ "|" ]];then
echo "jump over ${db}"
else
echo ----------$BACKUP_FILEDIR/${db}_$DATE.sql.gz BEGIN----------
docker exec -i ${mysqlid} mysqldump -uroot -p123456 --default-character-set=utf8 -q --lock-all-tables --flush-logs -E -R --triggers -B ${db} | gzip > $BACKUP_FILEDIR/${db}_$DATE.sql.gz
echo ${db}
echo ----------$BACKUP_FILEDIR/${db}_$DATE.sql.gz COMPLETE----------
echo
fi
done
echo "備份完成"vi back_clear.sh
echo ----------CLEAN BEGIN----------
find /usr/data/mysql_bak/ -mtime +7 -name "*.gz" -exec rm -rf {} \;
echo ----------CLEAN COMPLETE---------設(shè)置定時(shí)任務(wù)
利用Linux crontab 進(jìn)行設(shè)置定時(shí)任務(wù)
查看定時(shí)任務(wù)
crotab -l
修改定時(shí)任務(wù)
crontab -e
#每天02:00自動(dòng)清理大于7天的mysql備份 00 2 * * * /usr/data/backup_clean.sh > /usr/data/logs/backup_full_clean.log 2>&1 #每天11:00自動(dòng)備份mysql 00 11 * * * /usr/data/backup.sh > /usr/data/logs/backup.log 2>&1
到此這篇關(guān)于Docker 下MySQL數(shù)據(jù)庫的備份和恢復(fù)的文章就介紹到這了,更多相關(guān)MySQL數(shù)據(jù)庫的備份和恢復(fù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
docker-compose管理容器network與ip問題
這篇文章主要介紹了docker-compose管理容器network與ip問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01
docker測試時(shí)候命令無法補(bǔ)全的解決方法
因?yàn)樽罱趯W(xué)習(xí)使用Docker,所以出現(xiàn)了好多的問題,昨天遇到的一個(gè)問題是在docker測試時(shí)候發(fā)現(xiàn)命令無法補(bǔ)全,通過查找資料最后解決了,現(xiàn)在將方法分享給有需要的人,大家可以參考學(xué)習(xí)。2016-11-11
docker registry安裝簡單命令實(shí)現(xiàn)
這篇文章主要介紹了docker registry安裝詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下2016-10-10
詳解Windows下運(yùn)用Docker部署Node.js開發(fā)環(huán)境
這篇文章主要介紹了詳解Windows下運(yùn)用Docker部署Node.js開發(fā)環(huán)境,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-01-01
Docker Compose安裝部署PostgreSQL數(shù)據(jù)庫的實(shí)現(xiàn)步驟
本文主要介紹了使用DockerCompose在Linux服務(wù)器上部署PostgreSQL,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-12-12
Docker容器動(dòng)態(tài)加載掛載目錄的實(shí)踐
本文主要介紹了Docker容器中動(dòng)態(tài)加載掛載目錄的實(shí)踐,通過掛載目錄,可以將主機(jī)上的文件或目錄與容器中的文件或目錄進(jìn)行關(guān)聯(lián),實(shí)現(xiàn)應(yīng)用程序的靈活性和可擴(kuò)展性,這種方法可以避免容器重啟,減少應(yīng)用程序的停機(jī)時(shí)間,并簡化應(yīng)用程序的部署和管理,使應(yīng)用程序的遷移和擴(kuò)展更加容易2024-10-10
docker+nextcloud搭建個(gè)人云存儲(chǔ)系統(tǒng)的實(shí)現(xiàn)
這篇文章主要介紹了docker+nextcloud搭建個(gè)人云存儲(chǔ)系統(tǒng)的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01
Docker Hub運(yùn)行原理及實(shí)現(xiàn)過程解析
這篇文章主要介紹了Docker Hub運(yùn)行原理及實(shí)現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-10-10

