さくらインターネット


さくらインターネットの巨大MySQLデータをバックアップ・復元する



さくらインターネットは、Webサーバーとメールサーバーはひとつになっているが、MySQLサーバーは物理的に別のサーバーとなっている。
データベース管理画面(phpMyAdmin)からは、インポートできるファイルサイズが最長16MiBに制限されていて、これはコントロールパネルのphp.iniを書き換えても変更できない。(別のサーバー上でphpMyAdminが動いているため)
エクスポートは事実上ほぼ制限なくできるのだが、インポートが16MiBという制約のせいで、16MiBよりも大きなデータを復元しようとしてもここで詰んでしまう。

phpMyAdminを使わず、SSH接続でバックアップ・復元すればファイルサイズの制限なく行うことができる。
ただこの方法では、毎日バックアップしたい場合など手間がかかってしかたないので、バックアップ用のPHPファイルを作成してそれを定期的に開くという方法もある。

おまけ:以前、Webサーバー側にphpMyAdminをインストールして、php.iniのタイムアウトを長めに設定した上で、そこからインポートしてみたら16MiB以上のファイルもインポートできたことがある。


バックアップの手順
1. ターミナルソフトでさくらインターネットサーバーへSSH接続する(ここではTeraTeamで説明するが、TeraTeamの導入方法は割愛)
2. TeraTeamを起動する
3. 「TCP/IP」を選択する
4. 「ホスト」にさくらインターネットのドメインを入力する(例:「hogehoge.sakura.ne.jp」)
5. TCPポートは22、SSHバージョンはSSH2、プロトコルはUNSPECでOK
6. 「OK」をクリック
7. ユーザー名に「hogehoge.sakura.ne.jp」の「hogehoge」の部分を入力する
8. パスワードはサーバーパスワードを入力する(コントロールパネルにログインするときのパスワード)
9. エンターキーを1回押す
10. 「Welcome to FreeBSD!」と出れば接続成功
11. 「sh」と入力してエンター(シェルは好みの問題だけど・・)
12. 「cd www」と入力してエンター(バックアップを取りたいディレクトリへ移動する)
13. 「/usr/local/bin/mysqldump -h [サーバーURL] -u [ユーザー名] -p[パスワード] [データベース名] > [ファイル名.sql]」と入力してエンター

例)
/usr/local/bin/mysqldump -h mysql999.db.sakura.ne.jp -u hogehoge -ppassword hogehoge_db > backup.sql
※TeraTeamは「Alt+V」でクリップボードの貼り付けができる

14. 以上でバックアップが取れる(この例では、「www」ディレクトリ直下に「backup.sql」というファイルが出来上がる)
15. 「exit」と入力してエンター
16. 「logout」と入力してエンター
17. あとはFTPソフトなどでサーバーにアクセスし、ダウンロードすればOK


復元する手順
1. 上の手順でSSH接続しておく
2. 「sh」と入力してエンター
3. 「cd www」と入力してエンター(バックアップファイルがあるディレクトリへ移動する。当然だが、予めFTPソフトなどでバックアップファイルをアップロードしておく)
4. 「mysql -h [サーバーURL] -u [ユーザー名] -p[パスワード] -D [データベース名] < [ファイル名].sql」と入力してエンター

例)
mysql -h mysql999.db.sakura.ne.jp -u hogehoge -ppassword -D hogehoge_db < backup.sql
※TeraTeamは「Alt+V」でクリップボードの貼り付けができる

5. 以上でデータベースが復元できる
6. 「exit」と入力してエンター
7. 「logout」と入力してエンター



[ 戻る ]