ToB企服应用市场:ToB评测及商务社交产业平台

标题: Mongodb快速上手 [打印本页]

作者: 半亩花草    时间: 2025-2-16 14:02
标题: Mongodb快速上手
1.1 Mongodb介绍

官网:https://www.mongodb.com/
中文官网:https://www.mongodb.com/zh-cn
中文文档:https://www.mongodb.com/zh-cn/docs/
MongoDB 是一个开源的 NoSQL 数据库,接纳文档导向(Document-Oriented)的存储方式,基于分布式架构,恰当存储大量结构化或半结构化数据。通过机动的 schema 计划、横向扩展能力和高性能的读写操作,广泛应用于需要高可扩展性和快速开发的场景。
MongoDB 将数据存储为 BSON(Binary JSON)格式的文档,每个文档是一个键值对的聚集,雷同于 JSON,但支持更多的数据类型。文档可以包含嵌套的子文档,支持机动的嵌套结构
MongoDB 支持多种查询方式,包括简单查询、范围查询、正则表达式查询、聚合操作等。此外,还支持全文索引、地理空间查询等高级功能
MySQLMongoDBDatabaseDatabaseTable、ViewCollection(聚集)RowDocumentIndexIndexJoinEmbedded DocumentForeign KeyReferencePartitionShard 1.2 MongoDB的安装

1.2.1 安装前系统优化

安装前需确保系统如下的配置正确:
01 在redhat或centos 6.2以上系统进行摆设
02 系统开发工具包安装完整
03 系统IP地址和hosts文件解析正常
04 系统防火墙功能与SElinux安全功能均要关闭
05 关闭系统大页内存机制
1.禁用大页内存功能,增加一个脚本
  1. [root@xiaoQ ~]# vi /etc/rc.local
  2. if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
  3.   echo never > /sys/kernel/mm/transparent_hugepage/enabled
  4. fi
  5. if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
  6.   echo never > /sys/kernel/mm/transparent_hugepage/defrag
  7. fi
复制代码
2.执行脚本使配置生效:
  1. bash /etc/rc.local
复制代码
关闭系统大页内存功能缘故起因:
Transparent Huge Pages (THP) is a Linux memory management system that reduces the overhead of
Translation Lookaside Buffer (TLB)
大页内存是一种Linux系统中的内存管理系统,可以减少编译后备缓冲区(TLB)的开销;
lookups on machines with large amounts of memory by using larger memory pages.
通过使用较大的内存页在具有大量内存的机器上查找
However, database workloads often perform poorly with THP.
通常使用THP时,数据库工作负载表现常常是不佳的
because they tend to have sparse rathar than contiguous memory access patterns.
由于相较于相邻的访问模式,更倾向于系统的访问模式
You should disable THP on Linux machines to ensure best performance with MongoDB
1.2.2 执行安装

以 v4.2.24 版本为例
1.解压软件包,执行安装
  1. cd /usr/local
  2. tar xvf mongodb-linux-x86_64-rhel70-4.2.24.tgz
  3. ln -svf mongodb-linux-x86_64-rhel70-4.2.24 mongodb
复制代码
2.配置服务环境变量:
  1. [root@master local]# vim /etc/profile
  2. export PATH=/usr/local/mongodb/bin:$PATH
复制代码
3.创建用户进行授权,设置一个简单的密码即可
  1. [root@master local]# useradd mongod
  2. [root@master local]# passwd mongod
  3. [root@master local]# mkdir -pv /mongodb/{data,conf,log}
  4. [root@master local]# chown -R mongod:mongod /mongodb/
  5. [root@master local]# su - mongod
  6. [mongod@master ~]$ vim ~/.bash_profile
  7. export PATH=/usr/local/mongodb/bin:$PATH
  8. [mongod@master ~]$ source ~/.bash_profile
