Docker MySQL備份



建立備份的MySQL容器

docker run --name mysql-back -e MYSQL_ROOT_PASSWORD=root -v /srv/mysql/backup:/mysql/backup -d mysql:5.7.17

 

查看虛擬網絡,其中 bridge 是 Docker 默認使用的虛擬網絡:

docker network inspect bridge

  

在返回的結果中,找到 Containers 部分。內容如下:

"Containers": {
  "asdf2334a": {
    "Name": "mysql-a"
    "EndpointID": "sadfas234"
    "MacAddress": "...."
    "IPv4Address": "192.168.0.2"
    "IPv6Address": ""
  }

}

Containers 列出了所有使用 bridge 網絡的容器。因為我給 MySQL 服務器容器起名為 mysql-a,所以我查看Name 為 mysql-a 的配置。IPv4Address表示容器mysql-a的虛擬IP是 192.168.0.2 。記錄下這個IP 。

進入容器的 bash :

docker exec -it mysql-b bash

安裝VIM和CRON定時任務:

apt-get update && apt-get install vim
apt-get update && apt-get install cron

生成一個shell腳本文件來進行備份。

cat >/zc/mysql/backup.sh <<EOF
#!/bin/sh
zcDATE=\$(date +%Y%m%d)
mkdir /zc/mysql/backup/\$zcDATE
mysqldump -h '192.168.0.2' -uroot -p'123456' --databases db1 > /zc/mysql/backup/\$zcDATE/db1.sql
mysqldump -h '192.168.0.2' -uroot -p'123456' --databases db2 > /zc/mysql/backup/\$zcDATE/db2.sql
EOF

MySQL上存在兩個數據庫,名稱分別是 db1 和 db2,利用這種方式在硬盤上備份數據。-h表示遠程的服務器IP。-u 和 -p 分別是遠程服務器的用戶名和密碼。這里不建議使用 mysqldump 的 –all-database 選項。因為該選項會把遠程MySQL里的系統數據庫也備份下來,包括 root 用戶的密碼等內容。如果你要把導出的內容導入到別的機器上,這些系統設置(比如用戶名和密碼)會覆蓋你的機器上原來的設置。

設置定時任務的啟動時間:

crontab -e
0 23 * * * sh /zc/mysql/backup.sh

啟動定時任務

service cron start

  


免責聲明!

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



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