この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。
rickNo39です。
IDCフロンティアでは、スナップショットという機能がありますが、対象ディスク全てが対象となりサイズと時間で従量課金となるため、オブジェクトストレージ(の無料枠)を利用して対象ファイルだけバックアップを行った設定を記載します。
事前設定
- s3cmdを使用できるようにしておいて下さい。
別記事参照:IDCFオブジェクトストレージ使用方法 - 初期はHDDが15GBしかないので追加はしておいて下さい
使用するミドル
- logrotate
- mysql
料金プラン
50GBまで無料、10TBまでの定額プラン有
136.7GBまで保存すると定額プランのほうがお得になってくるようです。
オブジェクトストレージへ送信・削除
vim /etc/logrotate.d/mysql-dump
—–
/extdisk1/dump/*.sql {
create 600 mysql mysql
daily
rotate 7
size 0
missingok
dateext
compress
create 444
postrotate
mysqldump -uroot -h localhost –single-transaction –opt –all-databases > /extdisk1/dump/dump.sql
endscript
lastaction
// 圧縮したdumpをオブジェクトストレージに送信
s3cmd put /extdisk1/dump/dump.sql-`date ‘+%Y%m%d’`.gz s3://バケット名
// logrotateでは当日分圧縮してくれないので自分で圧縮
cp /extdisk1/dump/dump.sql /extdisk1/dump/dump.sql-new
gzip /extdisk1/dump/dump.sql-new
// 当日分のdumpもオブジェクトストレージへ送信
s3cmd put /extdisk1/dump/dump.sql-new.gz s3://バケット名
// 6日前(実質7日前)のdumpを削除
s3cmd del s3://バケット名/dump.sql-`date -d ‘6 day ago’ ‘+%Y%m%d’`.gz
endscript
}
—-
容量確認のメール送信
日々容量を確認するのも手間なので、
下記のようなシェルを作成しcronで設定してメールを送るようにします。
vim object_storage_consumption.sh
—-
#!/bin/bash
PID=$!
TIMER=1
HOSTNAME=”hoge@hoge.com”
ADDRESS=”hoge@hoge.com”
DATA=`timeout -s 9 60 s3cmd du -H`
if [ -n “$DATA” ]; then
BODY=”IDCF オブジェクトストレージ使用量\n$DATA\n50GBから有料、136.7GBを超える場合はプラン変更”
echo -e “$BODY” | /usr/bin/mail -s ‘IDCF Object storage consumption’ -r $HOSTNAME $ADDRESS
echo “s3cmdからデータを取得できませんでした。”
fi
—-
たまに?オブジェクトストレージのレスポンスがやたら遅くてメールの中身が途中で途切れることもありますが、気にしない。
以上、とっても簡単バックアップ方法でした。