お品書き
- MongoDBについて
- 実際のコマンドについて
- 定期実行について
初めに
今運用しているやり方ではいざ消えてしまったら、泣いてしまうので、バックアップをとって安心しよう!
事前知識
MongoDB
MongoDBとはDBのひとつで、MySQLに似たものです。
MongoDB(モンゴDB)は、Server Side Public License(英語版) (SSPL) で提供されるドキュメント指向データベースである。開発とサポートはMongoDB Inc.が行なっている
引用: wiki MongoDB
今回はMongoDBについて特に理解する必要はないため名前を知っておく程度で留めておく。
リストア
バックアップしたデータを復元することです
コマンドについて
Dockerのコンテナ名を検索しよう
コマンドプロンプトで自動で実行するために、このコードを書こう!!
まずMongoDBのコンテナ名を確認しましょう!!
$ sudo docker ps -a
↓出力結果↓
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c2f4ba897e40 growi_app "dockerize -wait tcp…" 41 hours ago Up 24 hours 0.0.0.0:3000->3000/tcp, :::3000->3000/tcp growi_app_1
bdf7248b2f4d mongo:4.4 "docker-entrypoint.s…" 41 hours ago Up 24 hours 27017/tcp growi_mongo_1
9efaf2af9286 growi_elasticsearch "/bin/tini -- /usr/l…" 41 hours ago Up 24 hours 9200/tcp, 9300/tcp growi_elasticsearch_1
この中のNAMESのところがコンテナ名ですので、今回は{growi_mongo_1}となります。
シェルファイルを作って一発でバックアップをとってみる
好きな場所で以下のコマンドを実行してみましょう。
$ nano growi_backup.sh
エディタ画面が表示されるので、以下の文章をコピペしましょう!!
{MongoDBのコンテナ名}と{保存したい場所のパス}を変更しましょう
#!/bin/sh
BKDIR={保存したい場所のパス}
# Creating backup archive
sudo docker exec -d {MongoDB の コンテナ名} mongodump --archive=mongodb.archive
sudo docker cp {MongoDB のコンテナ名}:mongodb.archive $BKDIR/$(date --date '1 day ago' "+%s_%Y_%m_%d_3.7.1_mongodb.archive")
# Create config backup archive
# Delete old backups
find $BKDIR -mtime +6 | xargs rm -rf
終わるときは、Ctrl+x → y → enterで編集を終わりましょう
自動実行について
crontabにバックアップを取りたい時刻を設定し、スクリプトを実行しましょう
おそらく、このタイミングで、エディターの選択画面が出てくる時もありますので、適宜選択してください。
$ sudo crontab -e
下記を最後の行に追加して、保存をしましょう。
0 2 * * * {shファイルがある絶対パス} CRON=1
これでアーカイブファイルが保存されました。
次回、リストア(復元編)でお会いしましょう。
GrowiWikiシリーズ
参考文献
参考にした記事を貼っていこう
主なURLリンク
dockerで動いているgrowiのmongodbをバックアップ・リストアする