※実行前にテストDB等でテスト後に本番に適用してください。
※この記事内を参考にする場合は、自己責任でお願いします。
■MySQLのDBバックアップ
・個別でDBのバックアップを手動で実行するなら下記を実行
※「******」はMySQLのrootのパスワード
※「dbname」はMySQLのデータベース名
# mysqldump -u root -p****** dbname > dbname.sql
復元方法
# mysql -u root -p****** dbname < dbname.sql
・全DBのバックアップを手動で実行するなら下記を実行
# mysqldump -u root -p****** –all-database > alldb.sql
全DBの一括復元方法
# mysql -u root -p****** < alldb.sql
全バックアップファイルから個別のDBを選んで復元する方法
# mysql -u root -p****** dbname < alldb.sql
■DBや各種設定ファイルの自動バックアップ
手動は面倒なので自動バックアップさせましょう。
うちで使ってるのは下記です。
# cat /root/backup.sh
#!/bin/sh
today=`date +%Y%m%d`
oldday=`date --d "7day ago" +%Y%m%d`
target_dir="/sub_disk/backup"
db_dump="/usr/bin/mysqldump"
mysql="/usr/bin/mysql"
function mk_dir(){
if [ ! -e $target_dir/$today ]
then
mkdir -p $target_dir/$today/{DB,ETC}
fi
}
function etc_backup(){
etc_list=`ls /etc`
for i in $etc_list
do
tar cfz $target_dir/$today/ETC/$i.tar.gz /etc/$i
done
}
function db_backup(){
database_list=`$mysql -u root -p****** -e "show databases"|grep -v Database`
for i in $database_list
do
echo "db backup $i"
/usr/bin/mysqldump -u root -p****** $i>$target_dir/$today/DB/${i}.DB.sql
done
}
function rm_dir(){
if [ -e $target_dir/$oldday ]
then
rm -fr $target_dir/$oldday
fi
}
mk_dir
etc_backup
db_backup
rm_dir
7日間バックアップを保存し、古いものから削除させてます。
取得はDBを個別で吐き出させてるのと、/etc以下をフォルダorファイル単位で固めてバックアップしてます。
このスクリプトを使用する場合は、target_dir/db_dump/mysqlのパス変更と
MySQLのrootのパスワード(******)を2箇所修正してください。
target_dirが保存先となります。
後はbackup.shに実行権つけてcronで毎日任意の時間に実行させればOK。
・復元方法
DBの復元は・・・
# mysql -u root -p****** dbname < dbname.sql
設定ファイルを戻したい場合は、解凍後に移動とかしてください。

![[WM6.5] Spb Backup WM6.5対応版](http://www.redistribution.cc/blog/wp-content/uploads/2009/09/t01a_black.jpg)

![[VB.NETメモ] 端末の再起動コード](http://www.redistribution.cc/blog/wp-content/uploads/2010/02/10022400.jpg)