2007年06月15日

バックアップのテスト

あ〜あ、またやってしまったー。

今日はWikiCookRecipeのバックアップのテストをするぞーと思って、朝からPCの前に陣取り、台所ではその間、ことことと大豆を煮ていた(正確に言うと、蒸していた)。そのことをすっかり忘れ、なかなかうまくゆかないバックアップ作業に心頭滅却していると、火もまた涼し・・・じゃなかった、鍋もまた焦げる。
ふと気が付いた時は時既に遅し。ほうろうのお鍋にたっぷり入れてあったお湯はいつのまにか消えうせ、まっくろくろすけのコーティング。あ〜あ。
不幸中の幸いは、大豆は少々焼き大豆っぽくなってしまったものもあるけど、ちょうど良い火の通り具合。一つ二つつまむとなかなか美味しい(もともと大豆は煮るより蒸す方が美味しいという話なので、今回初めて蒸し大豆に挑戦してみたのです)。大豆を入れてあったざるも蒸し器用布巾も少々色づいているものの復活可能みたい。
でも、問題は鍋!鍋!鍋!
このすさまじい焦げ付きは落ちるのかしらん?
水を入れて冷やした後、一回捨て、水と重曹を入れて沸騰させてやります。今それを冷ましているところ。重曹は焦げ付きを取るのに有効なんですって。でも一回じゃ無理よね。何回かこの作業をやらないと落ちないんじゃないかな。それでも落ちればめっけもの。

二日前には大根茹でててやっぱり忘れてしまって、水分が蒸発しきる直前でぎりぎり気が付いた。
その前には煮干を煮ているのを忘れてしまった。
猿だって学習するんだから、私だって学習しました。今日は大豆を煮ている間、1時間ごとにタイマー鳴らしていたんです。タイマーが鳴ると、台所に行って蒸し具合をチェックして、鍋のお湯の量を確認する。でも何回目かでタイマーを新たにセットするのを忘れてしまったみたいなんですね。

絶対、PC作業と料理って相性が悪いと思う。

さて、バックアップの話です。

バックアップはよけて通れない話なので、早めに方法を確立しておこうと思っていました。
だってなんらかの理由でサーバが落っこちて、データが消えちゃったら、再構築どうするの?
で、バックアップのテストなんて失敗を何回かやるに決まってるから、手作業でも復旧が簡単な、データの少ない今のうちにやっておこうと。

マイPCでいろいろやっていた間は、MySQLのバックアップはmysqldumpというコマンドを使ってやっていました。でも、レンタルサーバでは、このコマンドを使える場所が無い、もしくは私にはよく分からない。ですからMySQLのバックアップはphpMyAdminを使うことにしました。いろいろ失敗しましたが、紆余曲折を経てとりあえず確立したバックアップ方法を書いておきます。

まず、Mediawiki Administrators' Tutorial Guide: Install, Manage, and Customize Your Mediawiki Installationには、Chapter10 Mediawiki Maintenanceにバックアップの方法とかが載っています。これは主に他のサーバへのお引越しという観点から書かれているみたいなので、多少アレンジする必要がありますが、そこに示されている手順は以下のようになります。

1)データベースからテスト用のレコードを削除する

2)データベースのバックアップをとる

3)Mediawikiファイルのバックアップをとる

4)新しいサーバで、データベースを作り、データベースのユーザID、パスワードを設定する

5)データベース・バックアップを、新しいデータベースにインポートする

6)Mediawikiファイル・バックアップを、新しいサーバにインポートする

7)設定ファイルを変更する

8)新しく構築したサイトをテストする

今回は、今現在使っているサーバからデータが消え失せてしまった時、あるいはデータを少し元に戻したい時、などを想定してのバックアップですから、1)、4)、7)は関係ありません。8)はまあサイトにアクセスして、ちゃんと各ページが見えるかどうかなどをチェックするわけですから、2)、3)、5)、6)についてどういう方法をとったかを記述しておきます。

2)データベースのバックアップをとる
 さくらインターネットではphpMyAdminが使えます。phpMyAdminにログインすると、MySQLのメニューの中に「エクスポート」がありますから、それをクリックして、エクスポート設定画面へと進みます。
 エクスポート設定画面では、以下のように設定を行います。

