さくらインターネット


さくらインターネットのMySQLデータをPHPで定期バックアップする



何度やっても、-hオプションでホスト名を指定するのを忘れて「Can't connect to local MySQL server through socket」とか出してしまうので備忘録。
さくらインターネットは、Webサーバーとメールサーバーはひとつになっているが、MySQLサーバーは物理的に別のサーバーとなっているため、PHPなどからmysqldumpを実行する場合は-hオプションでホスト名の指定が必要・・なのだが、なぜか忘れる。

なお途中でタイムアウトしてしまう場合、php.iniを編集すればPHPの実行時間は変更可能だが、さくらインターネットはApacheのタイムアウトが5分であり、これを変更することができないため、ダンプに5分以上かかるようなあまりに巨大なデータベースはこの方法では不可能。この場合は、SSHで接続してダンプするしかない。

ちなみに復元するには、SSH接続してmysqlを実行すればOK。

cronが使えればcronからPHPを呼び出すことで定期的に自動バックアップしてくれる。


バックアップ用のPHPを作る

「dbbak.php」などと適当な名前をつけて保存しておく。

PHPファイルをFTPでアップロードする
1. FTPソフトなどを起動する
2. 「www」ディレクトリ下など、適当なディレクトリ下にPHPファイルをアップロードする
できれば専用のディレクトリを作成し、パスワードなどでアクセス制限をかけておいたほうが安心。

PHPを呼び出す
1. ブラウザを起動する
2. 「http://username.sakura.ne.jp/dbbak.php」などとしてPHPを呼び出す
3. PHPの実行が正常に終われば、PHPファイルと同じディレクトリに「backup_2019-05-08-20.sql」などというファイルができている。

必要ならバックアップファイルをダウンロードする
1. FTPソフトなどを起動する
2. サーバー上にできたバックアップファイルをダウンロードする

cronの設定をすれば定期的に自動でバックアップ可能
cronの詳しい設定は割愛するが、実行コマンドは以下のようにすれば、定期的にPHPを実行できる。

※ cdコマンドで移動する先のパスは、PHPファイルを置いたディレクトリを指定すること。
※「username」の箇所は自分のユーザー名に書き換えること。





[ 戻る ]