GrowiというWikiシステムがありますが、万が一サーバーが故障した場合これまで蓄積したナレッジが失われてしまいます。
そんな悲しい事態になる前にバックアップとリカバリを試しておくことにします。
なお、手順やスクリプトは我流ですので正常に復旧できなくても責任は持ちません。自己責任でお願いします。
バックアップ計画を立てる
バックアップ計画を以下のように設定しました。
- 毎日3:00にバックアップを保存する
- バックアップの保存期間は7日間
- バックアップ先はNAS(Synology DS216j)上のフォルダ
- バックアップは自動で行われる
バックアップ先のマウント
バックアップ先のフォルダをCIFSマウントしておきます。cifsの接続パラメーターはNASによって若干変わることに留意しましょう。
# dnf install samba-client cifs-utils
# mkdir /mnt/backup
# mount.cifs -o "soft,vers=2.0,username=ユーザー名,password=パスワード" //NASのIPorFQDN/backup /mnt/backup
# touch /mnt/backup/testfile ※バックアップ先にファイルを書き込めるか確認
# rm /mnt/backup/testfile
# cp -p /etc/fstab /etc/fstab.bak
# vi /etc/fstab
※追記
# NAS Mount
//NASのIPorFQDN/backup /mnt/backup soft,vers=2.0,username=ユーザー名,password=パスワード 0 0
パラメーター設定をバックアップ
Growiパラメーター設定ファイルをバックアップします。この中にパスワードシード値も入っているので忘れずに保存しなければなりません。シード値を紛失した場合、リカバリ後にGrowiにログインできなくなります。
Growiのバージョンも控えておいたほうが良いです。
# cp -p /etc/sysconfig/growi /mnt/backup/growi-params
# echo "GROWI-VERSION=バージョン番号" >> /mnt/backup/growi-params
バックアップタスクの作成
バックアップを自動化するためのタスクを作成します。
# cd /root ※任意の場所
# vi growi-backup.sh
# chmod u+x growi-backup.sh
# crontab -e
#!/bin/bash
INSTALL_PATH=/root/growi ※Growiの配置場所
BACKUP_PATH=/mnt/backup
TODAY=`date +"%Y%m%d"`
tar -C ${INSTALL_PATH}/public -cf ${BACKUP_PATH}/${TODAY}.tar uploads
mongodump -d growi --gzip --archive=/tmp/dbdump.gz --quiet
tar -C /tmp -uf ${BACKUP_PATH}/${TODAY}.tar dbdump.gz
gzip -f ${BACKUP_PATH}/${TODAY}.tar
rm -fR /tmp/dbdump.gz
find ${BACKUP_PATH} -name "*.tar.gz" -mtime +7 -delete
#追記
0 3 * * * /root/growi-backup.sh
以上でGrowiのバックアップ設定が完了です。あとは普通にGrowiを使いましょう。
リカバリをしなければならなくなりました!
サービスしていたサーバーが完全に破損してしまいました。起動すらできません...
というシチュエーションを想定してリカバリ作業に入ります。
Growiの空セットアップ
Growiを構築します。この時点ではGrowiを起動しないようにして下さい。
なお、バージョン情報とシード値はバックアップ元と同じものにする必要があります。
誤ってGrowiを起動してしまった場合
余分なDBが作成されてしまうため復旧に失敗します。次のコマンドでDBを削除して下さい。
# systemctl stop growi
# mongo
> use growi;
> db.dropDatabase();
> quit();
バックアップデータの展開
バックアップデータをSCPなどを使ってサーバー上にコピーし、展開しておきます。
# tar xzf 20190630.tar.gz
アップロードファイルの配置
バックアップデータから展開されたuploads
フォルダを配置します。
# mv uploads /root/growi/public/
データベースのリカバリ
ダンプファイルから復元します。
# mongorestore --gzip --archive=dbdump.gz -d growi
Growiの起動と確認
これでリカバリが完了しました。あとはGrowiを起動して動作確認を行いましょう。
# systemctl start growi