MongoDB菜鸟入门(二):使用分片和主从副本实行高性能髙可靠数据库

本文是MongoDB初学者的进阶指南,详细介绍了如何通过分片和主从副本设置来实现高性能、高可靠性的数据库。首先讲解了分片的配置,包括两个分片 shard1 和 shard2 的设置,以及 Config Server 和 Query Routers 的作用。接着,文章阐述了主从副本集的搭建,以确保服务的高可用性和数据安全性,详述了主机、从机和仲裁机的角色及选举过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

上一篇简单的记录了一下本人的学习笔记,下面描述的是如何配置分片和主从副本集。

一、分片

  • 由于使用一些传统的数据库(例:mysql等)数据存储量一旦达到某种程度后,查询操作可能会非常耗时,而使用某些内存数据库(例:redis等)则受内存空间大小的限制。而使用mongodb分布式数据库则可以解决此些问题。
  • 此处笔记记录了我个人使用了两个分片实践,由于没有更多的机器,此处仅使用单台主机实践。
分片1(shard):
  • 使用端口27001,数据库目录C:\data\shard\s1,日志文件为C:\data\shard\log\s1.log,以追加方式试使用
mongod --port 27001 --dbpath=C:\data\shard\s1 --logpath=C:\data\shard\log\s1.log --logappend
分片2(shard):
  • 使用端口27002,数据库目录C:\data\shard\s2,日志文件为C:\data\shard\log\s2.log,以追加方式试使用
mongod --port 27002 --dbpath=C:\data\shard\s2 --logpath=C:\data\shard\log\s2.log --logappend
Config Server:

配置一个config存储数据库

mongod --port 27100 --dbpath=C:\data\shard\config --logpath=C:\data\shard\log\config.log --logappend  --configsvr
Query Routers:

若多config服务器则–configdb后的地址端口列表以逗号隔开

mongos --port 40000 --configdb localhost:27100 --logpath=C:\data\shard\log\route.log --chunkSize 500
最后添加分片shard:

以admin身份登录route路由服务器

//登录route的shell
mongo admin --port 40000;
//添加分片,若分片有副本等,需用逗号隔开
db.runCommand({addshard:"localhost:27001"});
db.runCommand({addshard:"localhost:27002"});
//选择分片db
db.runCommand({enablesharding:"xx"});
//设置xx库user集合分片键
db.runCommand({"shardcollection":"xx.user","key":{"_id":1}})

查看分片服务器配置

db.runCommand( { listshards : 1 } );

二、主从副本

  • 为了实现高可靠的数据库服务器,不至于由于一台服务器挂了使得整个服务不可用,可以使用一主一从、一主多从副本集。
  • 副本集的数据是同步的,也就是说数据是一样的,当主机挂了,只要从机还存在,服务就不会中断也不会丢失数据。

主机master:

  • –replSet指定副本集rs0
mongod --port 27003 --dbpath=C:\data\shard\s3 --logpath=C:\data\shard\log\s3.log --logappend --replSet rs0

从机slave:

  • –replSet指定副本集rs0
mongod --port 27004 --dbpath=C:\data\shard\s3-slaver --logpath=C:\data\shard\log\s3-slaver.log --logappend --replSet rs0

仲裁机:

  • 仲裁机不存储主从机存储的数据,仅用于在主机挂掉以后,从从机集中选举出新的主机
mongod --port 27005 --dbpath=C:\data\shard\s3-zc --logpath=C:\data\shard\log\s3-zc.log --logappend --replSet rs0

连接主机master:

  • 当master挂掉后,仲裁机会根据投票选举出新的master,启动时priority大者成为master
mongo --port 27003
//config设置副本集
config = {_id:"rs0",members:[{_id:0,host:"127.0.0.1:27003",priority:4},{_id:1,host:"127.0.0.1:27004",priority:2},{_id:2,host:"127.0.0.1:27005",arbiterOnly:true}]}
//init副本集,使生效
rs.initiate(config)

连接slave:

//连接
mongo --port 27004
//slave需要执行slaveOk才能读取数据
rs.slaveOk()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值