・・「エクスポート」の下の窓に、対象のデータベース名が表示されていることを確認

・・「全選択」をクリック

・・エクスポート先のファイルの種類:SQLを選択(デフォルト)

・・「構造」にチェック(デフォルト)

・・「「DROP TABLE」を追加」にチェック

・・「「IF NOT EXISTS」を追加」にチェック

・・「「AUTO_INCREMENT」値を追加」にチェック(デフォルト)

・・「逆クオートでテーブル名やフィールド名を囲む」にチェック(デフォルト)

・・「データ」にチェック(デフォルト)

・・「バイナリフィールドは 16 進数を使用する」にチェック(デフォルト)

・・エクスポート形式:INSERTを選択(デフォルト)

・・「ファイルで保存する」にチェック

・・圧縮:無しを選択(デフォルト)

・・エンコーディング:nonを選択(デフォルト)

 全く新しいところにテーブルを作りにいく場合はいいのですが、そうでない場合は「「DROP TABLE」を追加」「「IF NOT EXISTS」を追加」を指定しておかないと、テーブルが既に存在するのに、同じテーブルを作れるかっ!?と文句を言われて、処理がこけてしまいます。

 設定が終りましたら、「実行」ボタンをクリックしましょう。

 自分のPCのディスクなりに、出来たSQLファイルを保存します。出来ればこれは複数箇所に保存しておくのが、リスク分散のためにベターですね。

 出来上がったSQLファイルの中身をなんらかのエディターで編集します。
 なぜかというと、このままではCREATE DATABASE文が入っているため、そのまま実行すると、既にその名前のデータベースがあるのに、同じデータベースを作れるかっ!?と文句を言われて、処理がこけてしまうからです。
 エクスポート設定で「「DROP DATABASE」を追加」にチェックを入れればいいのかもしれませんが、少なくともさくらインターネットではデータベースは一人一個、名前まで決めて割り当てられています。ということはこのデータベースの生殺与奪の権は、あまりユーザ側にあるとは思えない。うかつに手を出さない方がよいという判断です。
 というわけで、SQLファイルから次の一行を削除します。

 CREATE DATABASE データベース名;

 これでデータベースのバックアップ、エクスポートが終了です。

3)Mediawikiファイルのバックアップをとる

 これは簡単です。
 telnetでサーバに接続して、Mediawikiを展開したwikicookrecipeというディレクトリのある場所に移動します。

 tar -cvzf wikicookrecipe.tar.gz wikicookrecipe/

 これでMediawikiのファイル全部を固めて圧縮したファイルwikicookrecipe.tar.gzが出来ますから、ftpなりで自分のPCにダウンロードしておきましょう。

5)データベース・バックアップを、新しいデータベースにインポートする

 2)と同様に、phpMyAdminにログインします。左メニューの絵文字リンク五つのうち、真ん中のクエリーウインドウをクリックします。すると、別ウインドウでクエリーウインドウが表示されます。
 クエリーウインドウのインポートファイルタグをクリックします。
 エンコーディング:nonを選択し、2)で作成したSQLファイルを指定し、実行ボタンを押します。
 これでphpMyAdmin画面の方にエラー表示が出なければ、インポートは成功したということになります。

6)Mediawikiファイル・バックアップを、新しいサーバにインポートする

 現在のwikicookrecipeディレクトリを別名にします。
 3)で作ったwikicookrecipe.tar.gzファイルをftpなどでアップロードして、解凍展開します。

 gzip -d wikicookrecipe.tar.gz
 tar -xvf wikicookrecipe.tar

これでデータベース、Mediawikiファイルが再構築されたことになります。
実際には、2)3)と5)6)の間で、今まで編集したページ内容を削除したり、サイドバーの設定をデフォルト値に戻したりしました。そして6)が終った後で、サイトにアクセスし、削除前の状態がちゃんと構築されているのを確認。よしっ!
(いいのかな、こんなあばうとな確認で?)

決して現状はすんなりいったわけではなく、SQLファイルの中を手作業でちまちまと直すはめになったことも。おかげでSQLファイルってどんなのか、なんとなく感じが分かりました。



posted by WCR管理人 at 16:08 | Comment(0) | TrackBack(0) | Mediawiki
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。