Docker MySql 備份與還原


Docker MySql 備份與還原

1、連接數據庫

 docker exec -it mysql5 mysql -uroot -proot

2、所有數據庫

  • 備份-所有數據庫的表結構及數據
#方法一:所有表結構及數據
docker exec -it mysql5 mysqldump -uroot -proot --all-databases > \
~/data/bak_db_20220808.sql

#方法二:所有表結構及數據
docker exec mysql5 sh -c 'exec mysqldump -uroot -proot --all-databases' > \
~/data/bak_db_20220808.sql
  • 還原-所有數據庫的表結構及數據
#1.將數據從宿主機復制到docker 容器
docker cp ~/data/bak_db_20220808.sql $(docker ps -a |grep mysql5 |awk '{print $1}'):/tmp
#2.進入宿主機,登陸mysql
docker exec -it mysql5 mysql -uroot -proot
#3.創建臨時數據庫
create database tempdb;
#4.切換數據庫
use tempdb;
#5.還原數據庫
source /tmp/bak_db_20220808.sql
#6.刪除臨時數據庫
drop database tempdb;
#7.退出mysql命令模式,並刪除備份文件
docker exec mysql5 sh -c 'rm -rf /tmp/bak_db_20220808.sql'

3、多個數據庫

  • 備份-多個數據庫的表結構及數據
#1.將數據從數據庫中備份到本地
docker exec -it mysql5 mysqldump -uroot -proot --databases bak_db1 bak_db2 bak_db3 > ~/data/bak_db_20220808.sql

4、單個數據庫

  • 備份-單個數據庫的表結構及數據
#1.將數據從數據庫中備份到本地
docker exec -it mysql5 mysqldump -uroot -proot bak_db > ~/data/bak_db_20220808.sql

5、只導數據不導結構

docker exec -it mysql5 mysqldump -t -uroot -proot bak_db > \
~/data/bak_db_20220808.sql

6、只導結構不導數據

docker exec -it mysql5 mysqldump --opt -d -uroot -proot bak_db > \
~/data/bak_db_20220808.sql

7、導出特定表的結構

docker exec -it mysql5 mysqldump --single-transaction -uroot -proot bak_db sys_user \
> ~/data/bak_db_20220808.sql

注意:例5、例6、例7的還原,請參考《所有數據庫-還原》

所有文章均為本人原創,本人寫作的目的就是想幫助對技術有需要的人,所以歡迎同行轉載本站文章,但是希望您注明來源,並留下原文鏈接地址,這是對文章作者的尊重,也是對知識的尊重。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM