【MongoDB】— CentOS7.6部署MongoDB数据库

部署版本:Centos7.6部署mongdb4.2.12版本

1、mongdb官网下载系统版本对应的数据库

1.1确认操作系统版本和内核版本

[root@mysql-master ~]#  cat /etc/redhat-release 
CentOS Linux release 7.6.1810 (Core) 
[root@mysql-master data]#  uname -a
Linux mysql-master 3.10.0-957.el7.x86_64 #1 SMP Thu Nov 8 23:39:32 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

1.2下载mongodb4.2.12

官网:https://www.mongodb.com/try/download/community

下载:[root@mysql-master data]# wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.2.12.tgz

2、MongoDB的安装部署

2.1 创建用户和用户组

[root@mysql-master data]# useradd mongod
[root@mysql-master data]# passwd mongod

注意:输入用户密码,此处mongod用户使用的密码和账户一致。

2.2 创建所需的目录

[root@mysql-master data]# mkdir -p /data/mongodb/{conf,log,data}

conf:存放配置文件
data:数据目录
log:日志目录

2.3 解压软件

[root@mysql-master data]# tar xvf mongodb-linux-x86_64-rhel62-4.2.12.tgz 
[root@mysql-master data]#  cp -r /data/mongodb-linux-x86_64-rhel62-4.2.12/bin/ /data/mongodb

2.4设置数据库目录权限

[root@mysql-master data]# chown -R mongod:mongod /data/mongodb

2.5 配置环境变量

[root@mysql-master data]# su - mongod
Last login: Fri Sep 24 00:21:43 EDT 2021 on pts/1
[mongod@mysql-master ~]$ 

添加用户的环境变量,打开环境变量文件后在末尾添加如下内容:
[mongod@mysql-master ~]$ vim .bash_profile
export PATH=/data/mongodb/bin:$PATH

加载环境变量
[mongod@mysql-master ~]$ source .bash_profile

2.6启动数据库

[mongod@mysql-master ~]$  mongod --dbpath=/data/mongodb/data --logpath=/data/mongodb/log/mongodb.log --port=27017 --logappend --fork 

参数详解:
--dbpath:数据存放目录
--logpath:日志目录文件
--port: 数据库端口
--logappend:日志追加方式

2.7 登陆到数据库

#首次登陆数据库时,会有一些警告提示,后期设置配置文件后,会清除,暂时忽略。
#进入到mongodb后,会显示数据库的版本号、服务器地址和端口等信息。
[mongod@mysql-master ~]$ mongo
MongoDB shell version v4.2.12
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("e07d52c8-85f5-4a98-995b-6a03fa73f97b") }
MongoDB server version: 4.2.12
Server has startup warnings: 
2021-09-23T10:41:54.418-0400 I  CONTROL  [initandlisten] 
2021-09-23T10:41:54.418-0400 I  CONTROL  [initandlisten] ** WARNING: Access control is not enabled for the database.
2021-09-23T10:41:54.418-0400 I  CONTROL  [initandlisten] **          Read and write access to data and configuration is unrestricted.
2021-09-23T10:41:54.418-0400 I  CONTROL  [initandlisten] 
2021-09-23T10:41:54.418-0400 I  CONTROL  [initandlisten] 
2021-09-23T10:41:54.418-0400 I  CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
2021-09-23T10:41:54.418-0400 I  CONTROL  [initandlisten] **        We suggest setting it to 'never'
2021-09-23T10:41:54.418-0400 I  CONTROL  [initandlisten] 
2021-09-23T10:41:54.418-0400 I  CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
2021-09-23T10:41:54.418-0400 I  CONTROL  [initandlisten] **        We suggest setting it to 'never'
2021-09-23T10:41:54.418-0400 I  CONTROL  [initandlisten] 
---
Enable MongoDB's free cloud-based monitoring service, which will then receive and display
metrics about your deployment (disk utilization, CPU, operation statistics, etc).

The monitoring data will be available on a MongoDB website with a unique URL accessible to you
and anyone you share the URL with. MongoDB may use this information to make product
improvements and to suggest MongoDB products and deployment options to you.

