やりたい事
mysqのデータベースをlをコマンドライン、もしくはシェルスクリプトでバックアップしたい。
ダンプファイルはgzipで圧縮して、ファイル名に日付をつけたい。
最終的には cronなどで自動実行させたい。
mysqldump基本形
mysqldump -u ユーザー名 -pパスワード DB名 > バックアップ先ファイル名
パスワードが丸見えなのは気分的に良くないので別ファイルで管理する。
mysqlcon.cnf というファイルを作成し以下の内容を記述する。
[client] user = ユーザー名 password = パスワードをここに記述 host = localhost
一応外部から見られないように
chmod 600 mysqlcon.cnf
としておく。
mysqldumpでユーザ名とパスワードを別ファイルにする
ユーザ名、パスワードを記述していた部分は以下の通り置き換えることができる。
mysqlcon.cnfが同一フォルダにあっては意味なないので、最終的には別の場所に移動する。
mysqldump--defaults-extra-file=mysqlcon.cnf DB名 > バックアップ先ファイル名
mysqldumpの出力を圧縮し、日付のファイル名を付ける
–defaults-extra-fileで先ほど作った接続情報を読み込むことができる。
mysqldump --defaults-extra-file=mysqlcon.cnf DB名 | gzip > mysql_DB名.`date +%Y%m%d`
.dump.gz
日時までつけたいときはdateの部分を以下のようにする。
`date +%Y%m%d%H%M`
リストア
mysqldumpで出力したダンプファイルはただのSQL分の羅列なので、
mysql -u ユーザー名 -p < ダンプしたバックアップファイル名
バックアップしたファイルが圧縮されているのであれば
zcat ダンプしたバックアップファイル名.dumpl.gz | mysql -u ユーザー名 -p DB名
コメント