MongoDB实战第二版笔记(14)第十三章笔记(系列终)
1、MongoDB三种不同类型的集群:
- 单节点:不需要可靠性和数据集比较小的选择
- 可复制集:最低是3个节点(2个数据存储和1个裁判节点)
- 分片集群。最小配置有2个片,只有一个片会增加额外压力而且无法利用分片优势,每个分片应是可复制集,并且有3个配置服务器确保没有单点故障,两个mongos路由进程保证高可用性。当想要捆绑廉价服务器提升容量时使用分片集群。
2、mongoDB服务器的组件必须运行在采取小端存储的机器上。
3、磁盘性能重要的原因
- 高写入工作负载。当数据写入MongoDB时,服务器必须把数据写入磁盘,对于高并发写入的APP和慢速磁盘,写入操作会影响整个系统的性能。
- 快速磁盘允许更快的服务器预热。任意时候重启服务器,都需要把数据集加载到内存里。每个连续的MongoDB读或写都会加载新的虚拟内存到内存里,直到物理内存占满。快速磁盘会加速过程,显著提高MongoDB的性能
- 快速磁盘会调整应用程序必须的工作集大小,达到内存的比率(使用SSD磁盘,可能需要更小的内存或更大的容量)。
4、正式部署是使用RAID阵列。
5、如果要启用日志运行MongoDB服务器,记住下面要点:
- 日志需要额外的写操作
- 解决该问题的一个方法,独立分配日志磁盘,创建符号链接,指定日志文件路径。分区容量尽量大。达到120GB就够了。
- 日志无法担保不丢失写入数据,它只保证MongoDB恢复时的一致性状态。
日志每隔100ms会同步日志到磁盘,所以意外关闭可能会丢失100ms中的写入数据。
6、关于日志的几点:
- 是监控的第一个级别
- 用-logpath指定日志路径
- mongod启动时用-vvvvvv(v)参数越多输出信息越详细
- 用-logappend启动mongod,这会追加日志到现有日志,而不是默认模式,使用时间戳滚动文件
7、诊断命令
- 全局服务器统计信息:db.serverStatus()
- 统计当前运行的操作:db.currentOp()
- 包含空闲的操作:db.currentOp(true)
- 每个数据库的计数器和活动统计:db.runCommand({top:1})
- 内存和磁盘的使用情况统计:db.stats()
8、诊断工具
- mongostat,全局系统统计信息(定时轮训并显示统计从每秒插入的数量到内存的使用量,再到B-树页缺失的频率)
- mongotop,全局操作统计信息
- mongosniff(高级),监控MongoDB网络流量
- bsondump,以JSON格式显示BSON文件
9、备份MongoDB数据库的通用规则
- 使用mongodump和mongorestore
- 复制原始数据文件
- 使用MMS备份
10、mongodump用于把数据库内容写为BSON文件。mongorestore用于读取这些文件并恢复。它们可以用于备份实时运行的数据库(无需锁住或关闭数据库),或把它们指向到一个数据文件的集合上。