mongodb表由未分片修改为分片
环境:
mongodb:4.4.22
1.范围分片:
刚开始没有使用分片,后面写入数据了使用分片
在路由服务器上执行:
mongos> use admin
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")
}
}
}
解决办法:
创建索引
mongos> use db_pushmsg
mongos>db.app_message_nofenpian.createIndex({"user_id":1})
mongos>db.app_message_nofenpian.getIndexes()
再次执行分片
mongos> use admin
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
发现这个输出不是很正确,输出false后,看到后台日志还在进行分片
{"t":{"$date":"2023-11-08T20:20:17.446-05:00"},"s":"I", "c":"SHARDING", "id":20997, "ctx":"Uptime-reporter","msg":"Refreshed RWC defaults","attr":{"newDefaults":{}}}
{"t":{"$date":"2023-11-08T20:20:27.451-05:00"},"s":"I", "c":"SHARDING", "id":20997, "ctx":"Uptime-reporter","msg":"Refreshed RWC defaults","attr":{"newDefaults":{}}}
2.hash分片
mongos> use admin
mongos>db.runCommand({enablesharding:"db_pushmsg" })
mongos>use db_pushmsg
mongos>db.app_message_all.createIndex({"_id":"hashed"})
mongos> use admin
mongos> sh.shardCollection("db_pushmsg.app_message_all",{"_id": "hashed"})
创建索引(注意这里必须指定hashed)
mongos> use db_pushmsg
mongos> db.app_message_all.createIndex({"_id":"hashed"})
发现分片后,要等很久,原有分片的数据才自动删除。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
2022-07-21 安装部署opengauss主从(轻简版,非OM方式1主2从)