質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MongoDB

MongoDBはオープンソースのドキュメント指向データベースの1つです。高性能で、多くのリトルエンディアンシステムを利用することができます。

Q&A

解決済

1回答

356閲覧

mongodb シャード間のデータ移動の再開について

ryo-kun

総合スコア13

MongoDB

MongoDBはオープンソースのドキュメント指向データベースの1つです。高性能で、多くのリトルエンディアンシステムを利用することができます。

0グッド

0クリップ

投稿2018/09/26 08:20

編集2018/09/26 08:22

前提・実現したいこと

mongodbでsharding環境にて
sh.enableSharding("コレクション名")を実行し
データがシャード1→シャード2と移動している最中に
サーバーを停止させました。

サーバーおよび、mongodbを再起動させたら
自然とシャード間のデータの移動が再開するのかと思ったのですが、
何も変化がありません。

どうすれば、再開するのでしょうか?
手動でchunkを移動させる方法もあるようですが、
できれば自動で移動させたいです。

発生している問題・エラーメッセージ

collection.aはサーバー停止前にデータの移動が完了していたので、
shard-1,2のchunks数がほぼ同じですが、
collection.bは移動中にサーバーが停止したため、chunks数の差が大きいです。

ドキュメントではこのような場合、自動でchunks数が同じとなるように
処理すると思ったのですが、特に変化がありません。

mongos> sh.status() --- Sharding Status --- sharding version: { } shards: { "_id" : "shard-1", "host" : "【略】", "state" : 1 } { "_id" : "shard-2", "host" : "【略】", "state" : 1 } active mongoses: "3.6.7" : 1 autosplit: Currently enabled: yes balancer: Currently enabled: yes Currently running: no Failed balancer rounds in last 5 attempts: 0 Migration Results for the last 24 hours: 1756 : Failed with error 'aborted', from shard-1 to shard-2 databases: { "_id" : "config", "primary" : "config", "partitioned" : true } config.system.sessions shard key: { "_id" : 1 } unique: false balancing: true chunks: shard-1 1 { "_id" : { "$minKey" : 1 } } -->> { "_id" : { "$maxKey" : 1 } } on : shard-1 Timestamp(1, 0) { "_id" : "xxxxx", "primary" : "shard-1", "partitioned" : true } collection.a shard key: { 【略】 } unique: false balancing: true chunks: shard-1 48 shard-2 47 too many chunks to print, use verbose if you want to force print collection.b shard key: { 【略】 } unique: false balancing: true chunks: shard-1 670 shard-2 349 too many chunks to print, use verbose if you want to force print

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

あるわけでチャンク移動は毎回エラーしているみたいです。

Migration Results for the last 24 hours: 1756 : Failed with error 'aborted', from shard-1 to shard-2

最近の24時間で1,756同じabortが生じたそうです。調べないとなおらないです。二か所で同じくらいの情報あります。

1."config"`データベースのchangelogコレクションの詳細で分かるかもしれない。

これでちょっとナビして下さい。

javascript

1db.getSiblingDB("config").changelog.find().sort({"time": -1}).limit(3).pretty() 2db.getSiblingDB("config").changelog.aggregate([{$group: {"_id": "$what", "count": {"$sum": 1}}}, {"$sort": {"_id": 1}}])

あなたが気にするは"what"=="moveChunk.*"のログドキュメント。もし私が正確に覚えていれば
とくにmoveChunk.toとmoveChunk.fromのドキュメントでエラーが見える。

javascript

1db.getSiblingDB("config").changelog.find({"what": /^moveChunk.*/}).pretty().sort({"time": -1}) 2db.getSiblingDB("config").changelog.find({"what": /^moveChunk.[tf].*/, "details.note": "aborted"}).pretty()

2.toもfromシャードのプライマリーmongodとconfigsvrレプリカセットのプライマリーのログファイルで「SHARDING」をgrepしてください。例えば

grep "SHARDING" mongod.log | grep aborted

あるいは
... | grep error
など。

何か見つかったら多分ウェブ検索で早めに本当の原因と解決しかた分かるかもしれない。そうじゃない場合はここでもう一つのQA質問を投稿してもいいでしょう。

投稿2018/09/27 00:39

akira_kurogane

総合スコア48

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ryo-kun

2018/09/27 01:20

回答ありがとうございます。 停止しているのではなく、移動させようとして失敗していたのですね。 ご指摘の内容を確認してみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問