MySQLのバックアップ

30 7月

MySQLのデータをバックアップしたいのですが,phpmyadmin では上手く行きません。どこかでエラーが生じているようで,妙に小さなバックアップファイルができたりします。エラーを表示するわけでもなく普通に終了してダウンロードできるので失敗したことにも気づかない。

そこで,直接コマンドを打つことにしました。まず,全体のバックアップをとる場合です。


mysqldump --max_allowed_packet=1G -u root -p -x --all-databases > localhost.sql

 max_allowed_packet=1G がどんな意味なのか分かりませんが,ubuntu の初期設定は 16M でした。-x はデーターベースのロックです。

MySQL全体ではなくて,ひとつのデーターベースをバックアップするには下記のようにします。


mysqldump --max_allowed_packet=1G -u root -p -x databasename > databasename.sql

max_allowed_packet の初期値の修正は  /etc/mysql/my.cnf を編集します。その後mysqlの再起動。


sudo /etc/init.d/mysql restart

変更の確認はmysqlにログイン(mysql -u root -p)したあと下記。


show variables like 'max_allowed_packet';

 

ssh で繋いで,上記のバックアップを実施しすれば良いかと思います。そして(必要があれば)そのファイルを他のコンピュータで受け取ります。scp を使う場合


scp username@sitename:~/localhost.sql .

 

どこか,他のコンピュータで復元でもしてみないと,上手くいったかどうか分かりません。復元するコンピューターでも, max_allowed_packet の設定が必要です。何かバックアップファイルを検証する方法がないのでしょうか?

phpmyadmin でバックアップしたときとはファイルサイズが異なります。非常に小さくなるファイルがあります。なんとなくですが,バイナリーデータを含んだバックアップが非常に小さくなる気がします。