复制代码
4.使用mongod虚拟用户启动数据库:
  1. [mongod@db01~]$ cat > /mongodb/conf/mongo.conf <<'EOF'
  2. systemLog:
  3.   destination: file
  4.   path: "/mongodb/log/mongodb.log"
  5.   logAppend: true
  6. storage:
  7.   journal:
  8.     enabled: true
  9.   dbPath: "/mongodb/data"
  10. processManagement:
  11.   # 守护进程方式运行
  12.   fork: true
  13. net:
  14.   port: 27017
  15.   bindIp: 10.0.0.51, 127.0.0.1
  16. EOF
  17. # 仅做测试,测试后会立即退出
  18. [root@db01~]# mongod -f /mongodb/conf/mongo.conf -shutdown
  19. killing process with pid: 2154
复制代码
5.加载启动下令参数,实现步伐启动
  1. mongod \
  2.   --dbpath=/mongodb/data \
  3.   --logpath=/mongodb/log/mongodb.log \
  4.   --port=27017 \
  5.   --logappend \
  6.   --fork
  7. [mongod@master ~]$ netstat -antlp | grep mongod
  8. tcp        0      0 127.0.0.1:27017         0.0.0.0:*               LISTEN      32706/mongod
复制代码
  1. cat > /mongodb/conf/mongo.conf <<'EOF'
  2. systemLog::
  3.   destination: file
  4.   path: "/mongodb/log/mongodb.log"
  5.   # 以追加的方式记录
  6.   logAppend: true
  7. storage:
  8.   journal:
  9.     enabled: true
  10. dbPath: "/mongodb/data"
  11. # 后台运行
  12. processManagement:
  13.   fork: true
  14.   # 一般不用配置,PID 会自动写入到 data 目录下
  15.   pidFilePath: <string>
  16. net:
  17.   port: 27017
  18.   bindIp: 10.0.0.51,127.0.0.1
  19. # 暂不启用安全认证
  20. #security:
  21. #  authorization: enabled
  22. EOF
复制代码
1.2.3 systemd管理Mongodb

1.确保虚拟用户和对应的目次权限
  1. useradd -s /sbin/nologin mongodb
  2. mkdir -pv /mongodb/{conf,data,log}
  3. chown mongodb.mongodb -R /mongodb
复制代码
2.誊写的MongoDB配置为:
  1. cat > /mongodb/conf/mongodb.yaml <<'EOF'
  2. systemLog:
  3.   destination: file
  4.   path: "/mongodb/log/mongodb.log"
  5.   logAppend: true
  6. storage:
  7.   journal:
  8.     enabled: true
  9.   dbPath: "/mongodb/data"
  10. processManagement:
  11.   # 守护进程方式运行
  12.   fork: true
  13. net:
  14.   port: 27017
  15.   bindIp: "0.0.0.0"
  16. EOF
复制代码
3.誊写systemd配置:
  1. [root@db51~]# systemctl cat mongod.service
  2. # /etc/systemd/system/mongod.service
  3. [Unit]
  4. Description=MongoDB Database Server
  5. After=network.target
  6. [Service]
  7. User=mongodb
  8. Group=mongodb
  9. ExecStart=/usr/local/mongodb/bin/mongod -f /mongodb/conf/mongodb.yaml
  10. Type=forking
  11. Restart=on-failure
  12. LimitNOFILE=65535
  13. TimeoutStopSec=5
  14. PermissionsStartOnly=true
  15. AmbientCapabilities=CAP_NET_BIND_SERVICE
  16. [Install]
  17. WantedBy=multi-user.target
复制代码
启动之后会产生一个socket
  1. ll /tmp/mongodb-27017.sock
  2. srwx------ 1 mongodb mongodb 0 Dec 21 11:43 /tmp/mongodb-27017.sock
复制代码
1.3 登录mongodb

方式1:使用本地工具登录
  1. mongo --host 127.0.0.1 --port 27018
复制代码
​ 如果使用了账号密码:
  1. # 未完...待续
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4