みなさん、こんにちは!
ブリュの公式ブログ.netにお越しいただきまして、ありがとうございます。
このサイトでは、ITについて特化したサイトを運営しています。
今回はSSH接続からデータベースのバックアップを行う方法について紹介します。
普通、データベースのバックアップを行う際にはPHPMyAdminを使い、ブラウザ経由でアクセスを行うことが一般的ですが、SSHで行うほうがより確実にバックアップができます。
目次
PHPMyAdminが使えない・エラーが出るときにお勧め
PHPMyAdminは、エラーが発生し、利用不可能になる場合があります。
例えば、
- ブログが巨大化しておりデータベースが大きくなっている場合
- PHPMyAdminがそもそも遅い場合
ブログが巨大化することによってデータベースが巨大すぎてエクスポートできない例はまれでしょう。
よほど巨大なブログであればあり得ますが、そもそもデータベース情報はテキスト文章で構成されており、画像データなどを含まないので容量としては非常に小さいです。
一番多いのはPHPMyAdminが遅くてエラーが出るときです。
特に、PHPMyAdminの動きがモッサリと動いている場合、ほぼPHPMyAdminが遅いのが原因とみて問題はないでしょう。
PHPを動かすサーバーが遅いのか、あるいはデータベース自体が遅いのかはわかりませんが、まれにエラーで停止したり、動作が不安定な場合、そもそもちゃんとエクスポートできてるの?と不安になる場合があります。
こちらがエラーの一例です。
エラーメッセージは、
Your export is incomplete, due to a low execution time limit at the PHP level.
→PHPレベルでの実行時間が短いため、エクスポートは不完全です。
となっています。
エラー文にはほかにも種類があると思いますが、これらのエラーの原因はすべて同じで、PHPのタイムアウトになります。
要は時間がかかりすぎってことです。
- データベースが巨大
- PHPMyAdminが遅い
このどちらの場合であっても、PHPの連続実行時間に記された時間内に処理を完了できなければ、時間制限でエラーとなります。
私自身も、実際にヘテムル からエックスサーバー に移転する際に、ヘテムルのPHPMyAdminでエラーが発生しました。
そこで、SSHからのデータベースのエクスポートを行ったのですが、慣れてしまえばSSHのほうがいいですね。
キーボード操作だけで完結するので、マウスを使う場合に比べて操作ミスが少ないのは大きなメリットです。
SSH接続を行う方法
SSHによってデータベースのエクスポートを行うには、SSH接続を行う必要があります。
SSHの接続にはTeraTermが必須
SSH接続を行うには、普段利用しているであろうFTPソフトでは行えません。
専用のソフトであるTeraTermをインストールする方法があります。
TeraTermのダウンロードはこちらから行えます(窓の壮へリンクします)。
※TeraTermはポータブル版ではない普通のほうをダウンロードしてください。
レンタルサーバー各社のSSH設定方法
SSH接続の方法はレンタルサーバー会社によって異なるので、お使いのレンタルサーバー会社のマニュアルをご覧ください。
ここでは代表的なレンタルサーバーのSSH設置マニュアルへのリンクを掲載します(読み方の50音順)。
ここまでが、SSH接続を行う際の下準備となります。
FTPソフトと比較しながら操作するとわかりやすい
はじめてSSHを行う場合は、真黒な画面にコマンドを入力していく操作が分からないと思います。
そこで、SSH接続を行っているTeraTermとは別にFTPソフトでサーバーに接続してください。
SSHはLinuxの遠隔操作を行うものであり、自身のディレクトリの位置が重要になります。
SSHでコマンドを入力し操作を行う際には、FTPソフトからの情報と合わせて、サーバー内の現在地を常に確認しながら行ってください。
SSHで結果を保存したいディレクトリへ移動する
SSH接続をしたら、まずは自分自身の所在地を調べます。
TearTermの画面上に、**********$という風に表示されていると思います。
***の部分にはサーバー固有の文字が入っており、ユーザーアカウント名なども含まれているのでここでは伏字にしています。
1 |
[********** ~]$ |
コマンドは、この$以降に入力します。
まずは、「pwd」と入力してください。
1 |
[********** ~]$pwd |
すると、サーバー内における現在位置が絶対パスで表示されます。
例えばこんな感じで。
1 2 |
[********** ~]$pwd /home/user/ |
おそらくこの状態でユーザー領域の最上位階層にいるはずです。
ちょうどFTP接続した際の一番上階層になる部分です。
念のため、「ls」と入力してみてください。
1 |
[********** ~]$ls |
すると、ディレクトリ内のファイルとフォルダの一覧が表示されます。
※出力結果は一例です。
1 2 |
[********** ~]$ls public_html secure secret.dat ... |
これらのファイル名やディレクトリ名が、FTPソフトに表示される情報と一致しているかを確認して下さい。
なお、ファイル名が「.」から始まる隠しファイル(例:「.htaccess」ファイル)などはSSHでは表示されません。
データベースのエクスポート結果を保存したいディレクトリまで移動する
SSHにおける現在地は確認できましたでしょうか?
次に、データベースのエクスポート結果を保存したいディレクトリまで移動します。
現在のディレクトリでOKな場合には、このディレクトリ移動の操作は行わなくて大丈夫です。
「cd ディレクトリ名」でディレクトリ内部に移動します。
下のコマンドは「public_html」ディレクトリ内部に入ります。
1 2 3 4 5 |
[********** ~]$pwd /*pwdで現在地を確認します。*/ /home/user/ /*現在地が確認できました。*/ [********** ~]$cd public_html /*cdでpublic_htmlの中に移動します*/ [********** public_html]$pwd /*pwdで現在位置を確認します*/ /home/user/public_html/ /*public_html内部に移動できました*/ |
「cd ../」で一つ上階層へ移動します。
1 2 3 4 5 |
[********** public_html]&pwd /*pwdで現在位置を確認します*/ /home/user/public_html/ /*現在位置が出力されます*/ [********** public_html]$cd ../ /*一つ上階層(user)に移動します*/ [********** ~]$pwd /*pwdで現在位置を取得します*/ /home/user/ /*上階層に移動できました*/ |
これで、データベースのエクスポート結果を保存したいディレクトリに移動できました。
SSHでデータベースをエクスポート(dump)するコマンド
いよいよですが、SSHでデータベースをエクスポートするコマンドを入力します。
長いですが、間違えないように入力してください。
1 |
[********** ~]$mysqldump --singletransaction -u データベースのユーザー名 -pパスワード -h データベースのホスト名 データベース名 > 結果保存ファイル名.sql |
上記コマンドの注意点は、「-p」と「パスワード」の間にはスペースがないことです。
例えば、次の状況だったとしましょう。
データベースのユーザー名 | user |
データベース名 | name |
データベースのパスワード | password |
データベースのホスト名 | db.example.lan |
保存ファイル名 | sample.sql |
この時のコマンドは次のようになります。
1 |
[********** ~]$mysqldump --singletransaction -u name -ppassword -h db.example.lan name > sample.sql |
間違いなく入力出来たら、Enterキーを押します。
何も表示されなければエクスポートは完了しています。
FTP接続で確認し、ダウンロードしてください。
もしもエラーが表示された場合には、コマンドの打ち間違いがあるか、データベースの接続情報が間違っています。
再度コマンドの確認、およびwp-config.phpからデータベース接続情報を確認して、再度コマンド全文を入力してください。
すべての処理が終わったら、exitコマンドを入力します。
1 |
[********** ~]$exit |
これでログアウトができます。
※TeraTermを閉じることでも終了はできるのですが、サーバーにとっては正常なログアウトではないのであまり都合がよくないみたいです。
※とはいっても、そこまで神経質になる問題でもないのですが。
まとめ
ここまで、SSHを使ってデータベースをエクスポートする方法について紹介してきました。
データベースが巨大な場合や、PHPMyAdminが重くてエラーが起こる場合にあ試してみてください。
この方法を知って以降、私自身はSSHを使ってデータベースのエクスポートを行い、PHPMyAdminはエクスポートに関しては利用していないようにしています。
やはり、マウス操作がないことによる誤クリックの防止や、万が一停止した際のデータ欠損の可能性がない点において、安心感が大きいです。
SSHは敷居が高いと思われがちですが、行う操作を限定的にしたらそこまで難しいものでもありません。
ぜひ、テスト用のWordPressサイトなどでも試してみて、徐々に慣れていってください。
以上、SSHでデータベースのエクスポートを行う方法について、参考になれば幸いです。