MongoDB数据库使用问题汇总

MongoDB数据库自动备份
华为云 MongoDB 数据库每天凌晨三点左右自动备份数据并上传至对象存储MSS,提高数据容灾能力的同时有效降低磁盘空间占用。通过备份文件能够快速恢复实例数据,有效防范因误操作等原因对业务数据造成不可逆的影响。备份文件默认保留7天。

MongoDB数据库手动备份
华为云 MongoDB 数据库支持手动备份,您可以将备份下载到服务器永久保存备份或者用备份创建新的MongoDB实例。通过备份文件可以恢复实例的数据,有效防范因误操作等原因对业务数据造成不可逆的影响。备份文件默认保留7天。

调整MongoDB数据库配置
用户可以在控制台对 MongoDB 数据库进行扩容操作,扩容过程中服务不受影响,整个过程对用户透明、无感知,有效满足业务增长的需要。

增删MongoDB数据库节点
在使用过程中,如需增加节点,可在实例列表页点击实例名称,选择节点列表,新建或删除节点。

MongoDB数据库在线管理
用户可以通过在线管理,可视化的查看和管理数据库。

如何迁移数据到 MongoDB数据库?
首先使用 mongoexport 导出数据到文件,然后使用 mongoimport 将文件导入 MongoDB。
 
从节点是否支持读写操作,如何设置MongoDB的从节点可读?
从节点仅支持读操作,设置从节点可读命令为:rs.slaveOk()。
 
MongoDB数据库如何冷备份和恢复?
备份时,首先在 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
 
MongoDB如何热备份和恢复?
不用关机,可以使用 mongodump 进行热备份;同样在不关机的情况下,可以使用 mongorestore --drop 进行恢复。其中,drop选项表示数据恢复之前先删除原有数据库里面的数据,避免数据重复。
 
如何修复MongoDB数据库?
数据损坏或数据状态不一致时导致无法正常启动,使用修复启动:
mongod --repair
它会将所有文档导出,然后导入,忽略无效文档,重建索引。
 
MongoDB数据库误操作后如何进行时间点的恢复?
使用 mongooplog。
 
如何查询MongoDB数据库副本集属性信息与同步状态?
使用客户端 mongo 连接到 Primary 节点,执行命令 rs.status() 查询副本集属性,其中 “set” 字段是副本集的id。
执行命令 rs.printReplicationInfo() 查询 oplog 的使用情况。
使用客户端 mongo 连接到 Secondary节点,执行命令 rs.printSlaveReplicationInfo() 查询与Primary 节点的同步状态,可以看到是否落后 Primary。
 
如何将MongoDB数据库命令脚本化?
#!/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)
此时可以阻止应用程序从它读。
 
如何使用MongoDB数据库七天以前的备份恢复数据库?
首先需要将备份下载到服务器,保留超过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端主动断开了连接,原因是该实例的连接数已经达到上限,无法再新建网络连接。
 
如何查看当前MongoDB数据库连接数?
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或以上版本再试。

标签

发表评论