Mongodb基础

来自linux中国网wiki
Evan讨论 | 贡献2019年10月14日 (一) 13:52的版本 (导入1个版本)
跳到导航 跳到搜索

install

yum or apt

MongoDB国内apt yum镜像使用帮助

docker

bin

wget  -c   https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.2.0.tgz
在国内 可能有点慢 可以放国个下载再拉回来 什么的 

mv mongodb-linux-x86_64-3.2.0/  /data/apps/mongodb
echo 'export PATH=$PATH:/data/apps/mongodb/bin/' >> /etc/profile

or 

cat >> /etc/profile <<EOF
export PATH=$PATH:/data/apps/mongodb/bin
EOF

source /etc/profile 

测试安装

新建一个目录data存放mongodb数据:
mkdir /data/apps/mongodb/data/

用以下其中一个命令启动mongod:
mongod --dbpath /data/apps/mongodb/data/
mongod --dbpath /data/apps/mongodb/data --auth 
mongod --dbpath /data/apps/mongodb/data     --config /etc/mongodb.conf    --auth

这时mongod已经启动,重新打开一个终端, 键入mongo进入交互程序:
$> mongo
> show dbs
...数据库列表



3. 导入初始数据
leanote初始数据存放在 leanote/mongodb_backup/leanote_install_data中。

root@mypi3b:/data/apps# ls leanote/mongodb_backup/leanote_install_data/
albums.bson		     has_share_notes.bson		    share_notebooks.bson
albums.metadata.json	     has_share_notes.metadata.json	    share_notebooks.metadata.json

 cat   leanote/mongodb_backup/leanote_install_data/albums.metadata.json 
{"indexes":[{"v":1,"key":{"_id":1},"name":"_id_","ns":"leanote_bin_test.albums"},{"v":1,"key":{"UserId":1},"name":"UserId_1","ns":"leanote_bin_test.albums","background":true}]}
 
打开终端, 输入以下命令导入数据。
$> mongorestore -h localhost -d leanote --dir leanote/mongodb_backup/leanote_install_data/


$> mongo
> show dbs # 查看数据库
leanote	0.203125GB
local	0.078125GB
> use leanote # 切换到leanote
switched to db leanote
> show collections # 查看表
files
has_share_notes
note_content_histories
note_contents


MongoDB安全认证

常用命令

> show dbs #显示数据库列表 
> show collections #显示当前数据库中的集合(类似关系数据库中的表)
> show users #显示用户
> use <db name> #切换当前数据库,如果数据库不存在则创建数据库。 
> db.help() #显示数据库操作命令,里面有很多的命令 
> db.foo.help() #显示集合操作命令,同样有很多的命令,foo指的是当前数据库下,一个叫foo的集合,并非真正意义上的命令 
> db.foo.find() #对于当前数据库中的foo集合进行数据查找(由于没有条件,会列出所有数据) 
> db.foo.find( { a : 1 } ) #对于当前数据库中的foo集合进行查找,条件是数据中有一个属性叫a,且a的值为1
> db.dropDatabase() #删除当前使用数据库
> db.cloneDatabase("127.0.0.1") #将指定机器上的数据库的数据克隆到当前数据库
> db.copyDatabase("mydb", "temp", "127.0.0.1") #将本机的mydb的数据复制到temp数据库中
> db.repairDatabase() #修复当前数据库
> db.getName() #查看当前使用的数据库,也可以直接用db
> db.stats() #显示当前db状态
> db.version() #当前db版本
> db.getMongo() #查看当前db的链接机器地址
> db.serverStatus() #查看数据库服务器的状态


use djs_kuafu_4; 建库

db.addUser("name","passwd");授权

MongoDB 删除数据库的语法格式如下:
use 数据库名;
db.dropDatabase()
删除当前数据库,默认为 test,你可以使用 db 命令查看当前数据库名。
实例
以下实例我们删除了数据库 runoob。
首先,查看所有数据库:
> show dbsuse 



mongodb 常用命令
查看所有数据库
show dbs
查看当前选择的库
db
查看库下的所有集合
show tables
show collections
删除库(这种方式删除数据目录还会有数据文件夹的)
use dbname
db.dropDatabase()
用这个方式可以清理文件下的内容,然后删掉目录即可
use s1
db.dropDatabase()
db.repairDatabase()
删除集合
db.mytable.drop()
添加用户
use dbname
db.addUser('admin','123456')
更改密码
db.addUser("admin","a123456")
删除用户
db.system.users.remove({admin:"a123456"})
或者
db.removeUser('admin')
用户授权db.createUser({user:"su",pwd:"fenggu123$%^",roles:[ { role:"root", db:"admin" } ] });
db.auth('admin','a123456') ???????
查看用户列表
db.system.users.find()
查看所有用户
show users
关闭服务
> use admin
switched to db admin

db.shutdownServer();

mongod  --shutdown  --dbpath /database/mongodb/data/

