データベース(DB)のバックアップは重要、ということで、mysqldumpにより、定時バックアップをしていることも多いだろう。
バックアップの設定は、Debianの場合
/var/spool/cron/crontabs
にある
root
というファイル。
正し、インストール直後のcrontabsには何もないので作ること。
例えば、test_001というデータベースがあり、これを毎日23時にバックアップする場合、
00 23 * * * /usr/bin/mysqldump -uユーザ名 -pパスワード test_001 | gzip > /home/ユーザ名/backup/test_001_db_`date +\%Y-\%m-\%d-\%H\%M`.sql.gz
とし、Debianを再起動。
すると、毎日23時に、
/home/ユーザ名/backup/
に、
test_001_db_20XX-XX-XX-2300.sql.gz
というファイル名で保存される。
データベースの容量が大きい場合を想定し、.gzに圧縮して保存する。
毎日バックアップされるので、積み重なると無視できない。
データベース(sql)ファイルはテキストファイルなので、圧縮することによる容量減の効果が非常に大きい。
例:圧縮前:11MB→圧縮後:2.2MB
.gzファイルの解凍は、WindowsではLhaplus等で可能。
これで得られたsqlファイルからデータベースを復元する場合、
先に同名のTableを作成しておき、その上でインポートしなければならない。
そうでないと、
#1046 – No Database Selected
と表示され、インポートできない。
同名のTableがない場合は、インポートにより自動で作成はしてくれない。
バックアップしても復元できないと意味がないので、正式運用前に、バックアップだけでなく復元も含め、動作確認をしておくこと。
なお、phpMyAdminからインポートする場合、容量が大きすぎてインポートできない場合は、
phpMyAdminでのインポートファイルの最長を変更(Debian)
を参照し、上限値を上げておくこと。
なお、バックアップしたファイルをLinuxのシステムと同じドライブに入れておくと、ドライブが逝った場合に面倒なので、そのドライブ「外」にも保存するようにすべきだろう。
関連:mysqldump ― データベースバックアッププログラム
コンピュータに於ける「dump(ダンプ)」は「ファイルやメモリの内容を記録、あるいは表示する」という意味であるが、今回の「dump」は「バックアップ」という意味で捉えて問題ない。