部署MongoDB 與基本使用、備份

MongoDB介紹
介於關係數據庫和非關係數據庫之間的產品
–一款基於分佈式文件存儲的數據庫,旨在爲WEB應用提供可擴展的高性能數據存儲解決方案
– 將數據存儲爲一個文檔(類似與JSON對象),數據結構有鍵值(key=value)對組成,用硬盤存儲數據
–支持豐富的查詢表達,可以設置任何屬性的索引
–支持副本集,分片
在這裏插入圖片描述

表=====》 集合
記錄===》 文檔

搭建MDB服務
裝包
mkdir /usr/local/mongodb
tar -xf mongodb-linux-x86_64-rhel70-3.6.3.tgz
cd mongodb-linux-x86_64-rhel70-3.6.3/
cp -r bin /usr/local/mongodb/
cd /usr/local/mongodb/
mkdir -p etc log data/db

創建配置文件
vim /usr/local/mongodb/etc/mongodb.conf
fork=true //守護進程方式運行
logpath=/usr/local/mongodb/log/mongod.log //指定日誌文件目錄
logappend=true //追加方式記錄日誌信息
dbpath=/usr/local/mongodb/data/db //數據庫目錄
port=27050
bind_ip=192.168.4.50
啓動服務
/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/etc/mongodb.conf
查看進程
ps -C mongod
查看端口
ss -nutlp | grep mongod
停止服務
/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/etc/mongodb.conf --shutdown

連接服務
/usr/local/mongodb/bin/mongo
指定服務使用的IP與端口號
port=27050
bind_ip=192.168.4.50
連接服務
/usr/local/mongodb/bin/mongo --host 192.168.4.50 --port 27050
設置別名(vim /root/.bashrc / etc/bashrc)
alias mdbstart=’/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/etc/mongodb.conf’
alias mdbstop=’/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/etc/mongodb.conf --shutdown’
mdbstart (啓動)
mdbstop (停止)

數據庫管理
查看、創建、切換、刪除庫
show dbs //查看已有的庫
db //顯示當前所在庫
use 庫名 //切換庫,若不存在則創建庫並切換
show tables 或 show collections //查看庫下集合
db.dropDatabase() //刪除當前所在庫

數據庫名稱規範
–不能是空字符串(“”)
–不得含有‘’ (空格) . $ / \ \0 (空字符)
–應去啊吧不消協
–最多64字節

集合管理命令

1)查看集合
use game
switched to db game

show tables
2)創建集合,集合不存在時,自動創建並添加文檔
db.t1.save({name:“tom”,age:21,sex:“boby”})
db.t1.save({name:“tom”,sex:“girl”,school:“tarena”})
WriteResult({ “nInserted” : 1 })
3)刪除所有集合
db.t1.drop()

集合命名的規範:
–不能是空字符串“”
–不能含有\0字符(空字符),此字符表示集合的結尾
–不能以“system."開頭,這是爲系統集合保留的q前綴
–用戶創建的集合名字不能能含有保留字

文檔管理命令
db.t1.find() 查看集合的所有文檔
db.t1.count() 統計集合個數
db.集合.insert({name:“bob”}) 添加集合字段爲name
db.t1.findOne() 只顯示集合第一條
db.t1.find({name:“bob”}) 查找name 列值是bob 的文檔
db.t1.remove({}) 刪除集合的所有文檔
db.t1.remove({mail : "[email protected]"}) 刪除匹配的所有文檔

基本數據類型:
1)字符串string ,UTF-8字符串都可以表示爲字符串類型的數據

db.t2.save({name:“張三”,性別:“girl”})
WriteResult({ “nInserted” : 1 })
2)布爾值bool,布爾類型有兩個值true和flase
db.t2.save({name:“張三”,婚姻:“flase”})
WriteResult({ “nInserted” : 1 }
3)空null ,用於表示控值或者不存在的字段
db.t2.save({name:“張三”,存款:null})
WriteResult({ “nInserted” : 1 })

數值/數組array
數值:
–shell 默認使用64位浮點型數值。{x:3.14}或{x:3}
–NumberInt (4字節整數) {x:NumberInt(3)} //可以賦值爲浮點數,默認保存整數部分)----4字節=32位
db.t2.save({i:NumberInt(7.1)})
WriteResult({ “nInserted” : 1 })
默認保存爲整數7

db.t2.save({i:NumberInt(71)})
WriteResult({ “nInserted” : 1 })
–NumberLong (8字節整數) {x:NumberLOng(3)} //賦值時必須爲整數,否則報錯

數組array
–數據列表或數據集可以表示爲數組
–{x:[“a”,“b”,“c”]}
db.t2.save({name:“pul”,by:[“a”,“b”,“c”,“d”]})
db.t2.find({name:“pul”});
{ “_id” : ObjectId(“5c21d3000db592f7d150cc5b”), “name” : “pul”, “by” : [ “a”, “b”, “c”, “d” ] }

