MongoDB3.0部署

下載二進制包:
#wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.0.15.tgz
#tar xf mongodb-linux-x86_64-3.0.15.tgz
#cd mongodb-linux-x86_64-3.0.15
創建數據存放路徑、日誌存放路徑、程序路徑
#mkdir /data/mongodata -p
#mkdir /data/log/mongolog -p
#mkdir /data/mongo -p
將當前所有文件複製
#cp -r * /data/mongo
配置環境變量
#more /etc/profile.d/mongodb.sh
export PATH=$PATH:/data/mongo/bin
#source /etc/profile.d/mongodb.sh
配置mongodb配置文件
#cd /data/mongo/bin/
#vim mongodb.conf
#數據文件存放目錄
dbpath = /data/mongodata
#日誌文件存放目錄
logpath = /data/log/mongolog/mongodb.log
#端口
port = 27017
#以守護程序的方式啓用,即在後臺運行
fork = true
nohttpinterface = true
確定服務
#mongod --dbpath=/data/mongodata --logpath=/data/log/mongolog/mongodb.log --logappend --fork
通過配置文件啓動
#mongod -f /root/mongodb/bin/mongodb.conf
測試
#mongo
MongoDB shell version: 3.0.15
connecting to: test

show dbs
local 0.078GB
quit()
WARNING: Readahead for /data/mongodata is set to 4096KB
WARNING: You are running this process as the root user, which is not recommended.
WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
We suggest setting it to 'never'
WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
We suggest setting it to 'never'
WARNING: soft rlimits too low. rlimits set to 3802 processes, 65536 files. Number of processes should be at least 32768 : 0.5 times number of files.
啓動有警告,去掉

#vim /etc/rc.local
if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
echo never > /sys/kernel/mm/transparent_hugepage/enabled
fi
if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
echo never > /sys/kernel/mm/transparent_hugepage/defrag
fi
ulimit -u 65535
#echo never > /sys/kernel/mm/transparent_hugepage/enabled
#echo never > /sys/kernel/mm/transparent_hugepage/defrag
#runlevel
#chmod +x /etc/rc.local
文件限制數調整
#vim /etc/security/limits.conf

  • soft nproc 32000
  • hard nproc 32000
    重啓:
    mongo

    use admin
    switched to db admin
    db.shutdownServer();
    配置啓動服務
    #vim /usr/lib/systemd/system/systemd-mongodb.service
    [Unit]
    Description=mongodb
    After=network.target

[Service]
Type=forking
PIDFile=/data/mongodata/mongod.lock
ExecStart=/data/mongo/bin/mongod -f /data/mongo/bin/mongodb.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target
開啓機器
#systemctl enable systemd-mongodb
進入查看數據庫,只有一個local庫,admin庫是不存在的

show dbs
local 0.078GB
show tables;
新建賬號具有grant權限,即:賬號管理的授權權限
use admin
switched to db admin
db.createUser(
... {
... user:"dba",
... pwd: "dba",
... roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
... }
... )
Successfully added user: {
"user" : "dba",
"roles" : [
{
"role" : "userAdminAnyDatabase",
"db" : "admin"
}
]
}
show dbs;
admin 0.078GB
local 0.078GB
user:用戶名

pwd:密碼

roles:指定用戶的角色,可以用一個空數組給新用戶設定空角色;在roles字段,可以指定內置角色和用戶定義的角色。role裏的角色可以選:
Built-In Roles(內置角色):

  1. 數據庫用戶角色:read、readWrite;
  2. 數據庫管理角色:dbAdmin、dbOwner、userAdmin;
  3. 集羣管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
  4. 備份恢復角色:backup、restore;
  5. 所有數據庫角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
  6. 超級用戶角色:root
    // 這裏還有幾個角色間接或直接提供了系統超級用戶的訪問(dbOwner 、userAdmin、userAdminAnyDatabase)
  7. 內部角色:__system
    具體角色:
    Read:允許用戶讀取指定數據庫
    readWrite:允許用戶讀寫指定數據庫
    dbAdmin:允許用戶在指定數據庫中執行管理函數,如索引創建、刪除,查看統計或訪問system.profile
    userAdmin:允許用戶向system.users集合寫入,可以找指定數據庫裏創建、刪除和管理用戶
    clusterAdmin:只在admin數據庫中可用,賦予用戶所有分片和複製集相關函數的管理權限。
    readAnyDatabase:只在admin數據庫中可用,賦予用戶所有數據庫的讀權限
    readWriteAnyDatabase:只在admin數據庫中可用,賦予用戶所有數據庫的讀寫權限
    userAdminAnyDatabase:只在admin數據庫中可用,賦予用戶所有數據庫的userAdmin權限
    dbAdminAnyDatabase:只在admin數據庫中可用,賦予用戶所有數據庫的dbAdmin權限。
    root:只在admin數據庫中可用。超級賬號,超級權限

Mongodb中 數據庫和集合的創建與刪除
插數據

show dbs //查詢所有的數據庫
admin 0.078GB
cmz 0.078GB
local 0.078GB
show collections //查詢所有的集合(表)等同於show tables
創建數據庫或切換到數據庫(存在就切換,不存在就創建)
use cmz
switched to db cmz
創建集合,刪除集合(一般可以不用創造集合,在插入數據時自動可以創建集合):
db.createCollection('col') //創建集合
{ "ok" : 1 }
show collections
col
db.col.drop() //刪除集合
true
5、備份
-h 指明數據庫宿主機的IP
--port 指明數據庫的端口
-u 指明數據庫的用戶名
-p 指明數據庫的密碼
-d 指明數據庫的名字
-c 指明collection的名字
-o 指明到要導出的文件名
-q 指明導出數據的過濾條件
--authenticationDatabase 驗證數據的名稱
--gzip 備份時壓縮
--oplog use oplog for taking a point-in-time snapshot
全庫備份
mongodump -h 10.0.0.4 --authenticationDatabase admin -o /mnt/
備份cmz庫
mongodump -h 10.0.0.4 --authenticationDatabase admin -d cmz -o /mnt1/
備份cmz庫的col集合
mongodump -h 10.0.0.4 --authenticationDatabase admin -d cmz -c col -o /mnt2/

創建test庫

use test
switched to db test
db.createUser(
... {
... user: "jrw",
... pwd: "jrw",
... roles: [
... { role: "readWrite", db: "test" }
... ]
... }
... )
Successfully added user: {
"user" : "jrw",
"roles" : [
{
"role" : "readWrite",
"db" : "test"
}
]
}
show users;
{
"_id" : "test.jrw",
"user" : "jrw",
"db" : "test",
"roles" : [
{
"role" : "readWrite",
"db" : "test"
}
]
}
參考文檔:
https://blog.51cto.com/xiaorenwutest/2137022

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