[ Mongodb ] dump and restore and auth

資料來源:
https://blog.toright.com/posts/4069/mongodb-%E6%95%99%E5%AD%B8-%E5%A6%82%E4%BD%95%E5%82%99%E4%BB%BD%E8%88%87%E9%82%84%E5%8E%9F-mongodb.html


// 備份
mongodump 常用參數說明如下:

-h: 要備份的 MongoDB 連線位置
-o: 目的地目錄
-d: 要備份的 Database 名稱
-u: 資料庫使用者名稱
-p: 資料庫密碼


  • mongodump -h 127.0.0.1 -d Mongodb_Name -o ./mongo-backup


備完份後會使用

  • tar -zcvf mongo-backup.tar.gz 要被壓縮與打包的目錄
打成一包

之後使用scp複製到遠端要還原的主機
scp ubuntu@主機位置或ip:壓縮檔放置位置 下載到哪個目錄

  • scp ubuntu@aws主機:/home/ubuntu/db.tar ~

接著使用解壓縮

  • tar -zxvf mongo-backup.tar.gz

在新主機使用
mongod --dbpath /home/ubuntu/db --port 27017
啟動mongodb

若無法啟動出現的訊息為Fail to unlink socket file
切換目錄至/tmp, 並且移除/tmp/mongodb-27017.sock
就可以啟動囉

當出現mongodb waiting for connections on port 27017就是成功啟動囉
換到另一個console, 使用mongo指令連接資料庫!

最後要將資料還原
使用mongorestore

mongorestore -d 要還原的資料庫名稱 解壓縮出來的資料庫目錄

  • mongorestore -d maper /home/ubuntu/mongo-backup/maper

就會看到還原成功囉!

接下來要啟用authentication

先用mongod --dbpath /home/ubuntu/db --port 27017啟動mongodb
接著使用下列指令

  • use admin
  • db.createuser({user: 'admin',pwd: 'admin',roles: [ { role:"userAdminAnyDatabase",db: "admin" } ]})
  • exit

再重新啟動mongodb時使用

  • mongod --auth --dbpath /home/ubuntu/db --port 27017


接著使用
  • mongo --port 27017 -u "admin" -p "admin" --authenticationDatabase "admin"

再接著幫備份的db產生一組讀寫用的user
  • db.createuser({user: 'api',pwd: 'api',roles: [ { role:"readWrite",db: "targetDb" } ]})
然後使用這組user認證就可以囉
  • use admin
  • db.auth('api','api')
  • use targerDb
  • show collections // 成功取得資料庫內所有collection清單!

留言

這個網誌中的熱門文章

[MySQL] schema 與資料類型優化

[翻譯] 介紹現代網路負載平衡與代理伺服器