MongoDB是什么,怎么用?看完你就知道了
mongodb 只有当索引和工作集都可放入内存时,才会遇到CPU瓶颈,CPU在mongodb使用中的作用是用来检索数据,如果看到CPU使用饱和的情况,可以通过查询慢查询日志,排查是不是查询的问题导致的,如果是可以通过添加索引来解决问题 mongodb写入数据时会使用到CPU,但是mongodb写入时间一次只用到一个核,如果有频繁的写入行为,可以通过分片来解决这个问题 (3)内存 大内存是mongodb的保障,如果工作集大小超过内存,将会导致性能下降,因为这将会增加数据加载入内存的动作 (4)硬盘 mongodb默认每60s会与磁盘强制同步一次,称为后台刷新,会产生I/O操作。在重启时mongodb会将磁盘里面的数据加载至内存,高速磁盘将会减少同步的时间 (5)文件系统 使用ext4 和 xfs 文件系统 禁用最后访问时间
(6)文件描述符 linux 默认文件描述符是1024,需要大额度的提升这个额度 (7)时钟 mongodb各个节点服务器之间使用ntp服务器 2.安全 (1)绑定IP 启动时使用 - -bind_ip 命令 (2)身份验证 启动时使用 - -auth 命令
(3)副本集身份认证 使用keyFile,注意keyFile文件的权限必须是600,不然会启动不起来 3.数据的导入与导出
4.服务器配置 (1)拓扑结构 搭建副本集至少需要两个节点,其中仲裁结点不需要有自己的服务器 (2)Journaling日志 写数据时会先写入日志,而此时的数据也不是直接写入硬盘,而是写入内存 但是Journaling日志会消耗内存,所以可以在主库上面关闭,在从库上面启动 可以单独为Journaling日志使用一块固态硬盘 在插入时,可以通过驱动确保Journaling插入后再反馈,但是会非常影响性能。 5.日志 logpath 选项指定日志存储地址 -vvvvv 选项(v越多,输出越详细) db.runCommand({logrotare:1}) 开启滚动日志 6.数据库监控命令 (1)serverStatus 这里写图片描述
(2)top (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)压紧
压紧,会重写数据文件,并重建集合的全部索引,需要停机或者在从库上面运行,如果需要在主库上面运行,需要添加force参数 保证加写锁。 11.性能调优 (1)监控磁盘状态
(2)为提升性能检查索引和查询 总的来说,扫描尽可能少的文档。 保证没有冗余的索引,冗余的索引会占用磁盘空间、消耗更多的内存,在每次写入时还需做更多工作 (3)添加内存
dataSize 数据大小 和 indexSize 索引大小,如果两者的和大于内存,那么将会影响性能。 storageSize超过dataSize 数据大小 两倍以上,就会因磁盘碎片而影响性能,需要压缩。 (编辑:晋中站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |