CentOS51でバックアップサーバ/(3)バックアップの更新

Last-modified: 2008-07-02 (水) 16:13:48 (5795d)

バックアップデータの更新

  • CentOSサーバを立ち上げてから程なく、以前のWhiteBOXサーバをバックアップ用サーバとして再構築した。その時点でのデータ移行も完了したことは、前回の記事のとおりである。
  • 5月にサーバが一度こけたようなので、バックアップサーバのデータ更新をしてみた。ところが、OpenPNEのデータベース更新がうまく行かないと言う問題が起きた。
  • これは焦った(^^;) 一週間ほど悶々と悩んだが、一応解決したのでその記録などを整理しておいた。(2008/6/11 記)

なぜか? メンテモードに! --- 更新時の問題点

  • バックアップサーバ構築に伴うデータ移行方法は、前記事のとおりであるが、データ更新もこの調子でやれば問題ないと思った。
  • ただ、移行の際もデータサイズの関係で、WorpdpressとOpenPNEでは方法が異なっていた。
    アプリツールbackup方法restore方法
    WordpressphpMyadminエクスポートインポート
    OpenPNEコマンドmysqldumpmysql<backファイル

  • 前者は、phpMyadminというツールを経由し、設定をそのつど画面で指定する作業なので結構面倒だが、後者はコマンドラインから一発で完了するものである。どう考えても後者が簡単なので、これに統一することにした。
  • で、今回の更新は、以下のように、root権限のコマンドラインで実行した。(写真などのコンテンツのコピーに関する説明は省略)
    [1]現サーバ側でデータをdump
    [root@kuraric5 www]# mysqldump -u root -pxxx wordpress > /home/eizo/wp_dump20080607
    [root@kuraric5 www]# mysqldump -u root -pxxx openpne > /home/eizo/openpne_dump20080607
    
    [2]WinSCPを使ってdumpデータをサーバ間でコピー
    
    [3]バックアップサーバ側でデータのrestore と再起動 
    [root@kuraric51 www]#  mysql -u root -pxxx openpne  < /home/eizo/openpne_dump20080607
    [root@kuraric51 www]#  mysql -u root -pxxx wordpress  < /home/eizo/wp_dump20080607
    [root@kuraric51 www]# /etc/rc.d/init.d/mysqld restart
  • 実際に起動してみると、Wordpressは問題なくアクセスできデータベースも更新されているのに、OpenPNEはアクセスできないという問題が発生した。ログイン画面の代わりに、こんなメッセージが出る。これには焦った(^^;)
      OP_error

  • OpenPNEには、いわゆる「メンテナンスモード」と言うのがあり、config.php内でフラグを立てておけば外部からのアクセスができない状態になる。この画面は、その案内が出ているわけ。
  • しかし、そんなモード設定はしていない。 データベース直接操作してみれば、ちゃんとデータは更新されている模様だ。

アクセスできないわけは??

  • そこからいろいろと試行錯誤が始まった。
  • WordpressとOpenPNEで挙動が異なることに注目して、バックアップサーバ側でリストアする際に、データベースを削除/drop、作成/createで作り直してみた。また、ユーザ登録の違いも気になったので、Wordpressと同じようにOpenPNEについても以下のようなユーザ登録をしてみた。
    mysql> grant all on *.* to openpne identified by 'kuraric';   ←ユーザ登録 ★
    mysql> flush privileges;
    mysql> create database `openpne` DEFAULT CHARACTER SET utf8; ← データベース作成
  • しかし、何をやってみても、結果は依然として同じ。
  • ハタ!と思いついて、OpenPNE側のconfig.phpで、ユーザ設定を管理者に変更してみた。管理者ならできないことはないんではないかと。。。
    [root@kuraric51 OpenPNE]# vi config.php
    =============================
    // DBサーバ設定
    $GLOBALS['_OPENPNE_DSN_LIST']['main'] = array(
    'dsn'  => array(
        'phptype'  => 'mysql',
        'username' => 'root',   // 本来は openpne -> MySQL管理者に変更 ★★
        'password' => 'xxx',    //本来は kuraric -> 管理者パスワードに変更 ★★
        'hostspec' => 'localhost',
        'database' => 'openpne',
        'new_link' => false,
        ),
    );
  • そしたら、難なく正規のSNSログイン画面が表示された。これで、見通しがついた!

