利用 Docker 備份、遷移數據庫

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

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

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 用來把一個已有容器上掛載的卷掛載到新建立的容器上docker

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 虛擬機啊。數據庫

相關文章
相關標籤/搜索