To enable free monitoring, run the following command: db.enableFreeMonitoring()
To permanently disable this reminder, run the following command: db.disableFreeMonitoring()
---

> 


注:>:表示已经进入到mongo的shell命令行,可以对数据库进行管理。

2.8数据库进程和端口检查

[mongod@mysql-master ~]$ ps -ef|grep mongo
[mongod@mysql-master ~]$ netstat  -lntp|grep mong

2.9数据库启动和关闭

启动数据库:[mongod@mysql-master ~]$ mongod --dbpath=/mongodb/data --logpath=/mongodb/log/mongodb.log --port=27017 --logappend --fork
关闭数据库:[mongod@mysql-master ~]$ mongod -f /data/mongodb/conf/mongo.conf  --shutdown

3、mongodb的配置文件及单库简洁配置

mongodb的配置文件格式是YMAL格式。可自定义为mongo.conf或按照项目业务名称自定义配置文件的名称即可,以.conf结尾。

3.1 mongodb配置文件详解

---系统日志模块
systemLog:
  destination: file   #Mongodb 日志输出的目的地,指定一个 file 或者 syslog,如果指定 file,必须指定 systemlog.path
  logAppend: true  #实例重启时,不创建新日志文件,在旧日志文件末尾继续添加
  path: /data/mongodb/log/mongo.log    #日志路径

---数据存储模块
storage:
  dbPath: /data/mongodb/data    #数据存储目录
  journal:       #回滚日志
    enabled: true
  directoryPerDB: true    #默认 false,不适用 inmemory engine

 engine:        #存储引擎3.2默认wiredTiger

 mmapv1:  #4.0开始启用 mmapv1存储引擎
    preallocDataFiles:  #启用或禁用数据文件的预分配。默认情况下,MongoDB不会预分配数据文件。
    nsSize:                 #默认16M命名空间文件的默认大小,即文件的结尾.ns。每个集合和索引都将计算为一个命名空间。
    quota:
        enforced:       #默认 false,启用或禁用每个数据库可以拥有的数字数据文件的最大限制
        maxFilesPerDB:      #默认8,每个数据库的数据文件数量的限制和enforced参数结合使用。。
    smallFiles:         #默认 false 选项减少数据文件的初始大小,使用大量的库存较小的文件
  wiredTiger:
     engineConfig:
        cacheSizeGB: 2   #将用于所有数据缓存的最大小
        journalCompressor:  #默认snappy,WiredTiger日志数据的压缩类型。
        directoryForIndexes: true #默认false 索引集合storage.dbPath存储在数据单独子目录
     collectionConfig:
        blockCompressor:  #默认snappy,用于压缩收集数据的默认压缩类型
     indexConfig:
        prefixCompression:   #默认 true启用或禁用索引数据的前缀压缩
  inMemory:
     engineConfig:
        inMemorySizeGB:     #默认值:物理RAM的50%少于1 GB

---进程控制模块
processManagement:    #使用处理系统守护进程的控制处理
  fork: true  # fork and run in background  后台运行
  pidFilePath: /data/mongodb/pid/mongod.pid  # location of pidfile 创建 pid 文件

---网络模块
net:
  port: 28017            #监听端口
  bindIp:  localhost,192.168.0.1     #绑定内网 ip,
  maxIncomingConnections: 5000  #mongos 或者 mongod 最大连接数,如果高于系统配置的最大连接阈值则不起作用
  #http:
    #enabled: true    #开启 http 接口确保生产环境中的REST API和JSON API都被禁用以防止潜在的数据暴露和***者的漏洞。

---安全认证模块
security:     #认证
  keyFile: /data/mongod/conf/keyfile  #秘钥文件的路径,用于 mongodb 分片集群或者副本集进行身份验证的共享秘钥
  clusterAuthMode: keyFile #集群的认证方式 keyFile 秘钥文件进行身份认证,推荐 x509证书认证
  authorization: enabled  #启用或者禁用基于角色的访问控制来管理每个用户对数据库资源和操作的访问 enabled 或者 disables
  javascriptEnabled:   #启用或者禁用服务端JavaScript 执行,禁用时不能使用JavaScript代码的服务端执行操作
  sasl:
     hostName: 
     serviceName: 
     saslauthdSocketPath: 
  enableEncryption:   #启用WiredTiger存储引擎的加密。您必须设置为true传递加密密钥和配置
  encryptionCipherMode:  #加密的模式适用于企业版
  encryptionKeyFile:  #通过KMIP 以外的进程管理密钥时的本地密钥文件的路径只有通过KMIP以外的进程管理密钥时才设置,需要saecurity.enableEncryption是true。

 kmip:
     keyIdentifier: 
     rotateMasterKey: 
     serverName: 
     port: 
     clientCertificateFile: 
     clientCertificatePassword: 
     serverCAFile: 

