docker 中 MySQL 備份及恢復

mjczz發表於2020-05-11

docker hub mysql映象說明

Creating database dumps

Most of the normal tools will work, although their usage might be a little convoluted in some cases to ensure they have access to the mysqld server. A simple way to ensure this is to use docker exec and run the tool from the same container, similar to the following:

備份所有資料

$ docker exec some-mysql sh -c 'exec mysqldump --all-databases -uroot -p"$MYSQL_ROOT_PASSWORD"' > /some/path/on/your/host/all-databases.sql

備份指定資料庫

$ docker exec some-mysql sh -c 'exec mysqldump --databases db1 -uroot -p"$MYSQL_ROOT_PASSWORD"' > /some/path/on/your/host/db1.sql

Restoring data from dump files

For restoring data. You can use docker exec command with -i flag, similar to the following:

$ docker exec -i some-mysql sh -c 'exec mysql -uroot -p"$MYSQL_ROOT_PASSWORD"' < /some/path/on/your/host/all-databases.sql

單個資料庫恢復

# 檢視備份的資料庫sql
[root@VM_0_9_centos sqlbackup]# ls
76base_20200508.sql  backup_database.sh  backup.log  clear_history_backup.sh  clear.log  pizza_20200508.sql

# 複製備份過的sql到mysql容器的根目錄
[root@VM_0_9_centos sqlbackup]# docker cp ./76base_20200508.sql mysql_5.7:/

# 進入mysql容器
[root@VM_0_9_centos sqlbackup]# docker exec -it mysql_5.7 /bin/bash

# 登入msyql
root@3527bdeca151:/# mysql -uroot -proot

# 切換到要恢復的資料庫
mysql> use 76base;
Database changed

# 恢復資料庫
mysql> source /76base_20200508.sql

命令引數詳解

1、備份命令

格式:mysqldump -h主機名 -P埠 -u使用者名稱 -p密碼 –database 資料庫名 > 檔名.sql

mysqldump -h 192.168.1.100 -p 3306 -uroot -ppassword --database cmdb > /data/backup/cmdb.sql

2、備份壓縮

匯出的資料有可能比較大,不好備份到遠端,這時候就需要進行壓縮

格式:mysqldump -h主機名 -P埠 -u使用者名稱 -p密碼 –database 資料庫名 | gzip > 檔名.sql.gz

mysqldump -h192.168.1.100 -p 3306 -uroot -ppassword --database cmdb | gzip > /data/backup/cmdb.sql.gz

3、備份同個庫多個表

格式:mysqldump -h主機名 -P埠 -u使用者名稱 -p密碼 –database 資料庫名 表1 表2 …. > 檔名.sql

 mysqldump -h192.168.1.100 -p3306 -uroot -ppassword cmdb t1 t2 > /data/backup/cmdb_t1_t2.sql```

### 4、同時備份多個庫

格式:mysqldump -h主機名 -P埠 -u使用者名稱 -p密碼 --databases 資料庫名1 資料庫名2 資料庫名3 > 檔名.sql

```shell
mysqldump -h192.168.1.100 -uroot -ppassword --databases cmdb bbs blog > /data/backup/mutil_db.sql

5、備份例項上所有的資料庫

格式:mysqldump -h主機名 -P埠 -u使用者名稱 -p密碼 –all-databases > 檔名.sql

mysqldump -h192.168.1.100 -p3306 -uroot -ppassword --all-databases > /data/backup/all_db.sql

6、備份資料出帶刪除資料庫或者表的sql備份

格式:mysqldump -h主機名 -P埠 -u使用者名稱 -p密碼 –add-drop-table –add-drop-database 資料庫名 > 檔名.sql

mysqldump -uroot -ppassword --add-drop-table --add-drop-database cmdb > /data/backup/all_db.sql

7、備份資料庫結構,不備份資料

格式:mysqldump -h主機名 -P埠 -u使用者名稱 -p密碼 –no-data 資料庫名1 資料庫名2 資料庫名3 > 檔名.sql

mysqldump --no-data –databases db1 db2 cmdb > /data/backup/structure.sql
本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章