前言
最近騰訊99一年的特價服務器要到期了,搭建在服務器上的yapi還在使用。本想直接把項目的接口全部導出來,再導入到新的服務器上。但想了下,賬號這些的還要他們重新去建,接口地址也要重新配置,本人一直比較賴,思來想去還是無縫遷移吧,大家都省事。
方案
A為老機器,B為新機器。
1.將A服務器(老服務器)上的docker中的MongoDB數據備份;
2.將備份的數據還原到B服務器(新服務器)的MongoDB中;
3.將指向A服務器的域名ip改為B服務器的ip地址。
命令
1.將A服務器(老服務器)上的docker中的MongoDB數據備份;
備份數據到 /my-yapi 路徑下(路徑下有一個yapi的文件)
docker exec 容器名 mongodump -d yapi -o /my-yapi/
進入到容器中打包備份文件
docker exec -it 容器名 /bin/bash
cd /my-yapi
tar -cvf yapi.tar /my-yapi/yapi
將備份文件移動到宿主機(A服務器)
docker cp 容器名:/my-yapi/yapi.tar /root
2.將備份的數據還原到B服務器(新服務器)的MongoDB中;
將A服務器上的備份文件移動到B服務器,具體操作可參見往期文章
mac可以用 scp,windows可以用 rz sz等
進入到B服務器,將備份文件移動到B服務的monggo docker中
docker cp /root/yapi.tar 容器名:/data/
進入到容器中解壓文件
docker exec -it 容器名 /bin/bash
cd /data
tar -zxvf yapi.tar
還原數據
docker exec 容器名 mongorestore -d yapi --drop --dir /data/yapi
3.將指向A服務器的域名ip改為B服務器的ip地址。
域名管理平台中修改域名指向
插曲
到這里,整個yapi數據遷移就算完成了。為了驗證是否成功,我關掉了A服務器的docker服務器,訪問的時候直接就報錯了。再確定其他原因后,我重新配置了一個新域名指向B服務器。新域名和老域名指向的是同一個ip,新的可以訪問,老域名的還是訪問的A服務器。好吧應該是我的dns服務緩存沒有更新吧。第二天再訪問一次,新老域名訪問一切正常。