今回はMysqlのバックアップについて書きたいと思います。
Mysqlにはバックアップコマンドがあります。
「mysqldump」コマンドを使用してdumpする
◇全データベースをバックアップ
mysqldump -uroot -p –all-databases > sql.dmp
◇特定のデータベースをバックアップ
mysqldump -uroot -p [dbname] > dbname.dmp
◇ダンプファイルからリストア
mysql -uroot -p < sql.dmp
◇特定のデータベースのリストア
mysql -uroot -p [dbname] < dbname.dmp
【オプション】
-u
ユーザー
-p
パスワード有
–all-databases
全データベース
-t
データのみ
-d
テーブル構造のみ
–opt
dumpファイルにdrop tableが付いている。dump前に全テーブルにlock tableを行う
–skip-lock-tables
dump時にロックを行わない
–lock-all-tables
dump時にすべてのテーブルをロックする
ほとんどの場合は上記dump方法で事済むわけですが、
データベースの容量が本当に大きい場合は次の手法が有効です。(MyISAMの場合のみ)
データー領域を丸ごとtarで圧縮してdumpする
1.DBの保存場所をそのままtarで圧縮
※環境によってDB保存先は異なります。my.cnfから保存ディレクトリを探して下さい。
tar cvzf /home/[username]/dump.tar /usr/local/mysql/var/[dbname]
2. リストアしたいMysqlにてcreate databaseを行う
create database [dbname];
3. 「2」で作成したデータベースの保存先に先ほど圧縮したファイルを展開する
cp /home/[username]/dump.tar /usr/local/mysql/var/[dbname]/
cd /usr/local/mysql/var/[dbname]
tar zxf [dbname]
mysql -uroot -p
use [dbname]
show tables;
4. use [dbname] でDBの切り替えが行えない場合は、エラーログを参照します
テーブルが壊れていると出ている場合は、「repair table」を行ってください。