利用 Docker 備份、遷移數據庫


原文地址:https://zeeko.1503.run/Article/17

最近在把騰訊雲的國內主機遷移到香港主機,因為之前使用的 MySql 跟 MongoDb 都是基於 Docker 部署的,所以遷移起來還算比較方便,主要思路就是把數據庫容器的數據卷單獨做成一個數據鏡像,然后把這個鏡像提交到香港主機上面的私有倉庫,最后用這個鏡像生成一個數據容器掛載到應用容器上就好了。

1. 備份數據卷

docker run --rm --volumes-from data-container-backup --name tmp-backup -v $(pwd):/backup ubuntu tar cvf /backup/backup.tar /folderToBackup
    
#Example: Backup mysql database
docker run --rm --volumes-from blog-mysql --name tmp-backup -v $(pwd):/backup ubuntu tar cvf /backup/backup.tar /var/lib/mysql

--rm 用來創建一個“用完即銷”的容器,--volumes-from 用來把一個已有容器上掛載的卷掛載到新創建的容器上

2. 創建數據容器

docker run -d -v $(pwd):/backup --name data-backup alpine /bin/sh -c "cd / && tar xvf /backup/backup.tar"

3. 推送數據容器到私有倉庫

docker commit data-backup registry-host:port/data-backup:$VERSION

docker push registry-host:port/data-backup:$VERSION

4. 在另一台主機下載數據容器

docker run -v /folderToBackup --entrypoint "bin/sh" --name data-container registry-host:port/data-backup:${VERSION}

5. 將數據容器里面的數據卷掛載到應用容器上

docker run --volumes-from=data-container registry-host:port/data-backup:${VERSION}

# Example
docker run --name new-mysql -d -p 3306:3306 --volumes-from=data-container registry-host:port/data-backup:${VERSION}

就這樣 5 步操作,就可以很方便的備份、遷移數據庫了。所以買主機也一定要買支持 Docker 的 KVM 虛擬機啊。


免責聲明!

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



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