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