mysql數據庫備份和導出實踐

一、一般的數據庫備份與還原

docker exec -i a63163746faf mysqldump -uroot -pcpic1024 --single-transaction mbc-crawl > /tmp/mbc-crawl.sql
a63163746faf代表mysql容器ID,因爲我的mysql服務是用docker部署的,所以需要先連接docker容器。當然也可以先進入docker容器再進行備份操作,例如:

docker exec -it a63163746faf /bin/bash

mysqldump -uroot -pcpic1024 --single-transaction mbc-crawl > /tmp/mbc-crawl.sql

略有不同的是前面的備份(導出)命令是在主機上操作的,所以導出的sql文件是在主機的/tmp目錄下。而後面的命令是先進入容器後執行的備份命令,所以導出的sql文件是在容器的/tmp目錄下。

如果想把容器裏的sql文件拷貝到主機上,可以先退出容器回到主機,然後執行下面的命令

docker cp a63163746faf:/tmp/mbc-crawl.sql  /tmp/mbc-crawl.sql

把sql文件導入(還原)到新的數據庫中,首先是創建新數據庫,然後執行命令source /tmp/mbc-crawl.sql

 

二、壓縮備份與還原

壓縮備份:

docker exec -i a63163746faf mysqldump -uroot -p -P3306 -q -Q --set-gtid-purged=OFF --default-character-set=utf8 --hex-blob --skip-lock-tables --databases mbc-crawl 2>/tmp/abc.err |gzip >/tmp/mbc-crawl.sql.gz

壓縮還原:

這個需要在容器裏面執行,所以需要先把壓縮文件拷貝到容器裏,比如放到/tmp目錄下。然後執行下面的命令
gunzip -c /tmp/mbc-crawl.sql.gz |mysql -uroot -pcpic1024 -vvv -P3306 --default-character-set=utf8 mbc-crawl 1> /tmp/abc.log 2>/tmp/abc.err

注意備份和還原的數據庫名稱必須是相同的,比如這裏的mbc-crawl。否則會還原失敗。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章