
MongoDB
遇星
我想成为我自己
展开
-
MongoDB 关于用户认证
1.开启用户认证步骤1.1以非用户认证模式开启实例,如配置文件中注释#auth=true1.2在admin下创建一个管理用户,至少要有userAdmin或userAdminAnyDatabase权限use admindb.createUser( { user: "root", pwd: "sam", roles: [ { role: "root", db: "a...原创 2020-05-07 14:44:33 · 410 阅读 · 0 评论 -
MongoDB 报错AuthenticationFailed Missing credentials for authenticating as internal user
复制集开启auth验证后,日志报错:[ReplicationExecutor] Error in heartbeat request to 127.0.0.1:37017; AuthenticationFailed Missing credentials for authenticating as internal user原因是开启auth之后,需要增加keyFile验证。创建keyfil...原创 2020-05-07 14:29:33 · 923 阅读 · 0 评论 -
MongoDB 占用大量内存和Swap不释放
接到告警,一台部署了多实例MongoDB的机器内存和swap快用完了,排查发现下午某一个实例导入大量数据。为什么会用了这么多内存和swap?因为WiredTiger引擎使用内存的方式是:50% of (RAM - 1 GB)或256 MB,哪个更大就以哪个为上限。一个机器部署了多个实例,按照50% of (RAM - 1 GB)的比例分配,那当然是会把内存用完的。解决方式只能是重启实例了...原创 2020-01-09 15:35:44 · 3803 阅读 · 0 评论 -
MongoDB 添加分片和删除分片
一、添加分片搭建好复制集后,登陆mongos,添加分片:db.runCommand( { addshard:“repset3/127.0.0.1:37017,127.0.0.1:37018,127.0.0.1:37019”,name:“s3”});注意要打开balancer,否则新加入分片后不会自动将数据打散:startBalancer()可以设置窗口避开高峰时期:db.setting...原创 2020-01-09 15:19:00 · 1906 阅读 · 0 评论 -
MongoDB profiler慢查询日志
在查询记录方面,MySQL有slowlog和general log,而MongoDB同样可以使用profiler来记录操作日志。不同的是,profiler要么记录所有操作日志,或者慢查询日志,而不能想MySQL一样slow log和general log分开设置。profiler的概念:1.慢查询阈值,slowms;2.profiling级别,可分为0,1,2三级;0表示关闭profiler...原创 2019-12-12 16:21:35 · 814 阅读 · 0 评论 -
MongoDB 如何在shell监控脚本中执行查询
在shell监控脚本中,通常需要以非交互的方式连接到数据库实例查询一些信息,例如MySQL的mysql -e就非常方便,但是对于MongoDB来说,并不能直接在登陆命令后加上查询命令来直接执行,例如mongo --port 27017 "rs.status()"MongoDB shell version: 3.0.6connecting to: 127.0.0.1:27017/rs.stat...原创 2019-12-12 15:09:48 · 1256 阅读 · 1 评论 -
MongoDB CURD之DELETE
MongoDB删除文档的方式有deleteManydeleteOneremove1.删除所有文档db.inventory.deleteMany({})db.bios.remove({ })等效于SQL:delete from inventory;但建议使用db.inventory.drop()2.删除符合条件的所有文档db.inventory.deleteMany({ stat...原创 2019-11-29 15:40:23 · 444 阅读 · 0 评论 -
MongoDB CURD之UPDATE
MongoDB实现update的方式有updateOneupdateManyreplaceOne1.更新匹配条件的第一条文档db.inventory.updateOne( { item: "paper" }, { $set: { "size.uom": "cm", status: "P" }, $currentDate: { lastModified: t...原创 2019-11-29 15:30:57 · 192 阅读 · 0 评论 -
MongoDB CURD之READ
一、查询所有列MongoDB查询使用find()。1.无条件查询db.sam.find()等效于SQL:select * from sam;2.等值条件db.sam.find({name:“Sam”})等效于SQL:select * from sam where name=‘Sam’;3.in条件db.sam.find({name:{KaTeX parse error: Expe...原创 2019-11-29 15:04:35 · 151 阅读 · 0 评论 -
MongoDB CURD之CREATE
CURD中的C,表示创建或者插入,在MongoDB的特性中,并不需要显示地先创建一个collection,因为MongoDB不对表结构有固定的要求,如果一个表尚未存在,那么在插入第一条document时,该表即被创建。一、语法插入文档有两种方式:1.插入单条文档db.collection.insertOne()如:db.sam.insertOne({name:“Sam”,age:25}...原创 2019-11-29 12:23:47 · 301 阅读 · 0 评论 -
MongoDB 索引
一、单列索引例如一个文档如下:{ "_id": ObjectId("570c04a4ad233577f97dc459"), "score": 1034, "location": { state: "NY", city: "New York" }}1.针对score建立索引db.records.createIndex({score:1})4.2版本以前可以指定backgro...原创 2019-11-28 16:33:42 · 152 阅读 · 0 评论 -
MongoDB 创建索引的进阶知识;复制集/分片集该怎么创建索引?
一、关于foreground/background index build在4.2以前,MongoDB创建索引有两种方式,一种是foreground,前台创建,一种是background,后台创建。默认情况下是使用foreground的方式创建索引,这种方式会对表所属的数据库持有一个排它锁,所有对该库的读写都会被堵,例如listDatabases需要对所有库的读锁,执行这个操作会被堵塞。可以...原创 2019-11-27 14:31:52 · 969 阅读 · 0 评论 -
MongoDB搭建遇到的一些问题
一、复制集初始化> rs.initiate(rsconf){ "ok" : 0, "errmsg" : "replSetInitiate quorum check failed because not all proposed set members responded affirmatively: ... caused by :: Connection refused", "co...原创 2019-11-20 14:53:46 · 2409 阅读 · 5 评论 -
MongoDB 复制集从节点recovering重新初始化
检查发现MongoDB复制集从库状态为RECOVERING,后台日志显示[rsBackgroundSync] we are too stale to use xxx.xxx.xxx.xxx:27017 as a sync source,意思是当前从库的数据已经太陈旧了,无法从主库的oplog里找到对应后续日志,所以就无法推进从库的复制进度,导致从库一直处于RECOVERING的状态。导致从库异常...原创 2019-10-17 00:20:59 · 2720 阅读 · 0 评论 -
MongoDB mongorestore导入遇到waiting for write concern
开发人员告知使用mongorestore导入数据过程中卡着停滞不前,我协助排查。使用db.currentOp()发现一些下面的信息:{ "desc" : "conn927252", "threadId" : "47404144039680", "connectionId" : 927252, "client" : "xxx.xxx.xxx.xxx:20338", ...原创 2019-10-15 21:50:25 · 576 阅读 · 0 评论 -
MongoDB copydatabase引起数据库hang的原因
开发使用copydatabase导数,找过来说MongoDB hang住了,查询被卡住。连上去执行show dbs;果然卡住了,没反应/apps/svr/mongodb32/bin/mongo --port 27017MongoDB shell version: 3.2.22connecting to: 127.0.0.1:27017/testreplset_devops:PRIMARY...原创 2019-09-25 16:15:23 · 848 阅读 · 0 评论 -
MongoDB sharding+replicate set搭建
1.分片集服务器分配共三台机器:192.168.32.1192.168.32.2192.168.32.3架构:三分片,每个分片为一主一从一arbiter复制集,各分片复制集的主节点分散在三台服务器上。192.168.32.1:27018 mongos192.168.32.1:27019 configsvr192.168.32.2:27019 configsvr192.168.32...原创 2019-09-20 16:09:27 · 250 阅读 · 0 评论 -
MongoDB 复制集搭建
1.服务器分配192.168.33.1 主192.168.33.2 从192.168.33.3 arbiter2.三个服务器分别安装MongoDB,如ssh 192.168.33.1su - samcd /sam/softtar -zxf mongodb-linux-x86_64-3.2.22.tgzln -s /sam/soft/mongodb-linux-x86_64-3.2...原创 2019-09-20 15:58:44 · 193 阅读 · 0 评论