障害発生時のためにバックアップを取ろう

■WEBコンテンツバックアップ

障害対策サーバからsftpする

sftp -oPort=sshポート番号 webサーバのIP

パスワードを聞かれるので、入力。

sftp>

となればOK.

webサーバ事前作業として、

コンテンツをtarで圧縮。

シェルを組んだ。

#!/bin/sh

TargetDir=”/home/”
BackupDir=”/root/backup/”

cd $TargetDir

TarFileName=`date +%Y%m%d`.tar.gz

tar zvcf $TarFileName ./*

mv -f $TarFileName $BackupDir

で、圧縮。

これをcronで実行させれば定期的にバックアップできる。

あとは、世代管理のルールを考えればいいと思っている。(3世代まで保存。あとは削除するスクリプト作成中)

■メール情報バックアップ(postfixadmin)

# su – postgres

$ cd /var/lib/pgsql/dump

$ pg_dump postfix >  ./バックアップの日付_bk_postfixadmin

■クライアント提供用DBバックアップ(Mysql,Postgresql)

1Mysql

# mysqldump –all-databases -uroot -pパスワード > 090603_bk_mysql(例)

2,Postgresql

# su – postgres

$ pg_dumpall -c > ./090603_bk(例)

■それぞれ反映。

(1)mysql

一端、既にあるデータベースを削除する。

mysql コマンドでデータベース、ユーザアカウントを全削除する方法がわかんなかった・・・・

ので、とりあえずphpMyAdminで、root権限アカウント以外を削除。

んで、反映させる。

■反映

1)WEBコンテンツ

先ほどのtar圧縮したファイルを/home/以下ディレクトリに、パーミッションを保持したまま解凍。

# tar -zxvf バックアップファイル -C /home/

で、解凍。

2)mysql

# mysql -u root -pパスワード < バックアップファイル

で、ユーザアカウントもデータベースも反映できた。

それで、サービスの再起動。

# service mysqld restart

とりあえずこれで、WEBからmysqlに接続できたのでOKとしておこう.

3)postgres

# su – postgres

$ psql  postgres(存在しているDB名ならなんでもよい) < バックアップファイル

著者:bouya Imamura