#norelated

#contents

[[MySQL]]

* MySQLのバックアップとリストア [#t9fe2df0]
phpMyAdminだと、大きいデータを扱えない場合があるので、MySQLのコマンドで行う。

* mysqldumpコマンド [#h5774757]

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

- mysqldumpコマンドの基本的な使い方
-- [[mysqldumpでバックアップ&復元 - phpspot>http://phpspot.net/php/pgmysqldump%E3%81%A7%E3%83%90%E3%83%83%E3%82%AF%E3%82%A2%E3%83%83%E3%83%97%EF%BC%86%E5%BE%A9%E5%85%83.html]]
-- [[MySQLのバックアップ/復元(ダンプ/インポート/dump/import) 基本コマンド メモ - Qiita>http://qiita.com/morizyun/items/f45dc580bac0ebba79ab]]

- mysqldumpコマンドの詳細なオプション
-- [[MySQL :: MySQL 5.6 リファレンスマニュアル :: 4.5.4 mysqldump — データベースバックアッププログラム>https://dev.mysql.com/doc/refman/5.6/ja/mysqldump.html]]

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

- [[MySQLデータベース自動バックアップ運用(mysqldump) - CentOSで自宅サーバー構築>https://centossrv.com/mysql-backup.shtml]]


* 作業例 [#x0b64f5f]

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

(参考)[[MySQL のデータベースのバックアップを行う - make world>http://d.hatena.ne.jp/littlebuddha/20090325/1237951258]]

- (1) SSHでデータベースサーバーにログイン
** (1) SSHでデータベースサーバーにログイン [#ncaad489]

→ [[SSHクライアント]]

- (2) ホームディレクトリに移動
** (2) ホームディレクトリに移動 [#bd3bdda8]

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

- (3) バックアップ用のディレクトリを作成
** (3) バックアップ用のディレクトリを作成 [#n6516895]

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

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

- (4) データをダウンロード
** (4) データをダウンロード [#ae03add5]

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


- (5) MySQLにインポートする。
** (5) MySQLにインポートする。 [#jfb61688]

(例)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」のデータが反映されているはず。

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

 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で確認 [#k5b8c4ec]

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


トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS