如何迁移数据到 MongoDB?

首先使用 mongoexport 导出数据到文件,然后使用 mongoimport 将文件导入 MongoDB。

从节点是否支持读写操作,如何设置MongoDB的从节点可读?

从节点仅支持读操作,设置从节点可读命令为:rs.slaveOk()。

如何冷备份和恢复?

备份时,首先在 mongo 中刷新数据写入磁盘,并锁住整个实例:
然后打包压缩整个数据库目录(也可以打包部分数据库),作为备份:
tar -cvzf /root/mongodb_20160405.tar.gz /data/mongodb/*
最后在 mongo 中执行 db.fsyncUnlock()解锁,备份步骤完成!
>db.fsyncUnlock()  
恢复时,首先在 mongo 中关闭服务:
>use admin 
>db.shutdownServer()
然后将数据文件删除!注意确认备份存在且正常!
rm -rf /data/mongodb/*
解压备份的文件到根目录下,相当于恢复:
tar -xvzf /root/mongodb_20160405.tar.gz -C /data/mongodb/
如果启动不了服务,先删除文件mongod.lock
rm -f /data/mongodb/mongod.lock  
最后启动服务,正常访问。
mongod

如何热备份和恢复?

不用关机,可以使用 mongodump 进行热备份;同样在不关机的情况下,可以使用 mongorestore --drop 进行恢复。其中,drop选项表示数据恢复之前先删除原有数据库里面的数据,避免数据重复。

如何修复数据库?

数据损坏或数据状态不一致时导致无法正常启动,使用修复启动:
mongod --repair
它会将所有文档导出,然后导入,忽略无效文档,重建索引。

误操作后如何进行时间点的恢复?

使用 mongooplog。

如何查询副本集属性信息与同步状态?

使用客户端 mongo 连接到 Primary 节点,执行命令 rs.status() 查询副本集属性,其中 “set” 字段是副本集的id。
执行命令 rs.printReplicationInfo() 查询 oplog 的使用情况。
使用客户端 mongo 连接到 Secondary节点,执行命令 rs.printSlaveReplicationInfo() 查询与Primary 节点的同步状态,可以看到是否落后 Primary。

如何将命令脚本化?

#!/bin/bash
#mongodb 进入 client 并 use admin
cd /data/mongodb/mongodb-linux-x86_64-rhel62-3.2.4/bin
MongoDB='./mongo 127.0.0.1:27017'
$MongoDB <<EOF
use admin
db.auth("root","123456")
show collections
exit
EOF

把上面的内容写入 ***.sh 文件中,执行 chmod 777 ***.sh 赋给权限,在linux > sh ***.sh 即可完成命令执行。

如何添加 Secondary节点?

添加优先级为0.5的节点示例:

rs.add({"_id" : 4, "host" : "127.0.0.4:27017", "priority" : 0.5})

如何设置隐藏 Secondary 节点?

var config = rs.conf()
config.members[1].hidden = true
config.members[1].priority = 0
rs.reconfig(config)

此时可以阻止应用程序从它读。 

如何使用七天以前的备份恢复数据库?

首先需要将备份下载到服务器,保留超过7天后,使用>mongorestore --host=replset/${MASTER_IP} --gzip --archive=${URL}命令恢复数据库。如:./mongorestore --host=replset/172.26.16.95:27017 --gzip --archive=/root/dasdaadqs-20161122-030035.sql.xbstream
> use admin
switched to db admin
> db.fsyncLock() 

MongoDB是否支持高可用?

MongoDB 提供多节点副本集的高可用架构。MongoDB采用一主多从的方式提供服务 。所有的写请求会被发到主节点,主从之间会自动进行数据同步。您可以根据需求创建多个从库,满足大量读应用需求,减轻主库压力。

美团云MongoDB使用的是哪个版本的?

MongoDB 3.2.10版本。

MongoDB默认采用什么存储引擎?

默认采用WiredTiger存储引擎,建议使用默认(WiredTiger)引擎。

MongoDB是否支持外网访问?

出于安全目的暂时只支持在您账号下的云主机下进行内网访问,外网访问后续会考虑开通。

使用mongo shell连接实例时,提示Connection reset by peers?

上述错误信息说明是server端主动断开了连接,原因是该实例的连接数已经达到上限,无法再新建网络连接。
 

如何查看当前连接数?

mongo-test:PRIMARY> db.serverStatus().connections
{
  "current" : 0,
  "available" : 2000,
  "internal_current" : 3,
  "internal_available" : 497,
  "totalCreated" : NumberLong(21)
}

为什么连上mongodb后执行命令提示:Error: 18 { ok: 0.0, errmsg: "auth failed", code: 18 } 

是由于没有给添加数据库添加权限。
您需要在mongoshell中执行use admin;db.auth('username','password');添加授权,username和password为您创建mongodb实例时输入的账号密码
还有一种情况,是由于您的mongoshell版本过低,可以用mongo --version查看下mongoshell的版本,如果低于3.2版本需要您升级到3.2或以上版本再试。