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

MongoDB数据库如何配置分片sharding

MongoDB的sharding功能mongodb的端口是否启动,默认是28017,在启动服务器时,可以通过--port来指定ShardServer:mongod实例,用于存储实际的数据块,实际生产环境中一个shardserver角色可由几台机器组个一个relicaset承担,防止主机单点故障ConfigSer

MongoDB的sharding功能

mongodb的端口是否启动,默认是28017,在启动服务器时,可以通过--port来指定

Shard Server: mongod实例,用于存储实际的数据块,实际生产环境中一个shard server角色可由几台机器组个一个relica set承担,防止主机单点故障

Config Server: mongod实例,存储了整个Cluster Metadata,其中包括chunk信息。

Route Server: mongos实例,前端路由,客户端由此接入,且让整个集群看上去像单一数据库,前端应用可以透明使用。

如里shard是单台服务器,用>db.runCommand( { addshard :“[:]”} )这样的命令加入,如果shard是replica sets,用replicaSetName/[:port][,serverhostname2[:port],…]这样的命令

常用命令:

        Show  dbs                     显示数据库名

        show  collections             显示当前数据库中的集合集

        show  users                   显示当前数据库的用户

        show  profile                显示最后系统用时大于1ms的系统概要

        use                 切换到数据库

测试环境:

server1 server2 server3分别运行下面两行命令来启动mongodb

./mongod --fork --shardsvr --port 10001 --dbpath=/var/data/shard1/ --logpath=/var/data/shard1/log.log --replSet shard1 --rest

./mongod --fork --shardsvr --port 10002 --dbpath /var/data/shard2/ --logpath /var/data/shard2/log.log --replSet shard2 --rest

选三台中任何一台机器运行如下命令,设置主从:

./mongo  --port=10001

cOnfig= {_id: 'shard1', members: [

                          {_id: 0, host: '10.10.10.219:10001'},

                          {_id: 1, host: '10.10.10.214:10001'},

                          {_id: 2, host: '10.10.10.213:10001', arbiterOnly: true}

]}

> rs.initiate(config);初始化

./mongod Cport=10002

cOnfig= {_id: 'shard2', members: [

                          {_id: 0, host: '10.10.10.214:10002'},

                          {_id: 1, host: '10.10.10.219:10002'},

                          {_id: 2, host: '10.10.10.213:10002', arbiterOnly: true}

]}

rs.initiate(config);初始化

rs.status()   查看状态。

配置config

三台机器上都配或者只配一台都可以:config需要单独的数据存储位置和日志

./mongod --fork --configsvr --port 20000 --dbpath /var/data/config/ --logpath /var/data/config/log.log --rest

配置用于客户前端接入的路由:

注:第一次运行mongos指定多个config可能会有问题,第一次运行mongos连接一个config。kill掉后在运行多个就没有问题了

./mongos Cconfigdb 10.10.10.219:20000,10.10.10.214:20000,10.10.10.213:20000 Cport 30000 CchunkSize 50 Clogpath /home/mongodb/data/mongos.log Clogappend Cfork

创建分片:

在mongos服务器上创建分片:

./mongo --port=40000  (mongos端口)

usr admin  必须切换到admin数据库下面,默认登录进去后是test数据库

db.runCommand( { addshard : 'shard1/10.10.10.219:10001,10.10.10.214:10001,10.10.10.213:10001',name:"s2",maxsize:20480} );

db.runCommand( { addshard : 'shard2/10.10.10.219:10002,10.10.10.214:10002,10.10.10.213:10002',name:"s2",maxsize:20480} );

db.runCommand( { enablesharding: "" } );配置数据库允许分片

db.runCommand({ shardcollection:'test.data', key:{_id:1} })  配置collection的shard key

db.printSharingStatus();  查看整个集群的分片情况

db.runCommand({listshards:1});查看节点列表,如果能看到其他节点则配置成功

查看mongodb中replica set的状态

查看Replica Set的状态,执行rs.status()即可

>  rs.status()

        "set" : "shard1",

        "date" : "Wed Nov 17 2010 19:45:13 GMT+0800 (CST)",

        "myState" : 1,

        "members" : [

                {

                        "_id" : 0,

                        "name" : "localhost.localdomain:10001",

                        "health" : 1,

                        "state" : 1,

                        "self" : true

                },

                {

                        "_id" : 1,

                        "name" : "10.10.10.214:10001",

                        "health" : 0,

                        "state" : 2,

                        "uptime" : 0,

                        "lastHeartbeat" : "Tue Nov 16 2010 02:36:41 GMT+0800 (CST)",

                        "errmsg" : "connect/transport error"

                },

                {

                        "_id" : 2,

                        "name" : "10.10.10.213:10001",

                        "health" : 1,

                        "state" : 2,

                        "uptime" : 150190,

                        "lastHeartbeat" : "Wed Nov 17 2010 19:45:12 GMT+0800 (CST)"

                }

        ],

        "ok" : 1

