mongodb 分片叢集設定

kunlunzhiying發表於2018-08-30

########對某個集合資料做分片#############

1、先enable sharding,開啟資料庫的分片功能

mongos> use admin

mongos> db.runCommand({"enablesharding":"test1"})

2、對具體collection做分片, 選擇片鍵為"_id"

mongos> db.runCommand({"shardcollection":"test1.test1","key":{"_id":1}})

{ "collectionsharded" : "test1.test1", "ok" : 1 }


3、觀察2個分片 shard_01  shard_02 tunks 數量


###########刪除分片##################

1、保證均衡器是開啟的

mongos> use admin

mongos> sh.setBalancerState(true);

或者mongos> sh.startBalancer();


2、將已分片的集合全部遷移到其他分片


use admin

db.adminCommand({"removeShard":"shard_name"})


3、檢查資料塊遷移的狀態 ,remaining 欄位表示剩餘資料塊的數量


use admin


db.runCommand( { removeShard: "shard_name" } )


===============#####刪除未分片的資料庫#######============


1、檢視未分片的資料庫


use config


db.databases.find({$or:[{"partitioned":false},{"primary":"shard_name"}]})


2、修改資料庫的主分片


db.runCommand( { movePrimary: "db_name", to: "new_shard" })



=========##########重新整理mongos的配置快取###########==========


強制mongos從config server同步配置資訊,並重新整理快取


use admin

db.adminCommand({ flushRouterConfig: 1})



===============oplog 做每天自動日誌輪動========================


1、在配置檔案中新增引數

logpath=/data/shard_01/mongodb.log 

logappend=true


2、設定定時任務

0 0 * * * /bin/kill -SIGUSR1 `cat /data/shard_01/mongodb.log`


mongodb 3.6 以上版本 可以線上修改oplog大小

use local

db.adminCommand({replSetResizeOplog: 1, size: 100000})


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28211342/viewspace-2213174/,如需轉載,請註明出處,否則將追究法律責任。

相關文章