mysqlデータのバックアップとリストア

バックアップがある弧度でどれだけのプロジェクトが助けらたか。。。過去には痛い経験もある私ヨナハです。
とても単純ですが、とても重要な処理なので重宝してほしい処理です。

僕は、本番のデータをローカルの開発環境に持ってくるときによく使います。
phpMyAdmminとかで、本番から「エクスポート」して、開発環境に「インポート」という作業とおんなじです。
ですが、コマンドラインで行うと劇的に速いので、今回はコマンドで行うやり方を書きます。

データベースごとバックアップを取る

特定のデータベースのみのバックアップ

$ mysqldump -u root -p DB名 > dump_data.sql

ホスト名が「localhost」でない場合は、「-h ホスト名」を付けてあげる
$ mysqldump -u root -p -h ホスト名 DB名 > dump_data.sql

全てのデータベースをバックアップ

$ mysqldump -u root -x --all-databases > dump_all_database.sql

テーブルごとのバックアップ

$ mysqldump -u root -p DB名 users > table_data.dump

リストアでデータを反映する

データベースのリストア

$ mysql -u root -p DB名 < dump_data.sql 

テーブルのリストア

$ mysql -u root -p DB名 < table_data.sql 

Windows環境にあるMySQLにリストアする場合は、コマンドが聞かない場合などあると思いますので、コマンドでMySQLにログインした後に、リストアしたほうが楽かもしれないです。
MySQLにログイン後にリストア

$ mysql -uroot -p 
> USE DB名
> SOURCE dump_data.sql

おまけ:バックアップデータをローカルにダウンロードする

Windwos環境の人は、コマンドとかではなく「WinSCP」等のソフトからダウンロードしたほうがいいかもです。
MacだとデフォルトでUnixのコマンドが使えるので、コマンド一つでサーバからファイルをダウンロードすることが可能です。
リモート → ローカルへのダウンロード

# scp [ユーザ名]@[ホスト名]:[ファイル名] [ローカルパス(ダウンロード先)]
$ scp tanaka@123.123.123.123:/home/tanaka/dump_date.sql /Users/yonaha/Desktop/

ローカル → リモートへのアップロード

# scp [ローカルのファイル名] [ユーザ名]@[ホスト名]:[アップロード先のファイルパス]
$ scp local_data.zip tanaka名@123.123.123.123:/home/tanaka/upload_data.zip

こんな感じでメモ書きでした。