W.I.S. Laboratory
menu-bar

さくらインターネット


さくらインターネットの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. 「https://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]の箇所は自分のユーザー名に書き換えること。(ブラケットは不要)

例:PHPファイルを「www/backup/」下に置き、ユーザー名が「foobar」の場合

[ 戻る ]
saluteweb