代碼/日期/對象
代碼
–查詢和文檔中可以包含任何javascript代碼
–{x:function(){/* 代碼 /}}
db.t2.save({name:“張三”,code:function(){/
<??php echo "hello world" ?>*/}})
日期
–日期被存儲爲自新紀元依賴經過的毫秒數,不含時區
–{x:new Date()}
db.t2.save({x:new Date()})
{ “_id” : ObjectId(“5c21d9b40db592f7d150cc62”), “x” : ISODate(“2018-12-25T07:18:12.091Z”) }

對象 ,在插入文檔時,數據庫會自動爲每一條文檔生成一個object id
–對象id是一個12字節的字符除啊,是文檔的唯一標識
–{x:ObjectId()}
db.t2.save({stu_id:ObjectId(),name:“bob”,age:19})
db.t2.find({name:“bob”,age:19})
{ “_id” : ObjectId(“5c21db5a0db592f7d150cc64”), “stu_id” : ObjectId(“5c21db5a0db592f7d150cc63”), “name” : “bob”, “age” : 19 }

內嵌/正則表達式
內嵌:
–文檔可以嵌套其他文檔,被嵌套的文檔作爲值來處理
db.t2.save({book: {bname:“kkk”,worker:“jjj”,pay:9.9,wer:20} })

正則表達式:
–查詢時,使用正則表達式作爲限定條件
db.t2.save({x:/^KaTeX parse error: Expected 'EOF', got '}' at position 2: /}̲) db.t2.find({x…/})
{ “_id” : ObjectId(“5c21dd170db592f7d150cc66”), “x” : /^$/ }

數據導入導出
mongoexport
在這裏插入圖片描述

在這裏插入圖片描述

導出(mongoexport)
文件必須事先存在
cd /usr/local/mongodb/bin/
mkdir /mdb
./mongoexport --host 192.168.4.50 --port 27050 -d game -c t2 --type=csv -f name,age > /mdb/t1.csv
./mongoexport --host 192.168.4.50 --port 27050 -d game -c t2 --type=json > /mdb/t2.json

導入(mongoimport)
格式一:
mongoimport --host Ip --port 端口 -d 庫名 -c 集合名 --type=json 目錄名/文件名.json
格式二:
mongoimport --host Ip --port 端口 -d 庫名 -c 集合名 --type=csv [–headerline] [–drop] 目錄名/文件名.csv (–headerline 刪除頭部。忽略頭部 --drop 刪除庫集合原先數據追加新數據)

/usr/local/mongodb/bin/mongoimport --host 192.168.4.50 --port 27050 -d userdb -c user --type=json /mdb/t2.json (注,導入的庫與集合不存在則創建並導入。不能重複導入。因爲數據Id 相同)

在這裏插入圖片描述

cd /usr/local/mongodb/bin/
./mongoimport --host 192.168.4.50 --port 27050 -d userdb -c t2 --type=csv -f user,old /mdb/t1.csv (會將文件中第一條信息也賦值爲 user old)
cat /mdb/t1.csv
name,age
{ “_id” : ObjectId(“5c21eebf274b3bce4677ca95”), “user” : “name”, “old” : “age” }
./mongoimport --host 192.168.4.50 --port 27050 -d userdb -c t3 --type=csv --headerline /mdb/t1.csv (第一條信息不會賦值)
./mongoimport --host 192.168.4.50 --port 27050 -d userdb -c t2 --type=csv --headerline --drop /mdb/t1.csv (不加drop 則是追加數據。反之覆蓋原數據)

將/etc/passwd 導入數據
cp /etc/passwd /root/
sed -i ‘s/😕,/g’ /root/passwd
sed -i ‘1iname,passwd,uid,gid,comment,homedir,shell’ /root/passwd
./mongoimport --host 192.168.4.50 --port 27050 -d userdb -c t4 --type=csv --headerline /root/passwd
db.t4.find() [一次只能顯示20行 按it 可以顯示更多]

數據備份
備份數據所有庫到當前目錄下的dump 目錄
mongodump 【–host ip 地址 --port 端口】
備份時指定備份的庫和備份目錄
mongodump 【–host ip --port 端口】 -d 數據庫名 【-c 集合名】 -o 目錄 (-c 指定備份。不加即備份庫下所有)
mkdir /mbak
/usr/local/mongodb/bin/mongodump --host 192.168.4.50 --port 27050 -d userdb -c t3 -o /mbak (備份userdb 庫下 t3 集合)
ls /mbak/userdb
t3.bson t3.metadata.json
/usr/local/mongodb/bin/bsondump /mbak/userdb/t3.bson (查看備份文件內容)
mkdir /mbak2
/usr/local/mongodb/bin/mongodump --host 192.168.4.50 --port 27050 -d userdb -o /mbak2
ls /mbak2/userdb/
t2.bson t3.bson t4.bson user.bson
t2.metadata.json t3.metadata.json t4.metadata.json user.metadata.json

數據恢復
db.t3.drop() (刪除t3 集合)
/usr/local/mongodb/bin/mongorestore --host 192.168.4.50 --port 27050 -d userdb -c t3 /mbak/userdb/t3.bson

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章