#環境と概要
- さくらのVPS
- CentOS 7.4
- SELinux無効
イメージバックアップツールで丸ごとバックアップ → マウントしたオンラインストレージに保存。
という疑似自動バックアップ機能構築のお話
さくらのVPSにはバックアップ機能がないため、もしもの場合に備えて外部への自動バックアップ機能を追加する
保存先をさくらインターネット外部(オンラインストレージ)にしたのは、さくら側の障害(事例1,事例2,事例3)によるデータ損失を防ぐため。
「さくらのVPS」でバックアップの機能はありますか
いいえ、「さくらのVPS」は、標準・オプション共に、バックアップの機能はございません。
同一ゾーンであれば複数台構成でのご利用が可能でございますため、他のサーバとデータを同期する、
重要なデータはローカル環境に保存するなど、ご対応ください。
##機能要件
- 定期的なバックアップ(毎日・3世代)
- 保存先は外部ストレージ
- 稼働サービスへの影響を最小限に留める(ネットワーク帯域のみ、その他は
rcon
で) - 追加費用不要
##使用ソフト・サービスと役割
- Mondo Rescue - イメージバックアップ
- davfs2 - WebDAVのマウント
- TeraCLOUD - バックアップ保存先
##TeraCLOUDについて
外部保存先オンラインストレージとしてTeraCLOUDを使用
###TeraCLOUDの選択理由
- 無料で15GBまで使用可※
- WebDAVが使用可
- 共有機能が使用不可(人為的ミス防止)
- Oracle Solaris 11で堅牢
- ZFS RAID-Z3(RAID6)で保全性が高い
- 速度が安定
- 帯域制限(10Mbps)がある(ネットワーク帯域専有防止)
※3世代ぐらいであれば十分
#外部保存先のセットアップ
アカウント作成は下記参照。下記の手順通りで無料容量が10GB→15GBになる(今月10日までは更に5GB追加)
速くてシンプルな国産オンラインストレージ「TeraCLOUD」 | ハルパス
アカウント準備後、マイページ(要ログイン)のWebDAV接続URL
(例:https://futtsu.teracloud.jp/dav/ )をメモ
##さくらのVPSにマウント
davfs2のセットアップ
yum -y install davfs2
mkdir /backup
mount -t davfs https://futtsu.teracloud.jp/dav/ /backup
Username: #TeraCLOUDユーザ名
Password: #TeraCLOUDパスワード
df -h
https://futtsu.teracloud.jp/dav/ 26G 13G 13G 50% /backup
※認証が面倒であれば/etc/davfs2/secrets
に書いておくとスキップ可(セキュリティ的には非推奨)
vi /etc/davfs2/secrets
https://futtsu.teracloud.jp/dav/ ユーザ名 パスワード
#バックアップ機能のセットアップ
Mondo Rescueのセットアップ
cd /etc/yum.repos.d/
wget http://www.mondorescue.org/ftp/centos/7/x86_64/mondorescue.repo
yum -y install mondo lzop
【CentOS7限定】エラー事前対策
vi /etc/mindi/mindi.conf
EXTRA_SPACE=240000 #追記
BOOT_SIZE=100000 #追記
##バックアップスクリプト
スクリプトの作成
vi /etc/cron.daily/auto_backup.sh
次のシェルをコピペ
#!/bin/bash
today=$(date +%Y%m%d)
#Backup_日付.isoのファイル名でバックアップ
mondoarchive -O -i -N -L -s16g -E"/backup" -d /var/tmp -p Backup_${today}
#バックアップイメージを移動
mv /var/tmp/Backup_${today}-1.iso /backup
#古いバックアップイメージを削除
find /backup -type f -mtime +4 -exec rm -f {} \;
オプション | 意味 |
---|---|
-O | バックアップ |
-V | ベリファイを実行 |
-i | ISOファイルとして出力 |
-num | 圧縮レベル※ |
-L | lzo圧縮を使用(高速化) |
-N | ローカルファイルのみバックアップ |
-s | 最大サイズ(指定なしの場合、) |
-E | 除外するディレクトリ (パイプ区切り) |
-d | 出力先ディレクトリ |
-p | 出力ファイル名 |
実行権限を付与
chmod 755 /etc/cron.daily/auto_backup.sh
~以上~
##圧縮レベルについて
0
~9
で大きいほど高圧縮。指定なしの場合は3
最大(9):2.7GB - 16分31秒
標準(3):3.0GB - 2分30秒
無圧縮 :4.6GB - 2分3秒
##I/O、CPU負荷対策について(※追記 2018/5/20)
rcon
を使えばリソース制限が可
コマンド実行時のCPUやIOリソースを簡単に制御するツールrconを作った - 人間とウェブの未来
差分バックアップ(-D
)でも良いが、3世代しか保持しないので親が消えて復元不可になる(未検証)
#復元
バックアップメディアとして出力しているため、そのままブート可
ISOをカスタムOSインストール機能を使って起動、Automatically
を選択で復元できる
#参考
公式ドキュメント
Mondo RescueでCentOS6のフル/増分バックアップを行う | riscascape.net
findコマンドのmtimeオプションまとめ - Qiita
Mondo Rescue を使ったバックアップとリカバリ - Qiita
Linuxmania:Mondo Rescue の使いかた