热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

MongoDB数据库的集群分片配置方法

创建必要的文件目录mkdir-p/usr/local/mongo/shard/s0mkdir-p/usr/local/mongo/shard/s1mkdir-p/usr/local/mongo/shard/s2mkdir-p/usr/local/mongo/shard/logmongod--shardsvr--port

创建必要的文件目录

mkdir -p /usr/local/mongo/shard/s0
mkdir -p /usr/local/mongo/shard/s1
mkdir -p /usr/local/mongo/shard/s2
mkdir -p /usr/local/mongo/shard/log

mongod --shardsvr --port 20000 --dbpath=/usr/local/mongo/shard/s0 --fork --logpath=/usr/local/mongo/shard/log/s0.log --directoryperdb
mongod --shardsvr --port 20001 --dbpath=/usr/local/mongo/shard/s1 --fork --logpath=/usr/local/mongo/shard/log/s1.log --directoryperdb
mongod --shardsvr --port 20002 --dbpath=/usr/local/mongo/shard/s2 --fork --logpath=/usr/local/mongo/shard/log/s2.log --directoryperdb

#Configure Config Server

mkdir -p /usr/local/mongo/shard/config
mongod --configsvr --port 30000 --dbpath=/usr/local/mongo/shard/config --fork --logpath=/usr/local/mongo/shard/log/config.log --directoryperdb

#Start Router Server

mongos --port 40000 --configdb localhost:30000 --fork --logpath=/usr/local/mongo/shard/log/route.log

mongos> db.runCommand({addshard:"localhost:20000"})
{ "shardAdded" : "shard0000", "ok" : 1 }
mongos> db.runCommand({addshard:"localhost:20001"})
{ "shardAdded" : "shard0001", "ok" : 1 }
mongos> db.runCommand({enablesharding:"andylhz"})
{ "ok" : 1 }
mongos> db.runCommand({shardcollection:"andylhz.users",key:{_id:1}})
{ "collectionsharded" : "andylhz.users", "ok" : 1 }

插入测试数据

for (var i = 500001; i <= 1000000; i++) db.users.insert({age:i, name:"wangwenlong", addr:"Beijing",country:"China"})

mongos> db.users.stats()db.users.stats()
{
       "sharded" : true,
       "ns" : "andylhz.users",
       "count" : 500000,
       "numExtents" : 16,
       "size" : 48000000,
       "storageSize" : 80949248,
       "totalIndexSize" : 16245712,
       "indexSizes" : {
               "_id_" : 16245712
       },
       "avgObjSize" : 96,
       "nindexes" : 1,
       "nchunks" : 5,
       "shards" : {
               "shard0000" : {
     "ns" : "andylhz.users",
     "count" : 130899,
     "size" : 12566304,
     "avgObjSize" : 96,
     "storageSize" : 22507520,
     "numExtents" : 7,
     "nindexes" : 1,
     "lastExtentSize" : 11325440,
     "paddingFactor" : 1,
     "systemFlags" : 1,
     "userFlags" : 0,
     "totalIndexSize" : 4259696,
     "indexSizes" : {
             "_id_" : 4259696
     },
     "ok" : 1
               },
               "shard0001" : {
     "ns" : "andylhz.users",
     "count" : 369101,
     "size" : 35433696,
     "avgObjSize" : 96,
     "storageSize" : 58441728,
     "numExtents" : 9,
     "nindexes" : 1,
     "lastExtentSize" : 20643840,
     "paddingFactor" : 1,
     "systemFlags" : 1,
     "userFlags" : 0,
     "totalIndexSize" : 11986016,
     "indexSizes" : {
             "_id_" : 11986016
     },
     "ok" : 1
               }
       },
       "ok" : 1
}
mongos>

mongos> use admindb.runCommand({ listshards: 1 })db.runCommand({ listshards: 1 })
{
       "shards" : [
               {
     "_id" : "shard0000",
     "host" : "localhost:20000"
               },
               {
     "_id" : "shard0001",
     "host" : "localhost:20001"
               }
       ],
       "ok" : 1
}

mongos> db.runCommand({ isdbgrid:1 })db.runCommand({ isdbgrid:1 })
{ "isdbgrid" : 1, "hostname" : "mongo.andylhz.com", "ok" : 1 }

mongos> db.runCommand({ addshard:"localhost:20002" })