其中,health为1表明服务器正常,0表明服务器down了

state为1表明是Primary,2表明是Secondary,3是Recovering,7是Arbiter,8是Down

如果想在Secondary上find数据,需要先执行以下命令:

db.getMongo().setSlaveOk();
db.suv.find().count()

修改mongodb中replica set的配置

#增加新的成员
rs.add("192.168.95.210:10000");
#增加新的选举成员
rs.addArb("192.168.95.216:10001");


推荐阅读
  • 本文详细介绍了如何搭建一个高可用的MongoDB集群,包括环境准备、用户配置、目录创建、MongoDB安装、配置文件设置、集群组件部署等步骤。特别关注分片、读写分离及负载均衡的实现。 ... [详细]
  • MongoDB核心概念详解
    本文介绍了NoSQL数据库的概念及其应用场景,重点解析了MongoDB的基本特性、数据结构以及常用操作。MongoDB是一个高性能、高可用且易于扩展的文档数据库系统。 ... [详细]
  • Asynchronous JavaScript and XML (AJAX) 的流行很大程度上得益于 Google 在其产品如 Google Suggest 和 Google Maps 中的应用。本文将深入探讨 AJAX 在 .NET 环境下的工作原理及其实现方法。 ... [详细]
  • H5技术实现经典游戏《贪吃蛇》
    本文将分享一个使用HTML5技术实现的经典小游戏——《贪吃蛇》。通过H5技术,我们将探讨如何构建这款游戏的两种主要玩法:积分闯关和无尽模式。 ... [详细]
  • 本文介绍了SIP(Session Initiation Protocol,会话发起协议)的基本概念、功能、消息格式及其实现机制。SIP是一种在IP网络上用于建立、管理和终止多媒体通信会话的应用层协议。 ... [详细]
  • 华为与红帽联手,加速开源电信软件革新
    华为与红帽携手合作,旨在加速开源电信软件的发展,以满足大型电信运营商对灵活网络解决方案的需求。 ... [详细]
  • 从CodeIgniter中提取图像处理组件
    本指南旨在帮助开发者在未使用CodeIgniter框架的情况下,如何独立使用其强大的图像处理功能,包括图像尺寸调整、创建缩略图、裁剪、旋转及添加水印等。 ... [详细]
  • 实践指南:使用Express、Create React App与MongoDB搭建React开发环境
    本文详细介绍了如何利用Express、Create React App和MongoDB构建一个高效的React应用开发环境,旨在为开发者提供一套完整的解决方案,包括环境搭建、数据模拟及前后端交互。 ... [详细]
  • PHP面试题精选及答案解析
    本文精选了新浪PHP笔试题及最新的PHP面试题,并提供了详细的答案解析,帮助求职者更好地准备PHP相关的面试。 ... [详细]
  • 如何在U8系统中连接服务器并获取数据
    本文介绍了如何在U8系统中通过不同的方法连接服务器并获取数据,包括使用MySQL客户端连接实例的方法,如非SSL连接和SSL连接,并提供了详细的步骤和注意事项。 ... [详细]
  • Redis:缓存与内存数据库详解
    本文介绍了数据库的基本分类,重点探讨了关系型与非关系型数据库的区别,并详细解析了Redis作为非关系型数据库的特点、工作模式、优点及持久化机制。 ... [详细]
  • 第一步java代码条件匹配与之对应的mongo数据查询第二步:java代码分组查询与之所对应的mongodb中sheel与所得出的表点击某个_id字段进入,所得出的图表为第三步:在 ... [详细]
  • 在CentOS 7环境中安装配置Redis及使用Redis Desktop Manager连接时的注意事项与技巧
    在 CentOS 7 环境中安装和配置 Redis 时,需要注意一些关键步骤和最佳实践。本文详细介绍了从安装 Redis 到配置其基本参数的全过程,并提供了使用 Redis Desktop Manager 连接 Redis 服务器的技巧和注意事项。此外,还探讨了如何优化性能和确保数据安全,帮助用户在生产环境中高效地管理和使用 Redis。 ... [详细]
  • 尽管在WPF中工作了一段时间,但在菜单控件的样式设置上遇到了一些基础问题,特别是关于如何正确配置前景色和背景色。 ... [详细]
  • 二维码的实现与应用
    本文介绍了二维码的基本概念、分类及其优缺点,并详细描述了如何使用Java编程语言结合第三方库(如ZXing和qrcode.jar)来实现二维码的生成与解析。 ... [详细]
author-avatar
mobiledu2502885017
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有