Growi構築した後に、データ情報をバックアップしたいという要望があると思います。しっかりとしたストレージがあれば、ストレージ機能でバックアップを取得することは可能ですが、中小企業の場合、バックアップの仕組みがない場合もあると思います。
Growiサーバ側でバックアップを取得したい場合は、MongoDBによるバックアップ取得も可能です。では、MongoDBによるバックアップ、リストア手順を紹介します。
まずは、MongoDBに接続してデータベースを確認します。Growiの場合は「growi」というデータベースができています。
# mongo
> show dbs;
admin 0.000GB
config 0.000GB
growi 0.001GB
local 0.000GB
基本はサービス無停止でのバックアップを想定しています。今回は、「tmp」フォルダへバックアップを取得します。「mongodump」コマンドを使います。
# mongodump -d growi -o /tmp
バックアップは以下のような「~.json」と「~.bson」ができます。
# ls
attachments.bson pages.metadata.json
attachments.metadata.json revisions.bson
bookmarks.bson revisions.metadata.json
bookmarks.metadata.json sessions.bson
comments.bson sessions.metadata.json
comments.metadata.json updateposts.bson
configs.bson updateposts.metadata.json
configs.metadata.json usergroups.bson
externalaccounts.bson usergroups.metadata.json
externalaccounts.metadata.json users.bson
pages.bson users.metadata.json
続いて、リストアです。リストアは「mongorestore」を使用します。オプション「--drop」がないとエラーがでるので使用します。これは、元のデータを削除することを意味します。
続いて、リストアです。リストアは「mongorestore」を使用します。オプション「--drop」がないとエラーがでるので使用します。これは、元のデータを削除することを意味します。
# mongorestore -d growi --drop /tmp/growi/
以上でバックアップ、リストアは完了です。リストア後は、データが復旧したこともそうですが、全文検索ができることなど、機能的にも問題がないことを確認しておきます。
定期的に実行したい場合は、cronなどで定期実行しておくといいですね。MongoDBのバックアップ、リストアはそれほど難しくないのがいいですね。
2018-xx-xxTxx:43:52.375+0900 the --db and --collection args should only be used when restoring from a BSON file. Other uses are deprecated and will not exist in the future; use --nsInclude instead
2018-xx-xxTxx:43:52.375+0900 building a list of collections to restore from /tmp/growi dir
2018-xx-xxTxx:43:52.403+0900 reading metadata for growi.revisions from /tmp/growi/revisions.metadata.json
2018-xx-xxTxx:43:52.413+0900 reading metadata for growi.users from /tmp/growi/users.metadata.json
2018-xx-xxTxx:43:52.426+0900 reading metadata for growi.pages from /tmp/growi/pages.metadata.json
2018-xx-xxTxx:43:52.432+0900 reading metadata for growi.configs from /tmp/growi/configs.metadata.json
2018-xx-xxTxx:43:52.448+0900 restoring growi.revisions from /tmp/growi/revisions.bson
2018-xx-xxTxx:43:52.457+0900 restoring growi.users from /tmp/growi/users.bson
2018-xx-xxTxx:43:52.464+0900 restoring growi.pages from /tmp/growi/pages.bson
2018-xx-xxTxx:43:52.472+0900 restoring growi.configs from /tmp/growi/configs.bson
2018-xx-xxTxx:43:52.476+0900 restoring indexes for collection growi.pages from metadata
2018-xx-xxTxx:43:52.476+0900 restoring indexes for collection growi.users from metadata
2018-xx-xxTxx:43:52.478+0900 no indexes to restore
2018-xx-xxTxx:43:52.478+0900 finished restoring growi.revisions (8 documents)
2018-xx-xxTxx:43:52.508+0900 restoring indexes for collection growi.configs from metadata
2018-xx-xxTxx:43:52.511+0900 reading metadata for growi.sessions from /tmp/growi/sessions.metadata.json
2018-xx-xxTxx:43:52.520+0900 finished restoring growi.users (1 document)
2018-xx-xxTxx:43:52.521+0900 finished restoring growi.pages (8 documents)
2018-xx-xxTxx:43:52.527+0900 restoring growi.sessions from /tmp/growi/sessions.bson
2018-xx-xxTxx:43:52.536+0900 reading metadata for growi.comments from /tmp/growi/comments.metadata.json
2018-xx-xxTxx:43:52.541+0900 reading metadata for growi.attachments from /tmp/growi/attachments.metadata.json
2018-xx-xxTxx:43:52.542+0900 restoring indexes for collection growi.sessions from metadata
2018-xx-xxTxx:43:52.544+0900 finished restoring growi.configs (41 documents)
2018-xx-xxTxx:43:52.551+0900 restoring growi.comments from /tmp/growi/comments.bson
2018-xx-xxTxx:43:52.557+0900 restoring indexes for collection growi.comments from metadata
2018-xx-xxTxx:43:52.563+0900 restoring growi.attachments from /tmp/growi/attachments.bson
2018-xx-xxTxx:43:52.571+0900 restoring indexes for collection growi.attachments from metadata
2018-xx-xxTxx:43:52.578+0900 finished restoring growi.sessions (1 document)
2018-xx-xxTxx:43:52.583+0900 reading metadata for growi.bookmarks from /tmp/growi/bookmarks.metadata.json
2018-xx-xxTxx:43:52.598+0900 reading metadata for growi.updateposts from /tmp/growi/updateposts.metadata.json
2018-xx-xxTxx:43:52.605+0900 restoring growi.bookmarks from /tmp/growi/bookmarks.bson
2018-xx-xxTxx:43:52.612+0900 restoring indexes for collection growi.bookmarks from metadata
2018-xx-xxTxx:43:52.619+0900 finished restoring growi.comments (0 documents)
2018-xx-xxTxx:43:52.619+0900 finished restoring growi.attachments (0 documents)
2018-xx-xxTxx:43:52.619+0900 restoring growi.updateposts from /tmp/growi/updateposts.bson
2018-xx-xxTxx:43:52.626+0900 restoring indexes for collection growi.updateposts from metadata
2018-xx-xxTxx:43:52.639+0900 reading metadata for growi.externalaccounts from /tmp/growi/externalaccounts.metadata.json
2018-xx-xxTxx:43:52.642+0900 reading metadata for growi.usergroups from /tmp/growi/usergroups.metadata.json
2018-xx-xxTxx:43:52.649+0900 finished restoring growi.updateposts (0 documents)
2018-xx-xxTxx:43:52.650+0900 restoring growi.externalaccounts from /tmp/growi/externalaccounts.bson
2018-xx-xxTxx:43:52.658+0900 restoring indexes for collection growi.externalaccounts from metadata
2018-xx-xxTxx:43:52.660+0900 finished restoring growi.bookmarks (0 documents)
2018-xx-xxTxx:43:52.665+0900 restoring growi.usergroups from /tmp/growi/usergroups.bson
2018-xx-xxTxx:43:52.667+0900 restoring indexes for collection growi.usergroups from metadata
2018-xx-xxTxx:43:52.673+0900 finished restoring growi.externalaccounts (0 documents)
2018-xx-xxTxx:43:52.673+0900 finished restoring growi.usergroups (0 documents)
2018-xx-xxTxx:43:52.673+0900 done
以上でバックアップ、リストアは完了です。リストア後は、データが復旧したこともそうですが、全文検索ができることなど、機能的にも問題がないことを確認しておきます。
定期的に実行したい場合は、cronなどで定期実行しておくといいですね。MongoDBのバックアップ、リストアはそれほど難しくないのがいいですね。
