鍍金池/ 問(wèn)答/數(shù)據(jù)庫(kù)  HTML/ mongodb 如何把生產(chǎn)環(huán)境的數(shù)據(jù)庫(kù)的數(shù)據(jù)克隆到dev環(huán)境的服務(wù)器,做測(cè)試用?

mongodb 如何把生產(chǎn)環(huán)境的數(shù)據(jù)庫(kù)的數(shù)據(jù)克隆到dev環(huán)境的服務(wù)器,做測(cè)試用?

調(diào)試的時(shí)候經(jīng)常測(cè)試服務(wù)器正常,而生產(chǎn)環(huán)境有bug,有時(shí)候不得不本地檢查,然后每次更新代碼后發(fā)布到生產(chǎn)環(huán)境,然后就服務(wù)經(jīng)常短時(shí)間下線,有沒(méi)有辦法把生產(chǎn)環(huán)境的數(shù)據(jù)克隆到dev環(huán)境,這樣就不用總是下線了

回答
編輯回答
臭榴蓮

mongodb本身就支持備份還原,你可以在nodejs服務(wù)中增加備份還原接口,從生產(chǎn)環(huán)境的服務(wù)上下載備份文件,在dev環(huán)境的服務(wù)上上傳備份文件執(zhí)行還原操作。

2017年3月15日 18:04
編輯回答
孤星

取決于你的需求,有不同的做法。舉個(gè)例子,如果是一次性的工作,可以考慮復(fù)制一份線上庫(kù)的數(shù)據(jù)文件下來(lái)恢復(fù)成新的集群:

  1. 停止一個(gè)線上的secondary
  2. 復(fù)制dbpath下所有文件到dev環(huán)境
  3. 以standalone模式啟動(dòng)dev(不帶replSetName)
  4. 刪除local數(shù)據(jù)庫(kù):use local; db.dropDatabase();

此時(shí)這就是一個(gè)全新的庫(kù)了。如果你想再構(gòu)建復(fù)制集,可以加上replSetName并重啟,然后執(zhí)行復(fù)制集初始化的操作。
如果你想從線上持續(xù)復(fù)制數(shù)據(jù)到dev,那會(huì)更麻煩一些。如果有需要再另行討論。

2017年7月21日 04:49
編輯回答
別瞎鬧

bin目錄下執(zhí)行導(dǎo)出和導(dǎo)入

$ ./mongoexport -u <username> -p <password> -h <host> -d <db> -c <collection> -o <output-path-with-name.dat>

$ ./mongoimport -u <username> -p <password> -h <host> -d <db> -c <collection> --file=<output-path-with-name.dat>
2018年5月27日 22:50