ユーザ登録を変更

  • どうも、MySQLのユーザ登録方法に原因があるようだ。ネット検索してみると、GRANTでユーザ登録する際のアクセス権限の付与方法に問題があるようだ。MySQL・データベース講座_ユーザ権限の設定に以下のような記事があった。 grant_user.jpg

  • ユーザの後ろについているドメインが鍵だった。OpenPNEのconfig.phpの設定にも、以下の項目があり、これと対応して接続先をlocalhostに限定しているものと思われる。
        'hostspec' => 'localhost',
  • したがって、データベース openpneを作成する際に、以下のようにドメイン付きでユーザ登録を行ってみた。当然、config.phpは元に戻す。
    mysql> grant all on *.* to openpne@localhost identified by 'kuraric';   ←@localhost を追加★
    mysql> flush privileges;
    mysql> create database `openpne` DEFAULT CHARACTER SET utf8;
  • これで解決! 無事に、ログイン画面が表示された。それにしてもおかしいなぁ?? 最初のサーバ構築とデータ移行の時からできていなかったということか? 何か確認の仕方が間違っていたのかいな(^^;)
  • なお、Wordpressとユーザ登録方法が異なるのも気になるが、これは、アプリ側の内部的な作りの相違ということにしておこう。(セキュリティ対策が関係かなぁ..)

