Edited at

さくらのVPSに無料の外部自動バックアップ機能を追加する方法

More than 1 year has passed since last update.


環境と概要


  • さくらのVPS

  • CentOS 7.4

  • SELinux無効

イメージバックアップツールで丸ごとバックアップ → マウントしたオンラインストレージに保存。

という疑似自動バックアップ機能構築のお話

さくらのVPSにはバックアップ機能がないため、もしもの場合に備えて外部への自動バックアップ機能を追加する

保存先をさくらインターネット外部(オンラインストレージ)にしたのは、さくら側の障害(事例1,事例2)によるデータ損失を防ぐため。


「さくらのVPS」でバックアップの機能はありますか

いいえ、「さくらのVPS」は、標準・オプション共に、バックアップの機能はございません。

同一ゾーンであれば複数台構成でのご利用が可能でございますため、他のサーバとデータを同期する、

重要なデータはローカル環境に保存するなど、ご対応ください。



機能要件


  • 定期的なバックアップ(毎日・3世代)

  • 保存先は外部ストレージ

  • 稼働サービスへの影響を最小限に留める(ネットワーク帯域のみ、その他はrconで)

  • 追加費用不要


使用ソフト・サービスと役割


TeraCLOUDについて

外部保存先オンラインストレージとしてTeraCLOUDを使用


TeraCLOUDの選択理由


  • 無料で15GBまで使用可※

  • WebDAVが使用可

  • 共有機能が使用不可(人為的ミス防止)

  • Oracle Solaris 11で堅牢

  • ZFS RAID-Z3(RAID6)で保全性が高い

  • 速度が安定

  • 帯域制限(10Mbps)がある(ネットワーク帯域専有防止)

※3世代ぐらいであれば十分


外部保存先のセットアップ

アカウント作成は下記参照。下記の手順通りで無料容量が10GB→15GBになる

速くてシンプルな国産オンラインストレージ「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限定】エラー事前対策


mindi.conf

vi /etc/mindi/mindi.conf

EXTRA_SPACE=240000 #追記
BOOT_SIZE=100000 #追記



バックアップスクリプト

スクリプトの作成


自動化スクリプト

vi /etc/cron.daily/auto_backup.sh


次のシェルをコピペ


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

~以上~


圧縮レベルについて

09で大きいほど高圧縮。指定なしの場合は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 の使いかた