【AWS初心者向け】スナップショットでインスタンスを復元したい

   

Amazon Web Service EC2を弄り始めた人の日記です。

AWS初心者がハマった、Amazon EC2でAMI網元を使ってWordPressを立ち上げ、引越し完了までの流れ

これをやってからなんと2ヶ月ちょっとが経ってしまいました。EC2のマイクロインスタンスが一年無料とはいえ、あと10ヶ月ですよ。という訳で、続きです。

そもそもEC2の事をあまり理解していない初心者としては、不安なことがいっぱいある訳です。

移行してみて思うことなのですが、なんだかわからないが突然インスタンスが死ぬ事がある。なんだろうこれは。Stop→StartとかRebootとかしても復活しない。うーむ、理由がわからないぞ!!!!という事が頻発していた訳です。

色々と原因を考えてみると、上記リンク先の操作では、Apacheで動かしていたWordPressをNginx構成に変更していたりするので、ファイルのユーザが違うとか、今まで使っていたCache系プラグインが悪さしてそうだとか、何点か怪しい点がありました。よって、移行に際しやったことは

  1. wp-content以下のファイルは全部転送・上書きする
  2. 上書き終わったら、全部のファイルの所有者を #chown nginx:nginx wp-content として書き換える事
  3. DBの中に入っているURLをきちんと書き換えること
  4. 立ち上がったらまず最初に管理画面にログインして、cache系プラグインをオフにすること

といった感じです。

3については、その後も何度かやっています。なぜかというと、Stopしたりすると、接続用のURLが変わったりするので、結構重要。

SSHで接続して、mysqlにログイン。以下の4つのコマンドでDB内のURLを書き換えてテストを行いました。

[sql]

UPDATE wp_options SET option_value=REPLACE(option_value,"旧URL","新URL");
UPDATE wp_posts SET post_content=REPLACE(post_content,"旧URL","新URL");
UPDATE wp_posts SET guid=REPLACE(guid,"旧URL","新URL");
UPDATE wp_postmeta SET meta_value=REPLACE(meta_value,"旧URL","新URL");

[/sql]

ここまでで、旧サイトからの移設のテストはほぼ完了です。

ElasticIPを設定して、所望のドメインを立ち上げたインスタンスに紐付けてあげましょう。あとは自分のPCのhostsを適宜切り替えて、所望のURLでamazonに接続してみて表示を確認しましょう。問題がなければ、実際にDNSをamazon側に振れば移設完了です。ということで、やっとこ本題です。

バックアップどうするんだよ

って思いますよね。何しろ、インスタンスがTerminateされたらデータはそこで終了だよ、だなんて。いやいや、無理。それは無理だよ。と言う事で、バックアップどうするんだよと思ったら、EBSという仕組みで保存が可能ということですよ。

インスタンス・ボリューム・スナップショットの関係

そもそもこれがわかってませんでしたからね。

インスタンスってのは、まあその仮想サーバそのものの事。Startしたり、Stopしたり、Rebootしたり、Terminate(終了)したり、いわゆるサーバとして捉えて良いと思います。

ボリュームとは、そのインスタンスに紐付けられる記憶領域の事を指します。

スナップショットとは、そのボリュームのある時点での状態を記録したものです。

ということで、ここでいうスナップショットでインスタンスを復元したい、という要望は、ある特定の時点でスナップショットをとり、そのスナップショットを元に作ったボリュームを、適当なインスタンスにマウント(Attach)する事で実現される事になります。

どうやるのか?スナップショットをとろう

検証用にやるなら、まずスナップショットをとって、その後WPに、最新記事を適当に入れるとか、適当なウィジェットを差し込むとかしたものを、スナップショットで復元するという事をやると良いと思う。

AmazonEC2でのスナップショットのとりかたスナップショットのとりかたは、EC2のダッシュボードからELASTIC BLOCK STORE(つまりこれがEBS)をクリックし、右側に出てきた各種Volumeの中から、検証用サイトにアタッチされているボリュームを選択して右クリックするとメニューが出てくるのでCreate Snapshotをクリックする。これだけ。

そうすることで、左メニューSnapshotsの中に、今の状態のスナップショットが作られているのがわかると思います。わからなければ、画面右上にある、更新マークをクリックしてみましょう。

reload

スナップショットが出来たら、今触っているWodpressに何か変化を与えて下さい。Themeをいじってみるとかが楽ちんだと思います。これで、復元の準備が整いました。次の手順で、この変更前の状態に戻っていれば完成です。

スナップショットから復元する

スナップショットから復元するには、スナップショットを元にVolumeをつくる必要があります。

cv

Snapshotsにいったら、例のごとく右クリックでCreate Volume from Snapshotを選択します。これでVolumeに行くと、新しいVolumeが作られているはずです。

次に、Volumeに行って、これをアタッチします。

まずは、今使っているVolumeをデタッチ(外す)します。その前にインスタンスをStopしてくださいね。(インスタンスが完全にStopしないと、デタッチは出来ません)

スクリーンショット 2013:04:08 0:07

デタッチしたら、ご所望のVolumeをアタッチします。

アタッチの際に、Deviceの部分の変更を行なって下さい。

スクリーンショット 2013:04:08 0:10/dev/sda1

この/dev/sda1はLinuxのrootデバイス(起動ディスク)です。この設定によって、rootデバイスが新しいボリュームに差し替わります。

あとはインスタンスをStartするだけです。

ふぅ…簡単…だ・・・った・・・(涙

あまりに不安だったので、本買っちゃったよ。。。

おすすめ記事一覧

 - Tips, Wordpress