mongodb写入数据时会使用到CPU,但是mongodb写入时间一次只用到一个核,如果有频繁的写入行为,可以通过分片来解决这个问题
(3)内存
大内存是mongodb的保障,如果工作集大小超过内存,将会导致性能下降,因为这将会增加数据加载入内存的动作
(4)硬盘
mongodb默认每60s会与磁盘强制同步一次,称为后台刷新,会产生I/O操作 。在重启时mongodb会将磁盘里面的数据加载至内存,高速磁盘将会减少同步的时间
(5)文件系统
使用ext4 和 xfs 文件系统
禁用最后访问时间
vim /etc/fstab(6)文件描述符
linux 默认文件描述符是1024,需要大额度的提升这个额度
(7)时钟
mongodb各个节点服务器之间使用ntp服务器
2.安全
(1)绑定IP
启动时使用 - -bind_ip 命令
(2)身份验证
启动时使用 - -auth 命令
db.addUser("","",true)//创建用户,最后一个参数指定是否只读(3)副本集身份认证
使用keyFile,注意keyFile文件的权限必须是600,不然会启动不起来
3.数据的导入与导出
mongoimportmongoexport4.服务器配置
(1)拓扑结构
搭建副本集至少需要两个节点,其中仲裁结点不需要有自己的服务器
(2)Journaling日志
写数据时会先写入日志,而此时的数据也不是直接写入硬盘,而是写入内存
但是Journaling日志会消耗内存,所以可以在主库上面关闭,在从库上面启动
可以单独为Journaling日志使用一块固态硬盘
在插入时,可以通过驱动确保Journaling插入后再反馈,但是会非常影响性能 。
5.日志
logpath 选项指定日志存储地址
-vvvvv 选项(v越多,输出越详细)
db.runCommand({logrotare:1}) 开启滚动日志
6.数据库监控命令
(1)serverStatus
文章插图
这里写图片描述
- globalLock 表示服务器花在写锁上面的总时间
- mem显示了如何使用内存
- bits 表明这台机器的位长
- resident 表示占用物理内存数量
- virtual 表示使用的虚拟内存
文章插图
(3)db.currentOp()
文章插图
7.mongostat
动态展示mongodb活动数据
8.web控制台
占用当前mongodb监听端口往上1000号的端口
9.备份与恢复
(1)mongodump
把数据库内容导出成BSON文件,而mongorestore能读取并还原这些文件
(2)mongorestore
把导出的BSON文件还原到数据库
(3)备份原始数据文件
可以这么做,但是,操作之前需要进行锁库处理 db.runCommand({fsync:1,lock:true})
db.$cmd.sys.unlock.findOne() 请求解锁操作,但是数据库不会立刻解锁,需要使用db.currentOp()验证 。
10.压紧与修复
(1)修复
mongd --repair 修复所有数据库
db.runCommand({repairDatabase:1}) 修复单个数据库
修复就是根据Jourling文件读取和重写所有数据文件并重建各个索引
(2)压紧
db.spreadsheets.reIndex() //重建索引db.runCommand({compact:"spreadsheets"}) 压紧,会重写数据文件,并重建集合的全部索引,需要停机或者在从库上面运行,如果需要在主库上面运行,需要添加force参数 保证加写锁 。
11.性能调优
(1)监控磁盘状态
IOStat(2)为提升性能检查索引和查询
总的来说,扫描尽可能少的文档 。
保证没有冗余的索引,冗余的索引会占用磁盘空间、消耗更多的内存,在每次写入时还需做更多工作
(3)添加内存
db.stats() //查看数据库数据占用大小状态dataSize 数据大小 和 indexSize 索引大小,如果两者的和大于内存,那么将会影响性能 。
storageSize超过dataSize 数据大小 两倍以上,就会因磁盘碎片而影响性能,需要压缩 。
【MongoDB是什么,怎么用?看完你就知道了】
推荐阅读
- 腾讯会员怎么取消自动续费
- 躺平是什么意思
- 绿茶有几种,其功效是什么?
- 淘宝直播间人气怎么能上升 淘宝直播怎么才能把人气做起来
- 梦见便秘自己抠出来了 梦见便秘是什么意思
- 昙花的花期是什么时候 昙花的花期是多长时间
- 世界上最高的果树是什么 世界上有多少种水果树
- 冬天开空调还需要盖被子吗 开空调盖被子是什么心理
- 违章停车贴条怎么处理,处罚多少钱 违章停车被贴条没写金额怎么处理
- 花小猪打车怎么看不到车牌 用花小猪打车看的到司机的车牌号码吗