mongos> printShardingStatus()printShardingStatus()
--- Sharding Status ---
 sharding version: { "_id" : 1, "version" : 3 }
 shards:
       {  "_id" : "shard0000",  "host" : "localhost:20000" }
       {  "_id" : "shard0001",  "host" : "localhost:20001" }
       {  "_id" : "shard0002",  "host" : "localhost:20002" }
 databases:
       {  "_id" : "admin",  "partitioned" : false,  "primary" : "config" }
       {  "_id" : "andylhz",  "partitioned" : true,  "primary" : "shard0000" }
 andylhz.users chunks:
             shard0002       1
             shard0000       2
             shard0001       2
     { "_id" : { $minKey : 1 } } -->> { "_id" : ObjectId("50b9b64ae2b156c230e8f96e") } on : shard0002 Timestamp(4000, 0)
     { "_id" : ObjectId("50b9b64ae2b156c230e8f96e") } -->> { "_id" : ObjectId("50b9b64be2b156c230e91103") } on : shard0000 Timestamp(4000, 1)
     { "_id" : ObjectId("50b9b64be2b156c230e91103") } -->> { "_id" : ObjectId("50b9b65fe2b156c230ebc1d5") } on : shard0001 Timestamp(3000, 1)
     { "_id" : ObjectId("50b9b65fe2b156c230ebc1d5") } -->> { "_id" : ObjectId("50b9b673e2b156c230eeb2d0") } on : shard0001 Timestamp(2000, 4)
     { "_id" : ObjectId("50b9b673e2b156c230eeb2d0") } -->> { "_id" : { $maxKey : 1 } } on : shard0000 Timestamp(3000, 0)

mongos>

本文完


推荐阅读
  • Valve 发布 Steam Deck 的新版 Windows 驱动程序
    Valve 最新发布了针对 Steam Deck 掌机的 Windows 驱动程序,旨在提升其在 Windows 环境下的兼容性、安全性和性能表现。 ... [详细]
  • 本文详细介绍了 GWT 中 PopupPanel 类的 onKeyDownPreview 方法,提供了多个代码示例及应用场景,帮助开发者更好地理解和使用该方法。 ... [详细]
  • 计算机网络复习:第五章 网络层控制平面
    本文探讨了网络层的控制平面,包括转发和路由选择的基本原理。转发在数据平面上实现,通过配置路由器中的转发表完成;而路由选择则在控制平面上进行,涉及路由器中路由表的配置与更新。此外,文章还介绍了ICMP协议、两种控制平面的实现方法、路由选择算法及其分类等内容。 ... [详细]
  • 本文将介绍如何使用 Go 语言编写和运行一个简单的“Hello, World!”程序。内容涵盖开发环境配置、代码结构解析及执行步骤。 ... [详细]
  • This guide provides a comprehensive step-by-step approach to successfully installing the MongoDB PHP driver on XAMPP for macOS, ensuring a smooth and efficient setup process. ... [详细]
  • 探讨如何高效使用FastJSON进行JSON数据解析,特别是从复杂嵌套结构中提取特定字段值的方法。 ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • 本文介绍如何利用动态规划算法解决经典的0-1背包问题。通过具体实例和代码实现,详细解释了在给定容量的背包中选择若干物品以最大化总价值的过程。 ... [详细]
  • 本文介绍了在使用Visual Studio 2015进行项目开发时,遇到类向导弹出“异常来自 HRESULT:0x8CE0000B”错误的解决方案。通过具体步骤和实践经验,帮助开发者快速排查并解决问题。 ... [详细]
  • 本文基于刘洪波老师的《英文词根词缀精讲》,深入探讨了多个重要词根词缀的起源及其相关词汇,帮助读者更好地理解和记忆英语单词。 ... [详细]
  • 1.如何在运行状态查看源代码?查看函数的源代码,我们通常会使用IDE来完成。比如在PyCharm中,你可以Ctrl+鼠标点击进入函数的源代码。那如果没有IDE呢?当我们想使用一个函 ... [详细]
  • 数据管理权威指南:《DAMA-DMBOK2 数据管理知识体系》
    本书提供了全面的数据管理职能、术语和最佳实践方法的标准行业解释,构建了数据管理的总体框架,为数据管理的发展奠定了坚实的理论基础。适合各类数据管理专业人士和相关领域的从业人员。 ... [详细]
  • 题目描述:给定n个半开区间[a, b),要求使用两个互不重叠的记录器,求最多可以记录多少个区间。解决方案采用贪心算法,通过排序和遍历实现最优解。 ... [详细]
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
  • 深入理解Java中的volatile、内存屏障与CPU指令
    本文详细探讨了Java中volatile关键字的作用机制,以及其与内存屏障和CPU指令之间的关系。通过具体示例和专业解析,帮助读者更好地理解多线程编程中的同步问题。 ... [详细]
author-avatar
俏君woo_267
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有