備份還原
配置文件位置 /etc/mongod.conf
數據存放位置 /var/lib/mongodb
日誌存放位置 /var/log/mongodb
基本連線配置和用戶管理
https://docs.mongodb.com/manual/tutorial/enable-authentication/ https://docs.mongodb.com/manual/reference/configuration-options/ https://mhl.xyz/MongoDB/mongodump.html
創建用戶
- 進入mongo
- 切換至admin數據庫,use admin
- 添加用戶,db.createUser({ user: "username", // Nick pwd: "password", // abc123 roles:[{ role: "userAdminAnyDatabase", db: "admin" }] })
- exit
- 修改/etc/mongod.conf secutiry
- 重啓mongod,sudo service mongod restart
- mongo --port 27017 -u "adminUser" -p "adminPwd" --authenticationDatabase "admin"
MongoDB配置文件
# mongod.conf
# for documentation of all options, see:
# http://docs.mongodb.org/manual/reference/configuration-options/
# Where and how to store data.
storage:
dbPath: /var/lib/mongodb // 數據存放位置
journal:
enabled: true
# engine:
# mmapv1:
# wiredTiger:
# where to write logging data.
systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/mongod.log // 日誌存放位置
# network interfaces
net:
port: 27017 // 監聽端口
bindIp: 127.0.0.1 // 可連線的IP群組
# how the process runs
processManagement:
timeZoneInfo: /usr/share/zoneinfo
security: // 啟用驗證
authorization: enabled // 啟用驗證
#operationProfiling:
#replication:
#sharding:
## Enterprise-Only Options:
#auditLog:
#snmp:
進入Mongo CLI設定用戶權限
連線MongoDB
mongo --host {serverIP} --port {port}先不開啟授權,進入mongo切換至admin db
show dbs
show collections use admin在admin db下創建用戶權限和密碼 db.createUser( { user: "username", pwd: "password", roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] // admin db, role 只接受
userAdmin
anduserAdminAnyDatabase
})修改設定檔啟動權限驗證
編輯 /etc/mongodb.conf security: authorization: enabled重新啟動mongoDB sudo service mongod restart
以帳號密碼登入授權資料庫
- 方法1
mongo --host {serverIP} --port {port} -u "{username}" -p "{password}" --authenticationDatabase "admin" - 方法2
mongo --host {serverIP} --port {port} use admin db.auth("user_name","pwd")
對某一數據庫設定登入權限
- 切換至koa-test db 增加使用者
use koa-test
db.createUser({user: "username",pwd: "password",roles: [ { role: "readWrite", db: "koa-test" } ]}) - 查詢次數據庫所有用戶
db.getUsers() - 删除此數據庫所有用戶
db.dropAllUsers() - 創建集合
db.createCollection("health"); - 查詢document
- use koa-test
- db.health.find()
權限管理
- mongod
- use testdb
- db.createUser({user:'username',pwd:'password',roles:[{role:'dbAdmin',db:'wmg-sys-app-beta'}]})
- use admin->db.createUser({user:'username',pwd:'password',roles:[{role:'userAdminAnyDatabase',db:'admin'}, {role:'readWriteAnyDatabase',db:'admin'}]})
- sudo nano /etc/mongodb.conf
- security: authorization: enabled
- sudo service mongod restart
數據導入導出
不用進入mongo shell 以JSON格式的數據操作,可讀性較高
- import 參數說明: -h: 指明數據庫宿主機的IP -u: 指明數據庫的用户名 -p: 指明數據庫的密碼 -d: 數據庫名 -c: collection --type: 導入的格式默認json -f :導入的字段名 --headerline :如果導入的是csv,則可以使用第一行的標題作爲導入的字段 --file :要導入的文件
mongoimport -d dbname -c collectionname --file filename --headerline --type json/csv -f field
- export 參數說明: -h: 指明數據庫宿主機的IP -u: 指明數據庫的用户名 -p: 指明數據庫的密碼 -d: 數據庫名 -c: 指明collection(集合)的名字 --type: 指明输出的格式,默認爲json -f: 指明要導出列(如果--type为csv,則需要加上-f "字段名") -o: 指明要導出的文件名 -q: 指明導出數據的過濾條件(以json字符串作爲查詢條件)
mongoexport -h x.x.x.x:27017 -d online -c logs --type json -o /data/logs.json
mongoexport -h x.x.x.x:27017 -d test -c students --type csv -f classid,name,age -o /data/students_csv.dat
備份和還原 以BSON格式的數據操作,對數據量大的操作有較高效率 mongodump -h 127.0.0.1 -d dbname -o save-path mongorestore -h 127.0.0.1 -d dbname backup-path
Example(整個遠端數據庫備份, user/pwd 必須是具有讀寫數據庫的權限) mongoexport -h ds123834.mlab.com:23834 -d fusion-dev -u admin -p OC1234oc1234 -o /Users/lendingcar/Desktop/koaDB mongoimport -d fusion-dev --file filename --headerline --type json/csv -f field mongoexport -h 127.0.0.1:27020 --collection=accounts -d dev -u username -p password -o /Users/nicktseng/Program/db/accounts (文件名)
ubuntu mongodump -h 127.0.0.1:27020 -d dev -u username -p password -o /home/vermeer/Programming/koaDB
macOs mongodump -h 127.0.0.1:27020 -d dev -u username -p password -o /Users/nicktseng/Program/koaDB mongodump --host="127.0.0.1" --port=27020 -d dev --authenticationDatabase=dev --username Nick --password password -o /Users/nicktseng/Program/db
mongodump -h ds223343.mlab.com:23343 -d lendingcar-dev-2 -u admin -p OC1234oc1234 -o /Users/lendingcar/Desktop/koaDB mongorestore --host 127.0.0.1 --port 27020 -d blog /Home/Vermeer/Programming/koaDB/blog
先登入再import mongo --host 127.0.0.1 --port 27020 -u "username" -p "password" --authenticationDatabase dev mongoimport --host 127.0.0.1 --port 27020 -d beer --file /Users/nicktseng/Desktop/beer-recipes/recipeData.csv --collection beerrecipes --headerline --ignoreBlanks --type csv
MongoDB Atlas 備份/還原
參考連結:https://www.mongodb.com/docs/cloud-manager/tutorial/restore-single-database/
Mongodb Cloud創建的Project下,每個database需要建立存取用戶,USERNAME/PWD,在使用CMD存取MongoDB時要用到。
備份單一DB資料到TARGET_PATH
mongodump --uri mongodb+srv://USERNAME:PWD@cluster0.stbgp.mongodb.net/DB_NAME -o /absolute/file/path
還原整個DB資料到TARGET_DB(新建or既有)
mongorestore --uri mongodb+srv://USERNAME:PWD@cluster0.oejammf.mongodb.net --db TARGET_DB /absolute/directory/path
還原單一Collection到TARGET_DB
mongorestore --uri mongodb+srv://USERNAME:PWD@cluster0.5aq89.mongodb.net --db main --collection COLLECTION_NAME /absolute/file/path/collections_name.bson --drop