查询集合
db.users.find()
条件查询
db.users.find({age:33})
多个条件查询
db.users.find({age:33}),({a:1,b:1})
查看负载
mongostat -h127.0.0.1:28018
-ufengguadmin -pfenggu123$%^ --authenticationDatabase=admin
备份所有
mongodump -h127.0.0.1:28018 -ufengguadmin '-pfenggu123$%^' -o /data/mongodb_backup/ --
authenticationDatabase=admin
恢复
mongorestore -h127.0.0.1:28018 -ufengguadmin -pfenggu123$%^ --db=s1 --
dir=/data/mongodb_backup/mongod_bak_now/2016_06_27/s1/ --authenticationDatabase=admin

监控

利用Zabbix监控MongoDB

7启动脚本

https://github.com/mongodb/mongo/blob/master/rpm/mongod.service


[root@k8sn1 ~]# cat /etc/mongod.conf 
# mongod.conf
# for documentation of all options, see:
# http://docs.mongodb.org/manual/reference/configuration-options/
# where to write logging data.
systemLog:
destination: file
logAppend: true
# path: /var/log/mongodb/mongod.log
path: /data/logs/mongod.log
# Where and how to store data.
storage:
dbPath: /data/apps/mongodb/data/
# dbPath: /var/lib/mongo 
journal:
enabled: true
# engine:
# mmapv1:
# wiredTiger:
# how the process runs
processManagement:
fork: true # fork and run in background
pidFilePath: /var/run/mongodb/mongod.pid # location of pidfile
timeZoneInfo: /usr/share/zoneinfo
# network interfaces
net:
port: 27017
bindIp: 127.0.0.1 # Enter 0.0.0.0,:: to bind to all IPv4 and IPv6 addresses or, alternatively, use the net.bindIpAll setting.

#security:
#operationProfiling:
#replication:
#sharding:
## Enterprise-Only Options
#auditLog:
#snmp:

[root@k8sn1 ~]# cat /var/run/mongodb/mongod.pid
2376
[root@k8sn1 ~]# ll /var/run/mongodb/mongod.pid
-rw-r--r-- 1 mongod mongod 5 6月 16 15:24 /var/run/mongodb/mongod.pid

[root@k8sn1 ~]# cat /usr/lib/systemd/system/mongod.service 
[Unit]
Description=MongoDB Database Server
After=network.target
Documentation=https://docs.mongodb.org/manual
[Service]
User=mongod
Group=mongod
Environment="OPTIONS=-f /etc/mongod.conf"
EnvironmentFile=-/etc/sysconfig/mongod
ExecStart=/usr/bin/mongod $OPTIONS
ExecStartPre=/usr/bin/mkdir -p /var/run/mongodb
ExecStartPre=/usr/bin/chown mongod:mongod /var/run/mongodb
ExecStartPre=/usr/bin/chmod 0755 /var/run/mongodb
PermissionsStartOnly=true
PIDFile=/var/run/mongodb/mongod.pid
Type=forking
# file size
LimitFSIZE=infinity
# cpu time
LimitCPU=infinity
# virtual memory size
LimitAS=infinity
# open files
LimitNOFILE=64000
# processes/threads
LimitNPROC=64000
# locked memory
LimitMEMLOCK=infinity
# total threads (user+kernel)
TasksMax=infinity
TasksAccounting=false

# Recommended limits for for mongod as specified in
# http://docs.mongodb.org/manual/reference/ulimit/#recommended-settings
[Install]
WantedBy=multi-user.target


#sysv from 
. /lib/lsb/init-functions
CONFIGFILE="/etc/mongod.conf"
PROGRAM="/usr/bin/mongod"
MONGOPID="/var/run/mongodb/mongod.pid"
LOCK="/data/apps/mongodb/mongo/mongod.lock"

test -x $PROGRAM || exit 0
case "$1" in
start)
ulimit -f unlimited
ulimit -t unlimited
ulimit -v unlimited
ulimit -n 64000
ulimit -m unlimited
log_begin_msg "Starting MongoDB server"
$PROGRAM -f $CONFIGFILE
log_end_msg 0
;;
stop)
log_begin_msg "Stopping MongoDB server"
# if [ -f $LOCK ]; then
# rm $LOCK
# fi
if [ ! -z "$MONGOPID" ]; then
kill $MONGOPID
fi
log_end_msg 0
;;
status)
;;
*)
log_success_msg "Usage: /etc/init.d/mongodb {start|stop|status}"
exit 1
esac
 
#!/bin/sh
# chkconfig: - 64 36
# description:mongod
case $1 in
start)
/usr/local/mongodb/bin/mongod --maxConns 20000 --config /usr/local/mongodb/mongodb.conf
;;
stop)
/usr/local/mongodb/bin/mongo 127.0.0.1:27017/admin --eval "db.shutdownServer()"
;;
status)
/usr/local/mongodb/bin/mongo 127.0.0.1:27017/admin --eval "db.stats()"
;;
esac

参考

https://www.mongodb.org.cn/

MongoDb 快速入门教程

mongoDB基础入门一

https://www.mongodb.org.cn/tutorial/59.html



mongodb快速入门


NOSQL -- Mongodb的简单操作与使用(win10)

phpetc

Installing the MongoDB PHP Driver with PECL

MongoDB driver for PHP