【Mongo】單節點升級為複製集再升級為分片加複製集
1.單節點配置如下
複製集升級為分片加複製集
新增分片報錯的解決辦法
-
[root@ip-10-1-2-32 etc]# more shard1.conf
-
logpath=/usr/local/mongodb/logs/mongo_shard1.log
-
logappend=true # need logrotae scripts
-
fork=true
-
journal=true
-
port=27019
-
dbpath=/usr/local/mongodb/shard1
-
pidfilepath=/usr/local/mongodb/logs/mongo_shard1.pid
-
bind_ip=10.1.2.32
- wiredTigerCacheSizeGB=4
單節點升級為複製集
-
1.關閉mongo
-
2.配置檔案加上覆制通道replSet=shard1
-
3.重啟
-
4.其它節點也以replSet=shard1的方式啟動
- 5.搭建複製叢集
- 參考:
複製集升級為分片加複製集
-
1 重啟second節點以--shardsvr模式啟動,在配置檔案加上shardsvr=true就好了
-
2.主節點降級
-
rs.stepDown()
-
3.重啟主節點以shardsvr模式
-
4.搭建config的複製集模式
-
5.所有節點啟動mongos
-
-
-
6.主節點mongos新增shard1的分片叢集
-
db.runCommand({ addshard: 'shard1/10.1.2.68:27019,10.1.2.32:27019,10.1.2.175:27019'})
-
-
-
7.新的分片搭建複製集
-
-
8.主節點mongos加上新的分片叢集
-
db.runCommand({ addshard: 'newshard/10.1.2.32:27018,10.1.2.68:27018,10.1.2.175:27018'})
-
-
-
9.開啟目標db可分片
-
mongos> sh.enableSharding( "test" )
-
-
-
10.將目標文件進行分片
-
mongos> db.test_collection.createIndex( { number : 1 } )
-
mongos> sh.shardCollection( "test.test_collection", { "number" : 1 } )
主體流程如上,具體可參考官方文件:
上面的78步驟可以在9.10步驟之後的,先將資料shard到一個節點,然後新加節點,然後在平衡資料就好了
-
1 重啟second節點以--shardsvr模式啟動,在配置檔案加上shardsvr=true就好了
-
2.主節點降級
-
rs.stepDown()
-
3.重啟主節點以shardsvr模式
-
4.搭建config的複製集模式
-
5.所有節點啟動mongos
-
-
-
6.主節點mongos新增shard1的分片叢集
-
db.runCommand({ addshard: 'shard1/10.1.2.68:27019,10.1.2.32:27019,10.1.2.175:27019'})
-
-
-
7.新的分片搭建複製集
-
-
8.主節點mongos加上新的分片叢集
-
db.runCommand({ addshard: 'newshard/10.1.2.32:27018,10.1.2.68:27018,10.1.2.175:27018'})
-
-
-
9.開啟目標db可分片
-
mongos> sh.enableSharding( "test" )
-
-
-
10.將目標文件進行分片
-
mongos> db.test_collection.createIndex( { number : 1 } )
- mongos> sh.shardCollection( "test.test_collection", { "number" : 1 } )
主體流程如上,具體可參考官方文件:
上面的78步驟可以在9.10步驟之後的,先將資料shard到一個節點,然後新加節點,然後在平衡資料就好了
新增分片報錯的解決辦法
-
#重新新增剛才刪除的分片,將遇到以下錯誤,提示test資料庫已經存在
-
db.runCommand({addShard:"172.16.127.130:27017"})
-
{
-
"code" : 96,
-
"ok" : 0,
-
"errmsg" : "can't add shard '172.16.127.130:27017'
-
"because a local database 'test' exists in another shard0001"
-
}
-
#這時,就需要透過MongoDB shell連線到shard01例項,刪除test資料庫,然後重新新增
-
use test
-
db.dropDatabase()
-
#回到mongos節點
-
use admin
-
mongos> sh.addShard('172.16.127.130:27017')
-
{
-
"code" : 11000,
-
"ok" : 0,
-
"errmsg" : "E11000 duplicate key error collection:
-
"admin.system.version index: _id_ dup key: { : \"shardIdentity\" }"
-
}
-
#這時候再連線到shard01節點,刪除admin.system.version集合中記錄
-
db.system.version.remove({})
-
db.system.version.remove({"_id":"shardIdentity"})
-
WriteResult({
-
"nRemoved" : 0,
-
"writeError" : {
-
"code" : 40070,
-
"errmsg" : "cannot delete shardIdentity document while in --shardsvr mode"
-
}
-
})
-
#刪除時報錯,意思是說不能在分片模式下刪除這張表中的這條記錄,然後我們關閉shard01,然後以非shardsvr的方式啟動,刪除這條記錄後,再以shardsvr方式啟動
-
db.shutdownServer()
-
mongodb-3.4.4/bin/mongod -f mongodb-3.4.4/conf/mongod.conf
-
use admin
-
db.system.version.remove({})
-
db.shutdownServer()
-
mongodb-3.4.4/bin/mongod -f mongodb-3.4.4/conf/mongod.conf --shardsvr
-
#最後新增之前被刪除的分片shard01,大功告成
-
db.runCommand({addShard:"172.16.127.130:27017"})
- { "shardAdded" : "shard0002", "ok" : 1 }
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29096438/viewspace-2154616/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【Mongo】mongo分片加複製集的備份恢復Go
- 【Mongodb】往分片複製集新增複製成員MongoDB
- 升級kubeadm 叢集(只有master單節點)AST
- 【Mongodb】分片複製集環境新增新的分片MongoDB
- 【Mongodb】mongo複製集只剩一個secondery節點的解決辦法MongoDB
- 02 . MongoDB複製集,分片集,備份與恢復MongoDB
- mongodb複製集MongoDB
- mongodb複製集(replica sets)+分片(sharding)環境搭建MongoDB
- MongoDB 搭建複製集MongoDB
- MongoDB學習4:MongoDB複製集機制和原理,搭建複製集MongoDB
- 【Mongodb】 可複製集搭建MongoDB
- Elasticsearch叢集升級指引Elasticsearch
- DM7資料複製之模式級複製模式
- MongoDB學習之複製集MongoDB
- MongoDB搭建Replica Set複製集MongoDB
- openGauss-指定節點升級
- DM7資料複製之資料庫級複製資料庫
- poi操作excel,複製sheet,複製行,複製單元格,複製styleExcel
- mongodb6.0.13 搭建複製集PSAMongoDB
- MongoDB複製集資料同步流程MongoDB
- k8s 叢集升級K8S
- Openshift叢集3.9升級到3.10
- 智慧金融再升級,提供資料採集標註服務
- 年中盤點 | 2022年,PaaS 再升級
- mongodb複製集(replica set)搭建及管理MongoDB
- Redis搭建主從複製、哨兵叢集Redis
- Mariadb之半同步複製叢集配置
- (八)Redis 主從複製、切片叢集Redis
- 7、tomcat叢集+MySQL主從複製TomcatMySql
- 線上將傳統模式複製改為GTID複製模式模式
- Kubernetes 叢集無損升級實踐
- redis叢集之主從複製叢集的原理和部署Redis
- 淺複製和深複製的概念與值複製和指標複製(引用複製)有關 淺複製 “指標複製 深複製 值複製指標
- 淺複製、深複製與序列化【初級Java必需理解的概念】Java
- WannaMine再升級! 搖身一變成為軍火商
- 再談synchronized鎖升級synchronized
- 輕量級流量複製goreplay實踐Go
- http 升級為 https 訪問HTTP