mongodb 4.2版本安装维护手册
一,MONGODB安装
注:安装前或新机器上架前,请先运行初始化脚本
1,卸载系老版本mongodb
rm -rf /opt/mongodb
2,安装mongodb
下载mongodb程序,地址为:Download
MongoDB Community Server | MongoDB,注意清选择Version;Platform;Package
解压并进行重命名
tar -xf mongodb-linux-x86_64-rhel70-4.2.23.tgz
mv mongodb-linux-x86_64-rhel70-4.2.23 mongodb4
进入mongodb4 目录下有以下文件
[root@xxxxxx mongodb4]# ll
total 316
drwxr-xr-x 2 root root 4096 Dec 15 11:08 bin
-rw-r--r-- 1 root root 30608 Sep 29 23:36 LICENSE-Community.txt
-rw-r--r-- 1 root root 16726 Sep 29 23:36 MPL-2
-rw-r--r-- 1 root root 2581 Sep 29 23:37 README
-rw-r--r-- 1 root root 75405 Sep 29 23:37 THIRD-PARTY-NOTICES
-rw-r--r-- 1 root root 183512 Sep 29 23:38 THIRD-PARTY-NOTICES.gotools
我们最主要关注bin这个目录下的文件即可。
MongoDB 在 bin 目录下提供了一系列有用的工具,这些工具提供了 MongoDB 在运维管理上的方便。
工具 | 描述 |
---|---|
bsodump | 将 bson 格式的文件转储为 json 格式的数据 |
install_compass | 该脚本将按照 Mongodb Compass 社区版本 |
mongo | 客户端命令行工具,其实也是个js解释器,支持js语法 |
mongod | 是MongoDB系统的主要守护进程。它处理数据请求,管理数据访问并执行后台管理操作。 |
mongodump | MongoDB数据备份工具 |
mongoexport | MongoDB 数据导出工具 |
mongofiles | GridFS 管理工具,可实现二 |
mongoimport | MongoDB 数据导入工具 |
mongoreplay | MongoDB的流量捕获和重播工具 |
mongorestore | MongoDB 数据恢复工具 |
mongos | 分片路由,如果使用了 sharding 功能,则应用程序连接的是 mongos 而不是 mongod |
mongostat | 提供当前正在运行mongod 或mongos 实例的状态的快速概述 |
mongotop | 跟踪一个MongoDB的实例,查看哪些大量的时间花费在读取和写入数据 |
3,运行MongoDB
Mongdb 有几种启动方式,我这里使用的是配置文件方式。
# vim mongo.conf
port=12345
bind_ip=10.xx.xx.xx
dbpath=/opt/mongodb4/data
logpath=/opt/mongodb4/logs/mongod.log
pidfilepath=/opt/mongodb4/logs/mongod.pid
logappend=true fork=true
# /opt/mongodb4/bin/mongod -f /opt/mongodb4/mongo.conf
about to fork child process, waiting until server is ready for connections.
forked process: 29076 child process started
successfully, parent exiting
如果需要开启密码登录,需要在配置文件里加上 auth=true。
如果要使用其他参数,请参考:MongoDB
mongod.exe - MongoDB服务启动工具
二,MONGODB复制
MongoDB复制集间的数据复制类似MySQL主从复制,当一个修改操作(包括插入/更新/删除)到达主节点时,它对数据的操作会被记录到oplog文件中,从节点从主节点上不断获取新进入主节点的oplog,并在自身数据上回放,以此保持跟主节点的数据一致。mongodb复制主要有以下三个方面的优点:
- <1>如果主服务器出问题,可以快速的切换到从服务器提供服务。
- <2>可以读写分离,在主服务器上执行写操作,而将查询操作放在从服务器上,降低主服务器的访问压力。
- <3>可以在从服务器上执行备份,以避免备份期间影响主服务的服务。
1,mongodb主从复制的配置
- 确保主从服务器上安装了相同版本的mongodb服务器,安装步骤见上。在主服务器上修改配置文件。例如:
# vim mongo_master.conf
port=12345
bind_ip=10.12.113.61
dbpath=/opt/mongodb4/data
logpath=/opt/mongodb4/logs/mongod.log
pidfilepath=/opt/mongodb4/logs/mongod.pid
logappend=true
fork=true
master=true
- 修改mongodb 从服务器配置文件。
# vim mongo_slave.conf
port=23456
bind_ip=10.12.113.50
dbpath=/opt/mongodb4/data
logpath=/opt/mongodb4/logs/mongod.log
pidfilepath=/opt/mongodb4/logs/mongod.pid
logappend=true
fork=true
slave=true
source=10.12.113.61:12345
- 修改完主从配置文件后就可以启动了
/opt/mongodb4/bin/mongod -f /opt/mongodb4/mongo_master.conf
/opt/mongodb4/bin/mongod -f /opt/mongodb4/mongo_slave.conf
2,mongodb主从复制日常维护
- 从服务器复制出错的处理
如果mongodb 出现 error RS102 too stale to catch up 错误是因为启动的时候指定 配置文件里参数oplogSize=128,(主节点的oplog日志大小,单位为M,更改oplog大小时,删除local.,然后加 oplogSize= 重新启动即可,*代表大小)在对主库大数据插入的时候,可能会出现来不及同步到从库的现象。
三,mongodb日常维护
1,忘记admin密码
操作步骤如下所示:
1. 通过 ps -ef |grep mongod 找个配置文件
2. 修改配置文件, 把auth修改为false,auth=false #关闭用户认证
3. 重启mongodb
4. 删除mongo用户
use admin
db.system.users.find()
db.system.users.remove({})
db.createUser({user:'root',pwd:'abc123',roles:['admin','userAdminAnyDatabase']}) # 添加admin帐户
5. 修改配置文件, 把auth修改为true,auth=true #关闭用户认证
6. 重启mongodb
2,开启慢查询日志
数据查询慢,影响数据库性能。为了准确获知是那些sql语句导致查询慢,我们需要开启慢查询日志功能来帮助我们分析优化我们的数据库。
- 重启数据库开启慢查询日志。在配置文件中添加
#开启慢查询,200毫秒的记录
profile=1 #0:关闭,不收集任何数据。 1:收集慢查询数据,默认是100毫秒。 2:收集所有数据
slowms=200
3,mongodb用户权限管理
建议使用图形化工具管理用户,比如:Robo 3T,Studio 3T。
4,mongodb性能优化
第一步:找出慢语句 一般来说查询语句太慢和性能问题瓶颈有着直接的关系,所以可以用MongoDB的性能分析工具来找出这些慢语句: db.setProfilingLevel(1, 100);
第二步:使用explain分析 通过使用explain来对这些慢语句进行诊断。此外还可以mtools来分析日志。
第三步:创建索引 分析完之后需要创建新的索引(index)来提升查询的性能。别忘了在MondoDB中可以在后台创建索引以避免collections 锁和系统崩溃。
第四步:使用稀疏索引来减少空间占用 如果使用sparse documents,并重度使用关键字$exists,可以使用sparse indexes来减少空间占用提升查询的性能。
第五步:读写分离 如果读写都在主节点的话,从节点就一直处在空置状态,这是一种浪费。对于报表或者搜索这种读操作来说完全可以在从节点实现,因此要做的是在connection
string中设置成secondarypreferred。