データ更新方法のまとめ

  • 今後の更新作業に備えて、対象ファイルと手順を総整理しておく。なお、コンテンツは対象DIRを細分化することで、容量が小さくなる。(少し長いが、このままコピペする作業用のメモなのであしからず^^)
  1. バックアップの対象ファイル
    【コンテンツ関係のファイル】
    (1) /var/www/html/
     ①wordpress/        画像データが含まれる
     ②wiki/           記事がすべて
     ③sgcouter/         アクセスカウンタ
     ④bbs16/          本文と画像データはここに
    (2) /var/www/cgi-bin/
     ①bbs16/          (不要かな?)
     ②bbs/            記事はここに
    (3)/var/www/
     ①OpenPNE         全体(public_html/ だけではだめみたい!)
     ②.htpasswd         ユーザ登録追加した場合
    【MySQLのデータベース】
     ①wordpress         kurasan-blogデータ
     ②openpne          SNSデータ
  2. 作業手順
    [1]現サーバ
    [root@kuraric5 ~]# mkdir /home/eizo/back20080611
    [root@kuraric5 ~]# cd /var/www/html/
    [root@kuraric5 html]# tar cvf /home/eizo/back20080611/wp.tar wordpress/
    [root@kuraric5 html]# tar cvf /home/eizo/back20080611/wiki.tar wiki/
    [root@kuraric5 html]# tar cvf /home/eizo/back20080611/sgc.tar sgcounter/
    [root@kuraric5 html]# tar cvf /home/eizo/back20080611/bbs16.tar bbs16/
    
    [root@kuraric5 html]# cd /var/www/cgi-bin/
    [root@kuraric5 cgi-bin]# tar cvf /home/eizo/back20080611/bbs16_cgi.tar bbs16/
    [root@kuraric5 cgi-bin]# tar cvf /home/eizo/back20080611/bbs_cgi.tar bbs/
    
    [root@kuraric5 html]# cd /var/www/
    [root@kuraric5 www]# tar cvf /home/eizo/back20080611/pw.tar .htpasswd
    [root@kuraric5 www]# tar cvf /home/eizo/back20080611/OP.tar OpenPNE/
    
    [root@kuraric5 ~]# mysqldump -u root -pxxx openpne > /home/eizo/back20080611/openpne_dump
    [root@kuraric5 ~]# mysqldump -u root -pxxx wordpress > /home/eizo/back20080611/wordpress_dump
    
    [root@kuraric5 ~]# ls -la /home/eizo/back20080611/
    合計 249400
    drwxrwxr-x 2 eizo eizo      4096  6月 11 14:19 .
    drwx------ 8 eizo eizo      4096  6月 11 13:38 ..
    -rw-rw-r-- 1 eizo eizo  31733760  6月 11 14:24 OP.tar
    -rw-rw-r-- 1 eizo eizo 127416320  6月 11 13:33 bbs16.tar
    -rw-rw-r-- 1 eizo eizo    112640  6月 11 14:08 bbs16_cgi.tar
    -rw-rw-r-- 1 eizo eizo   2273280  6月 11 14:08 bbs_cgi.tar
    -rw-rw-r-- 1 eizo eizo  17210523  6月 11 13:56 openpne_dump
    -rw-rw-r-- 1 eizo eizo     10240  6月 11 13:39 pw.tar
    -rw-rw-r-- 1 eizo eizo    143360  6月 11 13:32 sgc.tar
    -rw-rw-r-- 1 eizo eizo  10465280  6月 11 13:32 wiki.tar
    -rw-rw-r-- 1 eizo eizo    762034  6月 11 13:56 wordpress_dump
    -rw-rw-r-- 1 eizo eizo  58347520  6月 11 13:32 wp.tar
    
     [3]新サーバへ転送
    ・WinSCPを使って、フォルダーごとPC経由で新サーバへ転送する
    
    [4]新サーバで復元
    ・コンテンツ系ファイルは、上位のDIRでいったん現DIRを削除してから解凍する
    [root@kuraric51 ~]# cd /var/www/html/
    [root@kuraric51 html]# rm -rf wordpress/
    [root@kuraric51 html]# tar xvf /home/eizo/back20080611/wp.tar
    
    [root@kuraric51 html]# rm -rf wiki/
    [root@kuraric51 html]# tar xvf /home/eizo/back20080611/wiki.tar
    
    [root@kuraric51 html]# rm -rf sgcounter/
    [root@kuraric51 html]# tar xvf /home/eizo/back20080611/sgc.tar
    
    [root@kuraric51 html]# rm -rf bbs16/
    [root@kuraric51 html]# tar xvf /home/eizo/back20080611/bbs16.tar
    
    [root@kuraric51 cgi-bin]# cd /var/www/
    [root@kuraric51 www]# rm -f .htpasswd
    [root@kuraric51 www]# tar xvf /home/eizo/back20080611/pw.tar
    
    [root@kuraric51 www]# rm -rf OpenPNE/
    [root@kuraric51 www]# tar xvf /home/eizo/back20080611/OP.tar
    
    [root@kuraric51 www]# cd /var/www/cgi-bin/
    [root@kuraric51 cgi-bin]# rm -rf bbs16
    [root@kuraric51 cgi-bin]# tar xvf /home/eizo/back20080611/bbs16_cgi.tar
    
    [root@kuraric51 cgi-bin]# rm -rf bbs
    [root@kuraric51 cgi-bin]# tar xvf /home/eizo/back20080611/bbs_cgi.tar
    
    ・データベースは、そのまま上書き(あらためてのデータベース削除やユーザ登録は不要!)
    [root@kuraric51 www]# mysql -u root -piloveyoko openpne < /home/eizo/back20080611/openpne_dump
    [root@kuraric51 www]# mysql -u root -piloveyoko wordpress < /home/eizo/back20080611/wordpress_dump
    [root@kuraric51 www]# /etc/rc.d/init.d/mysqld restart

今後の課題はデータのバックアップ方法!

  • サーバ内部で定期的に自動保存する、あるいは、外部サーバへ自動的に転送する方法が、検討課題となる。

トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS   リンク元