中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Mongodb 添加刪除分片與非分片表維護

發布時間:2020-07-25 20:27:49 來源:網絡 閱讀:4023 作者:aqszhuaihuai 欄目:MongoDB數據庫

去年的筆記,接著發

一、如何移除分片

1、確認balancer已經開啟

mongos> sh.getBalancerState()
true


2、移除分片

注:在admin db下執行命令。

mongos> use admin
switched to db admin
mongos> db.runCommand( { removeShard: "shard3" } )
{
	"msg" : "draining started successfully",
	"state" : "started",
	"shard" : "shard3",
	"ok" : 1
}


3、檢查遷移的狀態

同樣執行

mongos> use admin
switched to db admin
mongos> db.runCommand( { removeShard: "shard3" } )
{
	"msg" : "draining ongoing",
	"state" : "ongoing",
	"remaining" : {
		"chunks" : NumberLong(3),
		"dbs" : NumberLong(0)
	},
	"ok" : 1
}

remaining中的chunks表示還有多少數據塊未遷移。


4、移除未分片數據

In a cluster, a database with unsharded collections stores those collections only on a single shard.

That shard becomes the primary shard for that database. (Different databases in a cluster can have different primary shards.)


WARNING

Do not perform this procedure until you have finished draining the shard.


1)To determine if the shard you are removing is the primary shard for any of the cluster’s databases, issue one of the following methods:

sh.status()

db.printShardingStatus()

In the resulting document, the databases field lists each database and its primary shard.

For example, the following database field shows that the products database uses mongodb0 as the primary shard:

{  "_id" : "products",  "partitioned" : true,  "primary" : "mongodb0" }


2)To move a database to another shard, use the movePrimary command. For example, to migrate all remaining unsharded data from mongodb0 to mongodb1, 

issue the following command:

use admin

db.runCommand( { movePrimary: "products", to: "mongodb1" })       --products為db name

This command does not return until MongoDB completes moving all data, which may take a long time. 

The response from this command will resemble the following:

{ "primary" : "mongodb1", "ok" : 1 }


If you use the movePrimary command to move un-sharded collections, you must either restart all mongos instances,

 or use the flushRouterConfig command on all mongos instances before writing any data to the cluster. 

 This action notifies the mongos of the new shard for the database.


If you do not update the mongos instances’ metadata cache after using movePrimary, the mongos may not write data to the correct shard. 

To recover, you must manually intervene.

根據上面所說,遷移非分片表 時 最好停機,在運行db.runCommand( { movePrimary: "products", to: "mongodb1" })  命令完成之后,

刷新所有mongos后(所有mongos上運行db.runCommand("flushRouterConfig")),再對外提供服務。當然也可以重新啟動所有mongos實例 。


5、完成遷移

mongos> use admin
switched to db admin
mongos> db.runCommand( { removeShard: "shard3" } )
{
	"msg" : "removeshard completed successfully",
	"state" : "completed",
	"shard" : "shard3",
	"ok" : 1
}

如果state為 completed,表示已完成遷移。


二、添加分片

1、首先確認balancer已經開啟

mongos> sh.getBalancerState()
true

2、執行添加分片的命令

如果出現以下錯誤,刪除目標shard3上的test1數據庫,再次執行命令

mongos> sh.addShard("shard3/192.168.137.138:27019")
{
	"ok" : 0,
	"errmsg" : "can't add shard shard3/192.168.137.138:27019 because a local database 'test1' exists in another shard1:shard1/192.168.137.111:27017,192.168.137.75:27017"
}

mongos> sh.addShard("shard3/192.168.137.138:27019")
{ "shardAdded" : "shard3", "ok" : 1 }

最后運行sh.status()命令確認遷移是否成功,可能會花比較長的時間。



向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

宝兴县| 张家港市| 常熟市| 兴仁县| 沐川县| 永定县| 嘉荫县| 巴楚县| 德安县| 若羌县| 岱山县| 永宁县| 衢州市| 定安县| 龙井市| 米林县| 西吉县| 乌兰察布市| 永安市| 新干县| 聊城市| 延津县| 南岸区| 丰城市| 宝山区| 太谷县| 格尔木市| 榆林市| 小金县| 石渠县| 新乡市| 呼玛县| 昭苏县| 垦利县| 科技| 永兴县| 曲阳县| 新野县| 长武县| 安徽省| 临清市|