さくらインターネット
さくらインターネットの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」の場合
|