W.I.S. Laboratory
menu-bar

さくらインターネット


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

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

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

おまけ:以前、Webサーバー側(FTP接続してwwwディレクトリ下のどこか)にphpMyAdminをインストールし、そのphpMyAdminからMySQLサーバーに接続してインポートしてみたら32MiB超過のファイルもインポートできたことがある(もちろんphp.iniの内容を「max_execution_time = 300 / memory_limit = 256M / post_max_size = 256M / upload_max_filesize = 256M」などとしておく必要はある)が、さくらインターネット側がそういった使い方を容認しているのかどうか不明。

SSH接続する手順は以下のとおり。

バックアップの手順

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]」と入力してエンター(Mysql5.7は「--no-tablespaces」)オプションを付けないと「'Access denied; you need (at least one of) the PROCESS privilege(s) for this operation' when trying to dump tablespaces」エラーで弾かれるようです)

例)
/usr/local/bin/mysqldump -h mysql999.db.sakura.ne.jp -u hogehoge -ppassword hogehoge_db > backup.sql

Mysql5.7の例)
/usr/local/bin/mysqldump --no-tablespaces -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. 予めFTPソフトなどでバックアップファイルをwwwディレクトリ下などにアップロードしておく
2. 上の手順でSSH接続しておく(2.~10.までの手順)
3. 「sh」と入力してエンター
4. 「cd www」と入力してエンター(バックアップファイルがあるディレクトリへ移動する)
5. 「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」でクリップボードの貼り付けができる

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

[ 戻る ]
saluteweb