毎日1回の単純バックアップでは、1日放置すると障害でもうダメになったものをバックアップし、バックアップもアウトになる可能性があります。

世代管理があれば、そういったものは諦めて古いもので復旧できるので安心です。

 

ということで、rsyncのバックアップスクリプトをパワーアップさせてみました。

オプション–compare-destを使って世代管理を導入、ただのインクリメンタルじゃ面白くないのでdumpライクなハノイの塔シーケンスを採用しました。

レベル0(フルバックアップ)は手動でやることにして、こんなかんじにしました。

1a -> 3 -> 2 -> 5 -> 4 -> 7 -> 6 -> 9 -> 8

1b -> 3 -> 2 -> 5 -> 4 -> 7 -> 6 -> 9 -> 8 ->1aに戻る

 

以下、実装の話。

ソースをのせてバグっていたら危なすぎるので、考え方だけ。

 

■バックアップレベル管理

ファイルにハノイの塔シーケンスでレベルをずらっと書いておき、バックアップのたびに先頭にあるレベルを使います。

使ったら最後に移動させてローテーションさせます。

 

■–compare-destの指定

–compare-destは、指定したディレクトリにすでに同じものがバックアップされているかチェックしてくれるオプションです。

これを使って世代管理をします。

似たようなオプションに、同じものがあったらローカルコピーする–copy-dest、コピーではなくハードリンクを作る–link-destがあります。

 

ハノイの塔シーケンスを組むには、–compare-destを複数指定できるrsyncのバージョン2.6.4以降が必要です。

2.6.4以降であれば、複数書くと前から順番にチェックしてくれます。

例えばレベル3の時は、こんな感じで自分より低いレベルのディレクトリをチェックします。

rsync うんたらかんたら \

–compare-dest=/backup/2/dir/ –compare-dest=/backup/1a/dir/ –compare-dest=/backup/0/dir/ \

vps:/dir/ /backup/3/dir/

こうすれば、vps:/dir/をバックアップ元として、すでに同じものがないか2 -> 1a -> 0の順番でチェックしてくれます。

どこかにあればそのファイルは無視、見つからなければ3配下にバックアップされ、差分バックアップとなります。

 

今回レベル1を1aと1bの2セットにしました。

レベル1はどっちのディレクトリを見ればいいかは、バックアップレベル管理のファイルを見ます。

ファイルの後ろにあるほうが現在のサイクルで使っているレベル1なので、後ろにあるものを使います。

 

 

これでうっかり何かやっちゃっても安心。

お名前.comのVPS(KVM)はHDDがRAID10らしいですが、借り物のサーバに障害時のバックアップを任せっきりにするのは怖すぎます。

ということで主な設定や日々更新されるデータなどを、毎日深夜にrsyncでローカルの旧サーバにコピーするようにしました。

 

ここで大事なのが、サーバの回線は同居人と100Mbpsを共有ってところです。

深夜とはいえ限界まで帯域を食いつぶすのもよくないかなと思い、rsyncオプションの–bwlimitを使って帯域制限をかけてみました。

データ量的に1Mbps程度あれば間に合いそうなので、–bwlimit 128にしてみました。

 

なお、このオプションに指定する数値の単位はKB/secであってKbpsではありません。

4096で4Mbpsに制限したつもりなのに、実は32Mbpsになってましたという間違いがよく起こりそうです。

 

ここ、次のテストに出ますので覚えておいてください。

 

昨日dgmu.infoのネームサーバアドレスを新アドレスに切り替えました。

これで新しい情報が伝われば移転完了のはずだったのですが・・・。

 

新サーバのDNS設定にCNAMEを多用したことが原因なのか、設定の書き方が悪かったのか、おかしなことになってしまったようです。

あらかじめ新アドレスに向けてあったwwwが旧アドレスに戻ってしまうという状況。

 

新旧の設定はこんなかんじです。

nsがネームサーバ、wwwがwebサーバ。

新サーバ

ns IN A 新アドレス
www IN CNAME ns.dgmu.info.

旧サーバ

ns IN A 旧アドレス
www IN A 新アドレス

 

予定では、

・ns.dgmu.infoのIPアドレスが 旧サーバに向いているうちは旧サーバが答えてwwwは新アドレス

・新サーバに向けばnsが新アドレスになっているのでwwwもnsのCNAMEで新アドレス

となるはずでした。

 

しかし実際は設定が混ざってしまったようで、wwwは古いnsのCNAME扱いになり、旧アドレスに戻ってしまいました。

そんな動きをするとは思いませんでした。やってみないと分からないことってありますね。

 

稼働中のドメインを別のIPアドレスに移転するときは、新旧のDNS設定が混ざっても矛盾が起きないように気をつける必要があるみたいです。

 

Posted in DNS.