ホーム > Linux > MySQL等のデータバックアップ方法

2009年04月13日(月曜日) 10時02分

※実行前にテスト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

設定ファイルを戻したい場合は、解凍後に移動とかしてください。

めっちゃ適当な記事になりました(笑)
責任とれませんので自己責任で~(笑)

「MySQL等のデータバックアップ方法」 について、Twitterでつぶやく

関連記事

コメントを書く

メールアドレスは公開されません。
*」は必須項目です。

*
*

トラックバックを送る

トラックバック送信先URL
言及リンクが含まれないトラックバックは削除する場合があります。
MySQL等のデータバックアップ方法 from りでぃすとりびゅ~しょん