
数据库运维-MongoDB
MongoDB数据库运维
戒掉贪嗔痴
10年以上DBA从业经验,Oracle ACE,中国DBA联盟成员,青学会专家顾问,Oracle,MySQL,PostgreSQL DBA,大数据运维工程师。
熟悉20种数据库的运维及管理:横跨关系数据库,NoSQL数据库,搜索引擎,大数据等。
获得IT类认证十几张。
擅长数据库系统架构涉及,容量规划,灾备系统建设,故障诊断及性能优化。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
MongoDB 嵌入式文档数组的查询
1.MongoDB 嵌入式文档数组的查询。原创 2025-07-03 11:17:12 · 101 阅读 · 0 评论 -
MongoDB 嵌套文档查询与数组查询
1.MongoDB 嵌套文档查询。原创 2025-07-03 11:04:54 · 131 阅读 · 0 评论 -
MongoDB INSERT 数据
1.MongoDB INSERT 数据。原创 2025-07-03 11:03:46 · 137 阅读 · 0 评论 -
mongodb分片集群部署
4.配置mongos集群。原创 2025-05-29 08:46:16 · 134 阅读 · 0 评论 -
【mongodb】有索引但是查询时间特别长
截取执行计划中部分内容,发现,走了索引,但是扫描的记录太多。另外发现该集合有分片键 belong_id, 查询中没有使用分片键。由此可见,这里的性能差,原因是查询未使用分片键。1.mongodb的某个集合有索引但是查询时间长。创建携带分片的键的索引,并说明分片键。原创 2025-03-31 14:39:00 · 221 阅读 · 0 评论 -
【mongodb】神奇的rs.add(“ip:port“);
当执行这个命令时,会清理当前数据库中的数据,全部重新从主库拉去数据到当前节点,无需备份恢复操作。只需要执行这个命令就可以一键恢复从库。当执行这个命令时,集群会清理掉关于这个节点的信息,修改集群配置。当集群中某个节点意外不同步时,如何修复。(2)重新将提出的节点加入集群。(1)将不同步的节点踢出集群。原创 2025-03-27 14:54:54 · 139 阅读 · 0 评论 -
【mongodb】查看数据库正在执行什么操作及创建hash索引和hash分片
-查看当前MongoDB的集合上在做什么动作。1.查看数据库在当前集合上做什么操作。2.创建hash索引及hash分片。--创建HASH索引。原创 2025-03-25 16:43:44 · 161 阅读 · 0 评论 -
【Mongodb】使用admin用户shutdown关闭数据库
1.使用admin用户shutdown方式关闭数据库实例。原创 2025-03-25 16:02:48 · 125 阅读 · 0 评论 -
【mongodb】MongoDB server version: 4.2.3-admin 管理员密码忘记
1.admin密码忘记重置方法。原创 2025-03-25 16:00:45 · 231 阅读 · 0 评论 -
【mongodb】节点备剔出集群备份恢复注意事项
1.节点被提出集群备份恢复注意事项原创 2025-03-25 15:57:33 · 131 阅读 · 0 评论 -
【mongodb】全库备份与全库恢复
1.全库备份与全库恢复。原创 2025-03-25 15:54:58 · 202 阅读 · 0 评论 -
【MongoDB】查询某个集合上进程并杀进程
或者数据库夯死在某个任务上,导致业务无法使用,可以使用db.killOp("opid");命令杀进程,里面要携带第一个句子查询出来的opid值。特别是想在某个集合上创建索引,但是因为该集合上还有任务在运行。想要停止任务可以杀进程。1.--查看集合上的进程。原创 2025-03-25 11:57:47 · 166 阅读 · 0 评论 -
【MongoDB】创建固定集合
创建固定集合可以指定集合大小,遵循先进先出的规则。原创 2025-03-25 11:55:29 · 89 阅读 · 0 评论 -
【MongoDB】创建分片集合的复合索引夯死
针对分片集合的索引创建,需要确保所有的节点在线,否则命令夯死无法成功。在数据库里执行了MongoDB的分片集合的索引创建,但是执行了很久都没有成功。mongos节点的日志提示一个数据节点宕机无法连接。3.下线不同步的节点。原创 2025-03-25 11:27:31 · 86 阅读 · 0 评论 -
MongoDB集合分片注意事项
索引排序后进行分片:特点:数据会先进入到某个分片,导入结束后逐渐的从分片多的分片迁移chunk到分片少的节点。hash索引分片性能更好。普通索引分片性能差。如果是多个字段的索引,普通索引性能将大幅下降。hash索引分片:数据直接打散存入不同的分片,性能比前者要好很多,避免了后续的迁移动作。如上两种方法,均可实现集合的分片,但是导入数据时性能上有较大的差异。对于需要分片的字段,应该创建hash索引,而非普通索引。原创 2025-02-13 08:53:50 · 243 阅读 · 0 评论 -
mongodb 解决数据分片不均衡的问题
导入数据时,mongodb的分片信息显示某些分片chunk多,有些分片chunk少。我们会误以为分片不均衡。分片键设置一个就够了,如果设置多个分片键,将会导致导入数据的速度非常慢。导入数据时,刚开始某个节点的分片明显比其他分片的chunk多很大。分片较多的节点会将chunk迁移到其他分片,来保持平衡,从而消除数据集倾斜的风险。分片设置一个就够了。设置多个分片键将拖慢导入速度。倒数时,开始倾斜,最终平衡。不用关注倒数时在瞬时倾斜问题。原创 2025-02-12 11:09:33 · 172 阅读 · 0 评论 -
在线修改MongoDB OPLOG 大小
注意在线修改大小单位是MB:例如设置为:200G;原创 2025-02-10 10:49:07 · 159 阅读 · 0 评论 -
mongodump 版本不一致导致的数据问题
BinData(3,'xxxx') 原来是UUID子类型,导入到目标端后变成了 BinData(0,'xxx');标准的二进制类型,导致业务无法查询。mongodump 版本:mongodb-database-tools-100.10.0。mongodump 版本:mongodb-database-tools-100.6.1。源端导出和目标端导入使用相同的版本的mongodump、mongorestore;2.数据导入到目标端后。原创 2025-02-08 17:06:07 · 160 阅读 · 0 评论 -
【MongoDB】复制集主从切换
3.新增数据并重启宕机的节点。原创 2024-06-15 10:13:53 · 404 阅读 · 0 评论 -
【MongoDB】复制集的仲裁节点任意添加和删除
添加仲裁节点通过:rs.addArb("IP:PORT"),删除仲裁节点的命令和删除普通数据节点的命令相同。仲裁节点,可以随时添加和删除。2.将仲裁节点加入复制集。1.初始化一个仲裁节点。原创 2024-06-15 09:43:54 · 617 阅读 · 0 评论 -
【MongoDB】复制集中添加/删除新副本步骤
复制集节点的添加和删除均在复制集的主节点完成,且不需要人工干预数据的同步。4.从复制集分片中,删除一个节点。3.将新节点加入副本集。原创 2024-06-15 09:30:37 · 531 阅读 · 0 评论 -
【MongoDB】“errmsg“ : “no such command: ‘addShard‘“
没有连接到真正的mongos,而是直接连接到了配置服务器。配置服务器和mongod数据服务器上均没有sh.addShard()命令,只有mongos才有。添加分片的功能是mongos的,所以必须连接到Mongos才能进行添加分片。1.添加shard分片报错。原创 2024-06-15 08:36:30 · 406 阅读 · 0 评论 -
【MongoDB】只有一个分片、一个路由节点分片集群最小化实现方案
分片集群,针对每个分片都是一个独立的副本集群。当前第一个分片集群,复制名称:shard1。(4)路由器登陆使用:27021端口,然后添加分片集群到配置服务器中。5.从集群添加和移除分片,并且检查数据是如何自动分发的。配置服务器是一个独立的副本集。2.创建一个数据库和集合,并在集合上启用分片。(1)配置服务器是一个独立的副本集集群。3.使用导入命令在分片集合中加载数据。6.将分片集群加入配置服务器集群。(2)可以配置任意个分片集群。4.在分片之间分发数据。路由器端口是:27021。1.设置一个分片集群。原创 2024-06-14 23:50:50 · 255 阅读 · 0 评论 -
【MongoDB】强制降级进行一轮的主库选举
1.当在模拟主节点故障时,可以强制集群进行故障转移。这样你就可以测试在这样的场景中。当前一主3从,主节点是27018,从节点是:27017,27019,27020;2.当主服务器需要离线时,这样做要么是为了维护,要么是为了升级或者检查服务器。当前,27017是主节点,27018,27019,27020是从节点。命令强制当前主服务器关闭。这一强制行为会启动新主节点的选举。3.当需要针对数据结构运行诊断程序时。强制进行一次新的选举。2.执行降级操作。这个命令有如下作用。应用程序会如何响应。原创 2024-06-13 16:55:26 · 228 阅读 · 0 评论 -
【MongoDB】删除一个节点 /增加一个节点
移除后,集群变成了两个节点,一主一从。3.新增节点:新增的节点为原来的节点。4.我们增加一个以前没有的节点。2.在主节点上移除节点。6.添加新节点到集群中。原创 2024-06-13 16:46:46 · 852 阅读 · 0 评论 -
【MongoDB】Attempting to reconfigure a replica set with name myrelset
新的复制集名称不在集群中。1.集群重启后状态变成OTHER。重新配置被拒绝,原因是。原创 2024-06-13 16:15:43 · 209 阅读 · 0 评论 -
【MongoDB】一主两从的副本集配置
原来的主节点重启后变成了从节点。由此可见mongodb的副本集还是非常强大的。此时可以看到:27018,变成主节点,27019变成从节点。27017节点状态不健康。关闭服务器必须是本地节点。所以现在关闭重启,并写上本地节点启动。当前主节点:27017,从节点是:27018,27019;复本集的名称myreplset 是自定义的。当前主节点是:27018,关闭主节点。7.从新启动27017,看看什么情况。kill -9 xxx 杀掉集群。6.关闭主节点观察主从切换情况。原创 2024-06-13 16:10:56 · 325 阅读 · 0 评论 -
【MongoDB】副本集的读偏好
2.通过读取偏好,可以实现读写分离,降低主节点的压力。该读取偏好通常通过应用程序在连接时设置。1.mongodb的五种读取偏好。原创 2024-06-13 14:30:26 · 236 阅读 · 0 评论 -
【MongoDB】db.serverStatus()
13.存储引擎TigerWire LSM合并树。统计信息可以查看各个对象数量,记录条数,大小等。2.启动时间,版本,机器名称,进程号。1.查看mongodb服务器状态。1.当前连接数,最大连接数。19.数据处理,检查点信息。22.会话信息 ,线程信息。10.存储引擎,隔离级别。11.tcp内存使用情况。21.文件系统读取延迟情况。8.读写各种操作的数量。2.查看集合的统计信息。5.逻辑会话缓存信息。原创 2024-06-13 12:21:28 · 696 阅读 · 1 评论 -
1.mongotop 的用法
可以根据这些数据来判断每个集合的读写比例和 CPU 占用情况,从而进行性能优化。mongotop 工具输出了每个集合的总时间、读时间和写时间。1.mongotop的用法。原创 2024-06-13 12:00:44 · 192 阅读 · 0 评论 -
【MongoDB】mongostat 工具监控mongodb的性能
1.mongostat工具的用法。原创 2024-06-13 11:36:13 · 227 阅读 · 0 评论 -
【MongoDB】json文件导出和导入
由此可见,有集合冲突时,可以使用--drop 选项先删除之前的集合,然后创建集合插入新的数据。2.json文件导入到指定的集合中。1.导出特定集合 到json文件。原创 2024-06-13 11:26:14 · 926 阅读 · 0 评论 -
【MongoDB】全款备份恢复/按库备份恢复/按集合备份恢复
2.备份指定的数据库。3.恢复指定的数据库。4.仅恢复指定的集合。原创 2024-06-13 11:08:55 · 349 阅读 · 0 评论 -
【MongoDB】数据库用户管理
新安装的mongodb需要做哪些操作。原创 2024-06-12 15:47:38 · 614 阅读 · 0 评论 -
【MongoDB】创建索引时需要注意关键字大小写
可以根据具体的情况给集合创建索引和删除索引,创建索引后如何关系数据库的表,能够让执行计划都索引扫描,而没创建索引,则默认走全表扫描。dropDups是MongoDB中一个特殊的选项,用于在创建索引时防止集合中出现重复的值。创建索引的关键字必须写为:ensureIndex,而不能写成 ensureindex;由此可以见:dropIndexes() 只能删除用户自定的索引,不能删除自带的索引。并且在创建唯一索引时应使用unique选项来替代。7.有重复值的情况下创建唯一索引。3.删除特定名称的索引。原创 2024-06-12 13:24:38 · 338 阅读 · 0 评论 -
【MongoDB】游标的使用
游标有两个方法:hasNext() ,判断是否存在下一个记录。next(),代表下一个具体的记录。国籍为美国的只有两个人,因此,数组的下标为0,1的有值,下标为2的未定义。3.游标变量可以当作数组处理。原创 2024-06-12 12:43:15 · 261 阅读 · 0 评论 -
【MongoDB】文档排序操作
这里取了女生中,国籍是US,India,只取2条。6.findOne() 返回集合中第一个记录。1.只选择两列,并且根据年龄升序:1。2.只选择两列,并且根据年龄降序:-1。由此可见:1代表升序,-1代表降序。4.limit 只取N行记录。5.skip 跳过几行再取。按照名字降序,年龄升序。跳过前2行,取两行。原创 2024-06-12 12:36:22 · 385 阅读 · 0 评论 -
【MongoDB】or选择器和投影器
db.users.find({"Gender":"F"},{"Name":1,"Age":1}) 过滤出女生,然后选择名字和年龄两个列。由此可见有or选择器的时候,先用"Gender":"F" 过滤出女生。然后使用OR 过滤出,UK或者India的女生。db.users.find({},{"Name":1,"Age":1}) 全集合扫描,只选择name,age两个列。第一参数{}传递类似WHERE筛选 条件。由此可见,find有两个参数{},第二个参数{},用于过滤特定的列。,所以被称为投影器。原创 2024-06-12 12:21:39 · 178 阅读 · 0 评论 -
【MongoDB】删除操作
在Mongodb4.0.2的版本中,不允许不带任何参数执行删除。2.执行truncate操作,删除所有的数据。1.删除满足条件的记录。原创 2024-06-12 10:58:53 · 378 阅读 · 0 评论 -
【MongoDB】谨慎使用更新操作
"nModified" : 20,说明本次跟新了20行,由此可看,通过添加:{multi:true}属性能够使得mongodb更新所有批量的行。第一个查询出来的女生国家变成UK.1.仅更新查询出来的第一行数据。2.批量更新所有批量的行。原创 2024-06-12 10:45:07 · 233 阅读 · 0 评论