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的還原,請參考《所有數據庫-還原》
所有文章均為本人原創,本人寫作的目的就是想幫助對技術有需要的人,所以歡迎同行轉載本站文章,但是希望您注明來源,並留下原文鏈接地址,這是對文章作者的尊重,也是對知識的尊重。