実行ファイルの役割分担
MongoDBを運用する際、各バイナリファイルの役割を理解することは重要です。主な実行ファイルは以下の通りです。
- mongod.exe: データベースサーバー本体(デーモン)です。データの保存やクエリの処理を担当します。
- mongo.exe: 対話型JavaScriptシェルです。サーバーへの接続や操作を行うクライアントとして機能します。
- mongodump.exe / mongorestore.exe: データの論理バックアップ作成と復元を行うためのユーティリティです。
- mongoexport.exe / mongoimport.exe: JSONやCSV形式でのデータエクスポートおよびインポートを行うツールです。
バッチファイルによる自動化設定
毎回コマンドを入力する手間を省くため、サーバー起動とクライアント接続をバッチファイル(.bat)で自動化します。また、Windowsサービスとして登録することで、バックグラウンドでの常駐運用を可能にします。
1. サーバーの手動起動用バッチ
データベースをフォアグラウンドで実行するためのスクリプトを作成します。パスは環境に合わせて調整してください。
@echo off
set MONGO_HOME=C:\Program Files\MongoDB\Server\3.6\bin
set DATA_DIR=D:\MongoDb\data
echo Starting MongoDB Server...
"%MONGO_HOME%\mongod.exe" --dbpath "%DATA_DIR%"
pause
2. Windowsサービスへの登録と削除
システム起動とともにMongoDBを自動起動させるため、Windowsサービスとして登録します。これにはscコマンドを使用する方法が推奨されます。
サービス登録スクリプト (install_service.bat)
@echo off
set BIN_PATH=C:\Program Files\MongoDB\Server\3.6\bin
set DB_PATH=D:\MongoDb\data
set LOG_PATH=D:\MongoDb\log\MongoDB.log
echo Installing MongoDB Service...
sc create MongoDB binPath= "\"%BIN_PATH%\mongod.exe\" --service --dbpath=\"%DB_PATH%\" --logpath=\"%LOG_PATH%\"" DisplayName= "MongoDB" start= auto
if %ERRORLEVEL% EQU 0 (
echo Service installed successfully.
echo Starting service...
net start MongoDB
) else (
echo Installation failed.
)
pause
サービス削除スクリプト (uninstall_service.bat)
@echo off
echo Stopping MongoDB service...
net stop MongoDB
echo Removing MongoDB service...
sc delete MongoDB
echo Operation completed.
pause
3. クライアント接続用バッチ
シェルをすぐに起動するための簡易スクリプトです。
@echo off
"C:\Program Files\MongoDB\Server\3.6\bin\mongo.exe"
データのバックアップとリストア戦略
データ保護のため、MongoDBでは主に2つのバックアップ手法が存在します。
コールドバックアップ(ファイルコピー)
この方法は最も単純ですが、MongoDBサーバーを停止させる必要があります。サーバー停止状態でデータディレクトリ(例: --dbpathで指定したフォルダ)をそのままコピーします。復元する際は、サーバーの起動オプションでコピー先のディレクトリを指定します。コピー中にファイルが変更されないよう、必ずサービスを停止してから行ってください。
ホットバックアップ(mongodump / mongorestore)
サーバーを稼働させたまま実行可能な論理バックアップです。mongodumpはBSON形式でデータをダンプし、mongorestoreで復元します。
ダンプ作成の基本構文
mongodump -h -d -o
- -h: 接続先ホストとポート(例: 127.0.0.1:27017)
- -d: バックアップ対象のデータベース名
- -o: バックアップファイルの出力先ディレクトリ
復元の基本構文
mongorestore -h -d --directoryperdb --drop
- --directoryperdb: ダンプしたディレクトリのパスを指定します。
- --drop: 復元前に既存のコレクションを削除します。このオプションを使用すると、現在のデータはすべて上書きされるため注意が必要です。