首页 / MONGODB / mongodb单实例(1)
mongodb单实例(1)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了mongodb单实例(1),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含7006字,纯文字阅读大概需要11分钟。
内容图文
![mongodb单实例(1)](/upload/InfoBanner/zyjiaocheng/879/d73ea815cba5443a998fd70ab04e2c32.jpg)
目录
我叫张贺,贪财好色。一名合格的LINUX运维工程师,专注于LINUX的学习和研究,曾负责某中型企业的网站运维工作,爱好佛学和跑步。
个人博客:传送阵
笔者微信:zhanghe15069028807
,非诚勿扰。
# 一、mongodb4.0单实例
1、安装&启动
部署环境:
centos7系统、64位
iptables和selinux关闭
mongodb简介
mongodb是个非关系型数据库,但操作跟关系型数据最类似。
mongodb是面向文档存储的非关系型数据库,基于分布式的文件存储数据库,数据以json(文档)的格式进行存储
mongodb可用来永久存储,也可用来缓存数据
mongodb提供副本集和分片集群功能,操作简单
mongodb的下载链接,直接使用mongodb的二进制文件,免编译安装
https://www.mongodb.com/download-center?jmp=nav#community
https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-4.0.2.tgz
mongodb的二进制解压安装
cd /usr/local/src/
//mongodb下载二进制包
wget 'http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-4.0.2.tgz'
//解压,由于是二进制的,解压即安装
tar -zxvf mongodb-linux-x86_64-4.0.2.tgz
mv mongodb-linux-x86_64-4.0.2 /usr/local/mongodb
验证安装是否成功
ll -h /usr/local/mongodb/
/usr/local/mongodb/bin/mongod --help
/usr/local/mongodb/bin/mongod --version
monogdb单例配置文件/data/mongodb/27017/mongodb.conf
systemLog:
destination: file
logAppend: true
path: /data/mongodb/27017/mongodb.log
storage:
dbPath: /data/mongodb/27017/
journal:
enabled: true
processManagement:
fork: true
net:
port: 27017
bindIp: 0.0.0.0
安全说明
如果是公网服务器,学习的时候,建议监听在127.0.0.1:2017
启动mongodb服务器
/usr/local/mongodb/bin/mongod -f /data/mongodb/27017/mongodb.conf
mongodb的启动验证
//数据文件查看
ll -h /data/mongodb/27017/
//进程查看
ps auxf
//端口查看
netstat -tulnp|grep mongo
mongodb的关闭方式
kill 关闭 #不建议,后续介绍正确的关闭方法
kill -9 #突然断电可能会导致mongodb数据的丢失
2、启动优化
mongodb提供一个mongo客户端,类似于mysql提供的客户端命令
/usr/local/mongodb/bin/mongo 127.0.0.1:27017
/usr/local/mongodb/bin/mongo #默认连接到127.0.0.1:27017
mongodb启动优化说明
WARNING: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine
WARNING: Access control is not enabled for the database.
? Read and write access to data and configuration is unrestricted.
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 3895 processes, 65535 files. Number of processes should be at least 32767.5 : 0.5 times number of files.
- 第一个警告是访问控制没有开启
- 第二个警告是用root运行,这个也无所谓
- 第三个警告是要求我们关闭最大内存页
- 最后一个警告要要求把最大进程数设置成65535,同时打开的文件夹也要求增加
同时打开的最大进程和最大文件数优化
[root@mongodb ~]# ulimit -a
max user processes (-u) 7827
//内核进程数限制放开`/etc/security/limits.conf`,需要重新登录终端
* - nofile 65536 #增加打开的最大文件数
* - nproc 65536 #增加打开的最大进程数
[root@mongodb ~]# ulimit -a
max user processes (-u) 65536
open files (-n) 65536
//centos7默认还有进程数限制/etc/security/limits.d/20-nproc.conf
[root@mongodb ~]# vim /etc/security/limits.d/20-nproc.conf
* soft nproc 65536
root soft nproc unlimited
mongodb启动参数优化1,禁止内存巨大页
cat /sys/kernel/mm/transparent_hugepage/enabled
echo 'never' >/sys/kernel/mm/transparent_hugepage/enabled
echo 'never' >/sys/kernel/mm/transparent_hugepage/defrag
把以上两个命令加入`/etc/rc.local`,注意需要有执行权限,然后启动mongodb
chmod +x /etc/rc.d/rc.local #centos7默认rc.local没有执行权限,需要支持执行权限
使用普通用户启动mongodb(可以不做)
useradd mongodb -s /sbin/nologin
chown -R mongodb:mongodb /data/mongodb/ /usr/local/mongodb/
su - mongodb -s /bin/bash
/usr/local/mongodb/bin/mongod -f /data/mongodb/27017/mongodb.conf
访问控制建议设置ip白名单访问
//可能会用到的辅助命令
[root@mongodb ~]# df -hT
[root@mongodb ~]# ps auxfww | grep redis
3、客户端使用
mongodb的基础概念介绍:
database #数据库
collection #集合,类似于mysql中的表
filed #类似于mysql中字段,比如姓名、性别、年龄
document #每行的记录
mongo客户端的命令自动提示功能:使用tab键
库操作
查询所有的库,默认自带三个库
//show dbs和show databases效果是一样的
> show databases;
admin 0.000GB
config 0.000GB
local 0.000GB
> show dbs;
admin 0.000GB
config 0.000GB
local 0.000GB
mongo客户端提供一个正确关闭mongodb服务器的方法
//必须进入管理库才使用shutdown
use admin
db.shutdownServer()
插入操作:库、表、内容
mongodb创建库、创建集合、插入数据(key value的字典方式插入)
//创建一个数据库zhange,无需显示创建
> use zhang
switched to db zhang
//zhang数据库里面没有数据,默认不会显示出来
> show databases
admin 0.000GB
config 0.000GB
local 0.000GB
//向zhang数据库里面插入collection(表):zhanghe,也无需显示创建
> db.zhanghe.insert({ name:'zhanghe',age:'22'})
WriteResult({ "nInserted" : 1 })
//再查看库会显示出来了
> show databases;
admin 0.000GB
config 0.000GB
local 0.000GB
zhang 0.000GB
//show tables和show collection查看表
> show tables;
zhang
zhanghe
> show collections
zhang
zhanghe
//在zhanghe这张表里面再插入一行数据
> db.zhanghe.insert({ name:'zhangjia',age:'14'})
WriteResult({ "nInserted" : 1 })
查询操作
查询集合数据,默认有个_id
//进入zhang这个库
> use zhang
switched to db zhang
//查看库里面有几张表
> show tables;
zhang
zhanghe
//查看zhanghe这张表里面的所有内容
> db.zhanghe.find()
{ "_id" : ObjectId("5e168efeec0e7ffc67edf1a3"), "name" : "zhanghe", "age" : "22" }
{ "_id" : ObjectId("5e168ffcec0e7ffc67edf1a4"), "name" : "zhangjia", "age" : "14" }
//条件查询,查询名字为zhanghe的那一行
> db.zhanghe.find({ name:'zhanghe' })
{ "_id" : ObjectId("5e168efeec0e7ffc67edf1a3"), "name" : "zhanghe", "age" : "22" }
//条件查询,查看age为14的那一行
> db.zhanghe.find({ age:'14' })
{ "_id" : ObjectId("5e168ffcec0e7ffc67edf1a4"), "name" : "zhangjia", "age" : "14" }
删除操作
> use zhang
switched to db zhang
//有条件删除:删除名字是zhangjia的行
> db.zhanghe.remove({name:'zhangjia'})
WriteResult({ "nRemoved" : 1 })
//检查,删除成功
> db.zhanghe.find()
{ "_id" : ObjectId("5e168efeec0e7ffc67edf1a3"), "name" : "zhanghe", "age" : "22" }
//删除zhanghe表内所有数据
> db.zhanghe.remove({})
//表的内容删除了,表还有
> show tables;
zhang
zhanghe
//删除 表
> db.zhanghe.drop()
true
更新
更新集合数据
> db.zhanghe.find({})
{ "_id" : ObjectId("5e1693feec0e7ffc67edf1a5"), "name" : "zhanghe", "age" : "22" }
> db.zhanghe.update({'name':'zhanghe'},{$set:{name:'zhanghehe'}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.zhanghe.find({})
{ "_id" : ObjectId("5e1693feec0e7ffc67edf1a5"), "name" : "zhanghehe", "age" : "22" }
删除
> show databases;
admin 0.000GB
config 0.000GB
local 0.000GB
zhang 0.000GB
> use zhang
switched to db zhang
> db.dropDatabase()
{ "dropped" : "zhang", "ok" : 1 }
> show databases;
admin 0.000GB
config 0.000GB
local 0.000GB
mongodb自带的三个库不要动
内容总结
以上是互联网集市为您收集整理的mongodb单实例(1)全部内容,希望文章能够帮你解决mongodb单实例(1)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。