`

MongoDB 运维优化系列(一)

 
阅读更多

一、设置日志级别

方法1:

db.adminCommand({"setParameter":1,"logLevel":0});

 方法2(仅启动):

在启动时,可通过在参数中附加数目更多的“v”(即-v、-vv、-vvv、-vvvv或-vvvvv)

    数字或v越小,表示日志优先级别越高。如 : 0 - 必要内容,5 - 几乎所有操作。

 

二、设置:对于查询耗时Nms的操作,记录日志

db.setProfilingLevel(1,N);

 

三、设置日志文件分割

方法1:

# kill -SIGUSR1 <mongod process id> //向mongo进程发送自定义过程
# find /data/mongodb_data/log/mongodb.log.* -mtime +7 -delete //只保留最近7天日志,剩下的删除

 方法2:

use admin;
db.runCommand({logRotate:1});

 WINDOWS系统只能用此方法。

方法3:Syslog Log Rotation

# vi /etc/logrotate.d/mongodb
/opt/mongodb/log/mongodb.log {
 daily     
 rotate 7
 compress    
 dateext
 missingok     
 notifempty    
 sharedscripts     
 copytruncate     
 postrotate        
 /bin/kill -SIGUSR1 `cat /data/mongodb_data/mongod.lock 2> /dev/null` 2>/dev/null || true     
endscript }

 

四、设置oplog

查询oplog的大小及保存的操作记录持续的时长
repltest:PRIMARY> db.printReplicationInfo()
configured oplog size:   1024MB
log length start to end: 3705secs (1.03hrs)
oplog first event time:  Thu Oct 10 2013 11:13:29 GMT+0800 (CST)
oplog last event time:   Thu Oct 10 2013 12:15:14 GMT+0800 (CST)
now:                     Fri Oct 11 2013 16:33:42 GMT+0800 (CST)
 
查询从节点的数据源列表,其中有数据滞后的时间
repltest:PRIMARY> db.printSlaveReplicationInfo()
source:   192.168.1.101:37017
syncedTo: Fri Oct 11 2013 16:38:16 GMT+0800 (CST)
= 1 secs ago (0hrs)
source:   192.168.1.100:37017
no replication info, yet.  State: ARBITER
 
修改oplog的大小

方法1:

The oplog exists internally as a capped collection, so you cannot modify its size in the course of normal operations.另:改变oplog大小,需要在每个节点上执行维护模式。(官方推荐)
步骤:

1:重启一个实例以单机模式,

通常再关闭server之前,使用rs.stepDown() 强制primary成为secondary

2:重新创建一个新大小,

其中包含旧的oplgo的入口条目的oplog

3:重启mongod作为replica set的成员

操作步骤:
1>: Restart a Secondary in Standalone Mode on a Different Port
关闭mongod实例:
repset:PRIMARY> use admin
repset:PRIMARY> db.shutdownServer()
重启mongod实例以单机模式,修改端口,并不要加--replSet参数
#vim /etc/mongo.conf
  dbpath=/var/lib/mongodb
  logpath=/var/log/mongodb/mongo.log
  pidfilepath=/var/run/mongo.pid
  directoryperdb=true
  logappend=true
  #replSet=repset
  bind_ip=192.168.1.100,127.0.0.1
  port=37017
  oplogSize=2000
  fork=true
#mongod -f /etc/mongo.conf
备份oplog
#mongodump --db local --collection 'oplog.rs' --port 37017
 
2>: Recreate the Oplog with a New Size and a Seed Entry
保存oplog的最新的时间点
> use local
> db.temp.save( db.oplog.rs.find( { }, { ts: 1, h: 1 } ).sort( {$natural : -1} ).limit(1).next() )
> db.temp.find()
删除旧的oplog
> db.oplog.rs.drop()
 
3> :Create a New Oplog
创建一个新的Oplog,大小为2G
> db.runCommand( { create: "oplog.rs", capped: true, size: (2 * 1024 * 1024 * 1024) } )
插入前面保存的旧的oplog的时间点的记录
> db.oplog.rs.save( db.temp.findOne() )
> db.oplog.rs.find()
 
4>:Restart the Member:
关闭单机实例:
> use admin
> db.shutdownServer()
修改回配置# vim /etc/mongo.conf
  dbpath=/var/lib/mongodb
  logpath=/var/log/mongodb/mongo.log
  pidfilepath=/var/run/mongo.pid
  directoryperdb=true
  logappend=true
  replSet=repset
  bind_ip=192.168.1.100,127.0.0.1
  port=37017
  oplogSize=2000
  fork=true
启动mongod
#mongod -f /etc/mongo.conf
重复上述步骤到所有需要更改的节点。
 

方法2:

步骤:
1:停掉所有replca set节点.
2:主节点删除local库下的文件,从节点删除数据目录下所有文件.
3:修改所有节点配置文件.
4:重启所有节点.
5:重新配置replca set,从节点会重新同步所有数据(initial sync).
ps:此法好处是简单,但需要停掉服务,且如果数据量很大,初始同步的成本较高
1>:关闭mongod实例(所有节点)
> use admin
> db.shutdownServer()
 
2>:删除local数据库下的所有文件(PRIMARY节点)
#rm -rf /var/lib/mongodb/local/*
  删除mongo数据目录(其他节点上操作,可不要删错哦,建议所有rm操作先mv,待无问题时候再删除)# rm -rf /var/lib/mongodb/*
 
3> 修改所有节点配置文件(oplogsize)
#vim /etc/mongo.conf
  dbpath=/var/lib/mongodb
  logpath=/var/log/mongodb/mongo.log
  pidfilepath=/var/run/mongo.pid
  directoryperdb=true
  logappend=true
  replSet=repset
  bind_ip=192.168.1.100,127.0.0.1
  port=37017
  oplogSize=2000
  fork=true
 
4> 重启所有节点mongod
> mongod -f /etc/mongo.conf

五、巡检脚本

#!/bin/bash
pro=`ps -ef|grep mongod|grep -v grep|awk '{print $2}'`
echo `ps aux|awk  'BEGIN {cpu=0;mem=0;apc=0;apm=0} {if("USER"!=$1){cpu+=$3;mem+=$4};if('$pro'==$2){apc+=$3;apm+=$4}}END{print ""cpu/100 "\t"mem/100 "\t" apc/100 "\t" apm/100}'`
df -h

 

分享到:
评论

相关推荐

    MongoDB Performance Best Practices

    MongoDB Stitch作为后端即服务(BaaS)提供者,为开发人员提供了如何高效地将MongoDB后端服务集成到应用中的一系列最佳实践。 资源与支持 书中还提供了MongoDB官方文档的链接,用户可以通过这些资源来获取更多关于...

    nosqlbooster4mongo-7.0.8,MongoDB连接工具

    版本7.0.8是该工具的一个更新版本,提供了一系列增强的功能和优化,旨在提高开发人员和数据库管理员的工作效率。 NosqlBooster 4 MongoDB的主要特点包括: 1. **图形化用户界面**:它提供了一个直观的GUI(图形...

    mongoDB说明文档

    数据库管理是MongoDB运维的核心工作,这部分内容介绍了如何进行用户权限管理、备份恢复、性能监控等。 ### **34. MongoDB概念和术语(Mongo Concepts and Terminology)** 这部分内容定义了MongoDB中常用的概念和...

    MongoDB 4.0.4

    首先,MongoDB 4.0系列引入了混合交易(Hybrid Transactions),这是一项基于ACID(原子性、一致性、隔离性和持久性)原则的重要更新。这种新的事务处理能力使得MongoDB能够处理复杂的业务逻辑,提供跨文档的一致性...

    mongodb 4.0.22版本

    在 MongoDB 4.0 系列中,最重要的特性之一是引入了交易(Transactions),支持多文档ACID事务,这使得 MongoDB 更适合处理复杂的业务逻辑,尤其是在金融、电子商务等领域。在 4.0.22 版本中,可能已经对事务处理的...

    mongodb-4.2.2 压缩包

    这里我们关注的是 MongoDB 的 4.2.2 版本,它包含了一系列改进和新特性,旨在提供更好的性能和功能。 首先,让我们了解一下 MongoDB 的核心概念。MongoDB 使用 JSON 格式的文档(BSON)来存储数据,这种格式允许...

    mongodb-linux-x86_64-rhel62-4.2.5.tgz

    在这个版本中,MongoDB引入了一系列的功能更新、性能优化和安全改进。 首先,让我们关注MongoDB的分片特性。在4.2.5版本中,MongoDB支持水平扩展,允许数据分布到多个分片上,以处理大量数据并提供高可用性。这使得...

    MongoDB权威指南.pdf 中文版

    索引是数据库性能优化的关键技术之一,本书中对MongoDB的索引创建和管理做了详细说明,包括如何建立单个字段索引、复合索引、地理位置索引等,以及如何通过索引优化查询速度。 聚合工具是MongoDB处理大量数据时的...

    mongodb权威指南(第二版)

    从给定文件信息中可以看到,这是一本关于MongoDB的权威指南书籍,属于图灵程序设计丛书系列。书中内容主要基于Kristina Chodorow的著作进行翻译,由邓强和王明辉负责翻译工作。该书是由O'Reilly公司出版的。 ...

    mongodb3.2.4说明文档

    #### 一、MongoDB简介 **1.1 文档型数据库** MongoDB 是一种基于分布式文件存储的开源文档型数据库系统,设计初衷是为了解决传统关系型数据库在处理大规模非结构化数据时存在的局限性。与传统的表格型数据存储方式...

    Python-mtools一组脚本用于设置MongoDB测试环境并分析和可视化MongoDB日志文件

    `mtools` 提供了一系列脚本,帮助用户便捷地创建和配置MongoDB实例,包括启动、停止、复制集配置、数据导入导出等操作。这些脚本简化了繁琐的手动配置,使得开发者可以更专注于应用的开发和测试,而不是数据库的运维...

    数据库运维2022版形考任务

    数据库运维是IT领域中的一个重要组成部分,它涉及到对数据库系统的安装、配置、监控、优化、备份、恢复以及安全性管理等一系列工作。在"数据库运维2022版形考任务"中,我们可以推测这是一份针对国开教育计算机网络...

    mongodb-linux-x86_64-3.4.6

    这个版本的MongoDB在2017年发布,提供了一系列增强的功能和性能优化。 MongoDB的主要特性包括: 1. 文档型数据模型:MongoDB以JSON格式的文档作为存储单元,这使得数据结构灵活,易于理解和操作。 2. 分片集群:...

    linux中MongoDB的安装包

    这通常通过运行`/path/to/mongodb-linux-x86_64-amazon2-4.0.0/bin/mongo`并执行一系列数据库命令来完成。 10. **监控与维护**:安装完成后,可以通过`systemctl`命令管理MongoDB服务,如查看状态、停止、重启等。...

    mongodb官方安装包

    总之,"mongodb官方安装包"的使用不仅涉及安装过程,还包括一系列的配置、管理和维护工作,这些都是理解和掌握MongoDB技术所必需的知识点。在实际应用中,根据具体场景灵活运用这些知识,才能确保MongoDB发挥出最佳...

    mongodb-linux-x86_64-3.0.2.tgz

    MongoDB在3.0.2版本中提供了一系列的重要特性和改进,使其在大数据管理和分布式系统中表现出色。 首先,MongoDB 3.0.2在性能方面进行了优化。它引入了新的存储引擎——WiredTiger,相比于之前版本的MMapV1,...

    MongoDB Architecture Guide

    Eliot Horowitz,MongoDB的联合创始人和CTO,在引言部分阐述了MongoDB的设计理念,即从现实世界的需求出发,解决传统关系型数据库存在的问题,并利用文档型数据库的数据模型提供一系列新的功能。 首先,MongoDB的...

    NoSQL Manager for MongoDB 3.8.2.4 管理工具

    总的来说,NoSQL Manager for MongoDB 3.8.2.4是一个强大而全面的MongoDB管理工具,它简化了数据库的日常管理任务,提升了开发和运维效率。无论是初学者还是经验丰富的数据库管理员,都能从中受益。

    MongoDB实战:MongoDB in Action

    2. **集合与文档**:在MongoDB中,数据库由一系列集合构成,集合又包含多个文档。这种结构类似于关系数据库中的表和行,但不需预定义模式,便于快速开发和迭代。 3. **查询语言**:MongoDB使用一种名为MQL(MongoDB...

    mongodb-linux-x86_64-ubuntu1604-3.6.17.tgz

    MongoDB 是一个高性能、开源、无模式的分布式文档数据库,被广泛用于开发现代应用程序,特别是那些需要处理大量数据和...此外,监控和优化数据库性能,以及定期备份数据以防止数据丢失,也是运维 MongoDB 的关键任务。

Global site tag (gtag.js) - Google Analytics