---副本集配置模块
replication:   #副本集用到的配置
   oplogSizeMB: 1024 #复制操作日志的大小,详细介绍见oplog文章,
   replSetName: eqxtest3  #副本集名称,同一个副本集的所有主机必须设置相同的名称
   secondaryIndexPrefetch:  #只用于 mmapv1存储引擎,默认二进制文件和相关操作索引加载到内存,none 不会加载,all 二次加载,_id_only出了已存在_id,不会加载其他索引
   enableMajorityReadConcern:  #默认 false

---分片集群配置模块
sharding:  #分片用到的配置
   clusterRole: shardsvr  #分片集群角色,configsvr作为配置服务启动,shardsvr 分片实例启动
   archiveMovedChunks:   #块迁移期间,一个分片不保存文档从分片迁移,默认 false
   autoSplit:  # 默认 true,启用或者禁用自动分片,
   configDB:  #mongos 分片集群实例必须制定相同的配置服务副本集名字,configDB: /cfg1.example.net:27017, cfg2.example.net:27017
   chunkSize:  #默认64M

注意:MongoDB 3.6以后开始,默认mongod和mongos绑定到localhost。如果部署的成员在不同的主机上运行,或者希望远程客户端连接到部署服务器,则必须指定--bind_ip或net.bindIp

3.2 mongodb配置文件案例

cat >  /data/mongodb/conf/mongo.conf <<EOF
systemLog:
   destination: file
   path: "/data/mongodb/log/mongodb.log"
   logAppend: true
storage:
   journal:
      enabled: true
   dbPath: "/data/mongodb/data/"
processManagement:
   fork: true
net:
   port: 27017
   bindIp: 172.21.209.123,127.0.0.1
EOF

4 配置通过系统的systemd管理mongodb数据库服务

通过配置systemd后,可以像管理mysql服务一样管理mongodb服务。

4.1 systemd服务管理模板

 cat > /etc/systemd/system/mongod.service <<EOF
[Unit]
Description=mongodb 
After=network.target remote-fs.target nss-lookup.target
[Service]
User=mongod
Type=forking
ExecStart=/data/mongodb/bin/mongod --config /data/mongodb/conf/mongo.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/data/mongodb/bin/mongod --config /data/mongodb/conf/mongo.conf --shutdown
PrivateTmp=true  
[Install]
WantedBy=multi-user.target
EOF

参数详解:
ExecStart:启动数据库服务的脚本路径
ExecStop:关闭数据库服务的脚本路径
--config:配置文件的路径

4.2、管理服务

[mongod@mysql-master data]$ systemctl restart mongod
[mongod@mysql-master data]$ systemctl stop mongod
[mongod@mysql-master data]$ systemctl start mongod

[mongod@mysql-master data]$ systemctl status mongod
● mongod.service - mongodb
   Loaded: loaded (/etc/systemd/system/mongod.service; enabled; vendor preset: disabled)
   Active: active (running) since Thu 2021-09-23 10:41:54 EDT; 17h ago
 Main PID: 27201 (mongod)
   CGroup: /system.slice/mongod.service
           └─27201 /data/mongodb/bin/mongod --config /data/mongodb/conf/mongo.conf

至此:部署mongodb数据库完成,可实现单机部署和日常管理。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,911评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,014评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 142,129评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,283评论 1 264
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,159评论 4 357
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,161评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,565评论 3 382
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,251评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,531评论 1 292
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,619评论 2 310
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,383评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,255评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,624评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,916评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,199评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,553评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,756评论 2 335

推荐阅读更多精彩内容