MySQL

MySQLのバックアップとリストア

phpMyAdminだと、大きいデータを扱えない場合があるので、MySQLのコマンドで行う。

mysqldumpコマンド

MySQLには、「mysqldump」というバックアップ用のコマンド(命令)が用意されている。

シェルスクリプトで自動実行

手作業だと入力ミスもあるので、シェルスクリプトで自動的にバックアップするようにする。

作業例

WebサーバーのMySQLデータをバックアップして、ローカルPCのMySQL上でリストアしてみる。
(作業内容を理解するために、とりあえず手動で。)

(参考)MySQL のデータベースのバックアップを行う - make world

(1) SSHでデータベースサーバーにログイン

SSHクライアント

(2) ホームディレクトリに移動

$ pwd (現在のディレクトリを確認。ログイン直後はホームディレクトリ)
/home/username/ (ホームディレクトリは「$HOME」という変数で表せる=後で使う)

(3) バックアップ用のディレクトリを作成

$ mkdir mysql
$ cd mysql
$ mysqldump -u username -p -x --databases yourdatabase > $HOME/mysql/yourdatabase.sql
Password: (MySQLに登録しているusernameユーザーのパスワードを入力)

ここまでの操作で、/home/username/mysql/ に「yourdatabase.sql」というダンプファイル(バックアップデータ)が作成されているはず。

(4) データをダウンロード

WinSCP等のSSHクライアントで、サーバー上のダンプファイルをローカルPCにダウンロードする。
保存する場所は、どこでも良い。
(後で使う「mysql」コマンドのパスが通っている場所=コマンドが使える場所なら、どこでもOK?)

(5) MySQLにインポートする。

(例)Windowsに「Bitnami」(LAMPスタック)をインストールして、BitnamiでMySQLを動かしている場合

C:\Bitnami\wampstack\mysql\data_backup

というフォルダを作成して、その中にダンプファイル「yourdatabase.sql」を置く。

コマンドプロンプトを起動して、「data_backup」フォルダに移動する。

C:\Bitnami\wampstack\mysql\data_backup>mysql -u username -p < yourdatabase.sql
Enter password: (ローカルPCのMySQLに登録しているusernameユーザーのパスワードを入力)

というコマンドを実行する。

ここまでの操作で、「yourdatabase.sql」のデータが反映されているはず。

エラー対策

他のデータベースを参照しているビュー等があった場合は、インポート時に何らかのエラーメッセージが出るかも?

ERROR 1146 (42S02) at line 345: Table 'some_database.some_table' doesn't exist

=「some_database.some_table」が無いから失敗した例。
これは、「yourdatabase」にある「some_view」が、「some_database」の「some_table」を参照する設定になっていて、「some_view」が復元できなかった、等という場合。
→先に「some_database」をインポートして、「some_table」が存在している状態にしておかなければならない。

(6) phpMyAdminで確認

ダンプファイルからデータをリストア(復元)したら、phpMyAdmin等でデータを確認してみる。
データが正常に復元されていればOK


トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2016-06-04 (土) 16:41:16