MongoDBには、MongoDB開発者御用達の便利ツール「mtools」というものがあるのですが、まだあまり知られていないようですので、紹介していきます。
mtoolsの概要
mtoolsはgithubで公開されており、
以下のコンポーネントが含まれます
mlogfilter
MongoDBのログファイルをマージして、スロークエリを探したり、フルスキャンを探したりできるツール。さらにログを属性でフィルタして、JSONにすることもできる。
mloginfo
MongoDBのログファイルを食わせると、ログの開始時間、終了時間、バージョン、出してるバイナリ、各種イベント(リスタート、レプリカ関連)、クエリの種類などを集計してくれる。
mplotqueries
MongoDBのログファイルを食わせると、グラフを作ってくれる
mlogvis
MongoDBのログファイルを食わせるとhtmlをはいてくれる
mlaunch
テスト環境を簡単に作れるスクリプト。レプリカセットやシャーディング環境をコマンド一発で作れる。
mgenerate
テンプレートに基づいてテスト用データを作ってくれる
mtoolsのインストール
pythonまわりのインストール
まずpython 2.6.xか2.7.xが必要なので、それをインストールします(この手順はRHEL6/Cent6前提です)
# yum install python python-devel
次にpythonのライブラリ管理ツールであるpipを入れます。
# curl -kL https://raw.github.com/pypa/pip/master/contrib/get-pip.py | python
mtoolsのインストール
pipでさくっと入れます。
# pip install mtools
詳しくは https://github.com/rueckstiess/mtools/blob/master/INSTALL.md
各種ツールの使い方
mlogfilterの使い方
後日書きます m(_ _)m
mloginfoの使い方
一番簡単な使い方は、mloginfoコマンドにログファイルを引数に渡します。すると以下のようにログファイルの情報が出ます
# mloginfo mongod.log
source: mongod.log
host: db0.example.com:27017
start: 2014 Aug 28 15:37:35.589
end: 2014 Oct 29 00:04:35.567
date format: iso8601-local
length: 74369
binary: mongod
version: 2.6.4
以下のように複数のログファイルを渡すと、ずらずらっと情報が出るため、目的のログを探すのに便利です。
# mloginfo *.log*
他にもオプションで以下のようなことがわかります
-
--queries
:クエリのパターンとクエリの対象 -
--restarts
:再起動タイミング -
--distinct
:行の種類と出現回数 -
--connections
:コネクション状態 -
--rsstate
:レプリカセットの状態
詳しくは https://github.com/rueckstiess/mtools/wiki/mloginfo
mplotqueriesの使い方
後日書きます m(_ _)m
mlogvisの使い方
後日書きます m(_ _)m
mlaunchの使い方
mlaunchはMongoDBの実行ファイルにPATHが通ってないないとダメなのでまず最初にPATHを通しておいて下さい。
単一のMognoDB
単一ノードのMongoDBを上げる場合は、以下のコマンドです
# mlaunch --single
launching: mongod on port 27017
このままでもよいですが、これだとジャーナルが有効で、ディスク食いますし、起動も遅いので、さらに手軽に実施する場合は--nojournal
オプションを付けましょう。
# mlaunch --single --nojournal
launching: mongod on port 27017
レプリカセット
レプリカセットは以下のコマンドでできます。
# mlaunch --replicaset
launching: mongod on port 27017
launching: mongod on port 27018
launching: mongod on port 27019
5ノードでプリカセットであれば以下のコマンドです。
# mlaunch --replicaset --nodes 5
シャーディング
単一ノードからなるシャーディングは以下のコマンドで上げられます。3つのシャードと、ひとつのconfigサーバ、ひとつのmognosが上がります。
# mlaunch --single --sharded 3
launching: mongod on port 27018
launching: mongod on port 27019
launching: mongod on port 27020
launching: config server on port 27021
launching: mongos on port 27017
レプリカからなるシャーディングは以下のコマンドです。
ついでにconfigは3台構成、mongosも3台構成にします。
# mlaunch --replicaset --sharded 3 --config 3 --mongos 3
launching: mongod on port 27020
launching: mongod on port 27021
launching: mongod on port 27022
launching: mongod on port 27023
launching: mongod on port 27024
launching: mongod on port 27025
launching: mongod on port 27026
launching: mongod on port 27027
launching: mongod on port 27028
launching: config server on port 27029
launching: config server on port 27030
launching: config server on port 27031
replica set 'shard01' initialized.
replica set 'shard02' initialized.
replica set 'shard03' initialized.
launching: mongos on port 27017
launching: mongos on port 27018
launching: mongos on port 27019
adding shards. can take up to 30 seconds...
その他
もろもろの環境を止める場合は以下コマンドです。
# mlaunch stop
環境を消す場合は、mlaunchのディレクトリを消せばOKです。デフォルトは(コマンド実行ディレクトリ)/data
です。
# rm -rf data
好きなオプションを渡したい場合は、最後につければmongodなりに渡されます
# mlaunch --single --nojournal --rest --notablescan --noscripting
launching: mongod on port 27017
# ps -ef | grep mongod
root 788 1 0 00:35 ? 00:00:00 mongod --dbpath /tmp/data/db --logpath /tmp/data/mongod.log --port 27017 --logappend --fork --nojournal --rest --notablescan --noscripting
他にもレプリカでアービタを指定したり、認証を有効にしたりもできます。詳しくは https://github.com/rueckstiess/mtools/wiki/mlaunch
mgenerateの使い方
後日書きます m(_ _)m