MySQLデータ バックアップ (ファイル群のコピーによるバックアップ)

種類

MySQLでバックアップ方法は、大きく分けて2種類ある。
1.テーブル単位のバックアップ
2.DBファイル群のバックアップ
3.mysqldumpによるダンプ/リストア

手順

ファイル群のバックアップ

リストアの仕方はこちら

1-1) MySQLサーバーを停止
# /etc/init.d/mysqld stop

1-2) データベースディレクトリ以下のデータベースをアーカイブ化
・移動元のデータベースディレクトリに移動する
(環境によってPATHは違います。Fedora9の環境下を前提で書いてます。)

今回は、xoops本体のVersionUpも兼ねてxoopsとmysqlのデータベースをバックアップした。
圧縮しなくても、 cp -apR * /home/hoge/mysqlBackupなどでも可能

# cd /var/lib/mysql
# ls -la
合計 20560
drwxr-xr-x  6 mysql mysql     4096 2009-08-22 14:12 .
drwxr-xr-x 49 root  root      4096 2009-03-20 14:17 ..
-rw-rw----  1 mysql mysql  5242880 2009-08-22 14:12 ib_logfile0
-rw-rw----  1 mysql mysql  5242880 2006-09-27 05:33 ib_logfile1
-rw-rw----  1 mysql mysql 10485760 2009-07-15 19:07 ibdata1
drwx------  2 mysql mysql     4096 2005-05-12 04:10 mysql
srwxrwxrwx  1 mysql mysql        0 2009-08-22 14:12 mysql.sock
drwx------  2 mysql mysql     4096 2009-05-20 20:34 hoge
drwx------  2 mysql mysql     4096 2008-04-04 23:45 xoops
drwx------  2 mysql mysql    20480 2005-09-08 04:05 zencart
	  

1-3)データーベース "mysql"と"xoops"の2つをアーカイブ化します。
InnoDB型のテーブルが存在する場合は、
InnoDB型のテーブルファイルログファイルもアーカイブ化する。
# tar cvf - mysql xoops | gzip -9 > backup_xoops20090827.tgz
# tar cvf - ib* | gzip -9 > backup_innodb20090827.tgz
	
通常は、同一ファイルに格納されているが、システム変数を個別に設定した場合は、
以下のシステム変数を確認する必要がある。

innodb_data_home_dir/innodb_data_file_path で設定されてた ib_logfileファイル
innodb_log_group_home_dir で設定されたディレクトリィ以下の ibdata1ファイル

補足

バックアップしたファイルのリストア
※ ファイル群のリストアは、退避したファイルを展開してそのまま、/var/lib/mysql
    に上書きしても問題ない(実際に試した)

が・・解説書を読むと、念のためであろうか、退避したディレクトリィに環境PATHを設定して、
そこで運用する方法だけが記載されてたので、簡単に書いておく


1) InnoDB型テーブルの展開
2) システム変数の一致

vi /etc/my.cnf
Innodb_data_home_dir     = /home/hoge/mysqlBackup
Innodb_data_file_path    = /home/hoge/mysqlBackup
Innodb_log_group_home_dir= /home/hoge/mysqlBackup
Innodb_log_arch_dir      = /home/hoge/mysqlBackup

# アーカイブ展開
tar xvfz backup_xoops20090827.tgz
tar xvfz backup_innodb20090827.tgz

/etc/init.d/mysql restart
おわり・・・マンドクサ(´A`)
普通に上書きコピーでもOKだと思います・・・。
関連商品