JavaScript勉強会

JavaScriptの学習日記

XAMPPのMySQLでテーブルをリストアする方法

XAMPPのMySQLの使い方をメモ。

WebサーバーのMySQLをバックアップして、XAMPPのMySQLにリストアしたいです。

 

データベースを丸ごとバックアップ&リストアする方法は以下にまとめました。

jsstudy.hatenablog.com

 

データ量が大きくて一発でリストアするのがキツイ場合は、テーブル毎に分割してリストアしてみます。

今回は、テーブルをリストアする方法をメモ。

 

テーブルのバックアップ

(1) LinuxサーバーにSSHでログインする。

 

(2) MySQLのテーブルをバックアップする。

・「db_name」というデータベース

・「table_name」というテーブル

・「user_name」というユーザー

・「/home/your_directory/」というディレクトリーに保存する

・「table_name.dump」というファイル名で保存する

という場合、以下のコマンドを打つ。

mysqldump -u user_name -p -t db_name table_name > /home/your_directory/table_name.dump

user_nameのパスワードを入力して、エンターキーを押す。

 

(説明)

・「-t」オプションを付けると、テーブルをDROP、CREATEするSQL文は省略されます。

=XAMPPのMySQLでは、すでに「db_name」というデータベースがあり、その中に「table_name」という空のテーブルも用意されていて、データだけ流し込みたい場合を想定してます。

=ダンプファイルのSQLは、INSERT文の塊になります。

 

(参考)

qiita.com

 

「/home/your_directory/」フォルダーの中に「table_name.dump」というファイルが出来ていればバックアップOK。

 

(テーブルのデータが大き過ぎて、テーブル丸ごとのバックアップがキツイ場合、エクスポートする行数を指定して、テーブルを分割してエクスポートする等の対処が必要でしょう。)

 

(3) ダンプファイルをダウンロード

ローカルPC(Windows)に上記で作成したダンプファイルをダウンロードする。

 

テーブルのリストア

ダウンロードしたダンプファイルを使って、XAMPPのMySQLでテーブルを復元してみます。

 

(4) XAMPPを起動して、MySQLを起動させておく。

(以下の説明で、パスは適宜自分の環境に合わせて読み替えてください)

・XAMPPは、Cドライブの直下にインストールしたものとする。

・「mysql.exe」や「mysqldump.exe」は、「C:\xampp\mysql\bin」の中にあるものとする。

・「table_name.dump」は「C:\backup」の中にコピーしたとする。

 

(5) XAMPPのphpMyAdminで「db_name」というデータベースを用意しておく。

 

(6) XAMPPのphpMyAdminで「db_name」の中に「table_name」というテーブルを用意しておく。

 

(7) バッチファイルを作る。

操作を間違えるといけないので、あらかじめコマンドをバッチファイルに書いておく。

・Cドライブの「backup」フォルダの中に「test.bat」というファイルを作成する。

・test.batをテキストエディタで開いて、以下の内容をコピペする。

 

c:
cd c:\xampp\mysql\bin
mysql -u root -p -h localhost db_name < c:\backup\table_name.dump
pause

(説明)

・XAMPPのMySQLのユーザーは「root」を使用している。→別のユーザー名でもOK

・「root」のパスワードが「1234」だった場合、-pの後に続けて書く。

(「-p1234」みたいに「mysql -u root -p1234 ~~~」と書く。)

 

(参考)

www.risewill.co.jp

 

(8) バッチファイルを実行する。

・test.batをダブルクリックする。

・以下のような画面が出たら、エンターキーを押す。

 

f:id:jsstudy:20181010183225p:plain

 

・実行が終わると「続行するには何かキーを押してください」というメッセージが表示されるので、エンターキーなどを適当に押しておけばOK。

 

phpMyAdminでテーブルの中身を見て、復元されていることを確認しておきます。

これでテーブル毎のリストア(復元)ができました。

 

max_allowed_packetサイズの変更

データをインポートするとき、

ERROR 2006 (HY000) at line ***: MySQL server has gone away

というようなエラーメッセージが出たら、MySQLの設定を変更してみます。

 

(参考)

漢(オトコ)のコンピュータ道: 限界までMySQLを使い尽くす!!

SQL文の最大長

MySQLサーバーが実行出来るSQL文の最大長は、max_allowed_packetシステム変数で表される。max_allowed_packetの最大値は1GBである。max_allowed_packetの値はセッションごとにも設定可能なので、デフォルトではそこそこの値(16MBなど)に設定しておいて、必要に応じて大きな対を使うと良いだろう。

 

MySQLトラブルシューティング - ERROR 2006 (HY000) at line ***: MySQL server has gone away - 長生村本郷Engineers'Blog

対策

- mysqlコマンドラインから設定 (一時的)

- my.cnf に設定 (恒久的)

 

my.cnf に [mysqld] に属する様に設定します。

10MBに設定してみます。

[mysqld]
max_allowed_packet=10MB

以上設定して再起動で設定反映完了です。

 

XAMPPの場合、C:\xampp\mysql\bin\my.ini に max_allowed_packet の設定がありました。

この数字を適当に大きくして、MySQLを再起動すればOKです。

これでデータの大きいSQL文を実行してもエラーが出なくなりました。

 

実行中の確認

※インポートの実行にすごい時間がかかって、処理に失敗していないか?心配なときはWindowsタスクマネージャーで「プロセス」→「mysqld.exe」の動きを見てみます。

=インポートの実行中は、mysqld.exeがモリモリ動いて、止まっていないことが確認できます。

 

 

MariaDB&MySQL全機能バイブル

MariaDB&MySQL全機能バイブル