首页 > 数据库 >mongodb表由未分片修改为分片

mongodb表由未分片修改为分片

时间:2023-07-21 15:36:20浏览次数:35  
标签:mongodb app db Timestamp 表由未 分片 message clusterTime

环境:

mongodb:4.4.22

 

1.范围分片:

刚开始没有使用分片,后面写入数据了使用分片
在路由服务器上执行:

mongos> sh.shardCollection("db_pushmsg.app_message_nofenpian",{"user_id": 1})
{
        "ok" : 0,
        "errmsg" : "Please create an index that starts with the proposed shard key before sharding the collection",
        "code" : 72,
        "codeName" : "InvalidOptions",
        "operationTime" : Timestamp(1689918228, 5),
        "$clusterTime" : {
                "clusterTime" : Timestamp(1689918228, 5),
                "signature" : {
                        "hash" : BinData(0,"MLDP+DoqO+0iD9jhEzrBb2dB+Lw="),
                        "keyId" : NumberLong("7257793727152783361")
                }
        }
}

 

解决办法:
创建索引
db.app_message_nofenpian.createIndex({"user_id":1})
db.app_message_nofenpian.getIndexes()

再次执行分片

mongos>  sh.shardCollection("db_pushmsg.app_message_nofenpian",{"user_id": 1})
{
        "collectionsharded" : "db_pushmsg.app_message_nofenpian",
        "collectionUUID" : UUID("5382ae8e-2e07-4185-bdd0-db8ee85bad5e"),
        "ok" : 1,
        "operationTime" : Timestamp(1689918641, 5),
        "$clusterTime" : {
                "clusterTime" : Timestamp(1689918641, 5),
                "signature" : {
                        "hash" : BinData(0,"WSjbiHdll3P7O1ITDltvVdMijwk="),
                        "keyId" : NumberLong("7257793727152783361")
                }
        }
}

 

查看是否平衡
mongos> sh.isBalancerRunning()
true

平衡完成后会变成false
mongos> sh.isBalancerRunning()
false

 

2.hash分片

sh.shardCollection("db_pushmsg.app_message_nofenpian01",{"user_id": "hashed"})
mongos> sh.shardCollection("db_pushmsg.app_message_nofenpian01",{"user_id": "hashed"})
{
        "ok" : 0,
        "errmsg" : "Please create an index that starts with the proposed shard key before sharding the collection",
        "code" : 72,
        "codeName" : "InvalidOptions",
        "operationTime" : Timestamp(1689921384, 2),
        "$clusterTime" : {
                "clusterTime" : Timestamp(1689921384, 2),
                "signature" : {
                        "hash" : BinData(0,"aBgMib51mh1bRNbNLTP5uJ7Rl2E="),
                        "keyId" : NumberLong("7257793727152783361")
                }
        }
}

 

创建索引(注意这里必须指定hashed)
db.app_message_nofenpian01.createIndex({"user_id":"hashed"})

 

标签:mongodb,app,db,Timestamp,表由未,分片,message,clusterTime
From: https://www.cnblogs.com/hxlasky/p/17571492.html

相关文章

  • mongodb主从架构
    MongoDB主从架构实现简介在MongoDB中,主从架构又称为复制集(replset),是一种可用性和可靠性的解决方案。主从架构中,有一个主节点(Primary)和多个从节点(Secondary)。主节点负责处理所有的写操作和读操作,而从节点只负责读操作,通过复制主节点的数据保持与主节点的数据同步。流程下面是......
  • 用rsync来同步mongodb的数据,可行吗?
    用rsync来同步mongodb的数据,可行吗?当涉及到数据的备份和同步时,rsync是一个非常常用的工具。那么,我们可以使用rsync来同步mongodb的数据吗?答案是肯定的。在本文中,我将介绍如何使用rsync来备份和同步mongodb的数据,并提供相应的代码示例。首先,让我们来了解一下rsync。rsync是一个......
  • ObjectMapper mongodb
    ObjectMapperandMongoDBIntroductionIntheworldofsoftwaredevelopment,handlingdataisacrucialaspectofbuildingapplications.WiththeriseofNoSQLdatabases,suchasMongoDB,developersneedefficienttoolstomaptheirapplicationobjectsto......
  • spring boot使用mongodb时,xxxRepository不能Autowired的问题
    默认情况下,当继承MongoRepository的CRUD在@SpringBootApplication的子包下时,xxxRepository是能够自动被扫描和创建代理的。但是如果不在默认路径下,就无法注入了,即使是扫描路径加到了@ComponentScan也一样。解决方法:在springboot启动类中添加@EnableMongoRepositories注解,标注mon......
  • kettle连接mongodb
    Kettle连接MongoDB的实现步骤对于一个刚入行的开发者来说,实现Kettle连接MongoDB可能会有些困惑。下面我将为你详细介绍整个连接过程的步骤,并提供相应的代码示例。步骤概览下面是连接Kettle和MongoDB的整个流程的概览,我们将使用Kettle中的MongoDB输入(MongoDBInput)和输出(MongoDB......
  • mongodb 集群迁移方案
    MongoDB集群迁移方案简介在实际开发中,可能会遇到需要将MongoDB集群迁移到新的环境的情况,本文将介绍一种常见的MongoDB集群迁移方案。迁移流程以下是迁移MongoDB集群的一般步骤:步骤描述1创建新的目标环境2备份源集群数据3在目标环境中配置MongoDB集群4将......
  • mongodb 获取所有数据
    MongoDB获取所有数据MongoDB是一种非关系型数据库,被广泛应用于大数据处理和实时数据分析场景中。在使用MongoDB时,我们经常需要获取数据库中的所有数据。本文将介绍如何使用MongoDB来获取所有数据,并提供相应的代码示例。连接到MongoDB在开始之前,我们需要先连接到MongoDB数据库。......
  • mongodb 的分片
    MongoDB的分片什么是分片?在MongoDB中,分片是指将数据按照某种规则分散存储在多个服务器上的过程。这个过程使得MongoDB可以处理超过单个服务器容量限制的大型数据集。当数据集变得庞大,无法在单个服务器上存储和处理时,我们可以通过分片技术将数据分散存储在多个服务器上,这样可以提......
  • mongodb 查询操作实现原理
    MongoDB查询操作实现原理MongoDB是一种非关系型数据库,它以文档的形式存储数据,使用JSON风格的文档来表示数据。在MongoDB中,查询操作是非常重要和常用的操作之一。本文将介绍MongoDB查询操作的实现原理,并提供一些代码示例进行说明。查询操作的基本原理MongoDB提供了丰富......
  • mongodb 查询不带_id
    如何实现“MongoDB查询不带_id”作为一名经验丰富的开发者,你可以教会那些刚入行的小白如何在MongoDB数据库中实现查询不带_id。在本文中,我们将介绍整个过程,并附上具体代码和相应注释。步骤概览下面是实现“MongoDB查询不带_id”的整体步骤概览:步骤描述1连接到MongoDB......