さくらインターネットでCronからmysqldumpすると0バイトのファイルが生成される
2024/01/16
さくらインターネットのレンタルサーバでmysqldumpした結果をファイルとして出力するバックアップシステムをCronで実行したところ、0バイトのファイルが生成された。ブラウザから開くと正常にバックアップされたファイルが生成される。以下に対応方法をメモ。
楽な方法
ブラウザから開くと問題無いのでバックアップシステムをbackup.phpとすると、別途以下のようなリクエスト用ファイルを作成しこちらをCronで叩く方法。
$backup = file_get_contents('backup.php');
正常に動くんだけどURLがばれると第三者も実行できてしまうので微妙。
別の方法
<?php //MySQL情報 $dbHost = ""; $dbUser = ""; $dbPass = ""; $dbName = ""; //保存先ディレクトリ $filePath = ""; //ファイル名 $fileName = date('Ymd') . '.sql'; //ファイル保存 $command = "/usr/local/bin/mysqldump -h ${dbHost} -u ${dbUser} -p${dbPass} ${dbName} > ${filePath}${fileName}"; system($command);
上記ファイルをCronで実行する。
参考サイト
https://www.saluteweb.net/~oss_sakuramysql.html
所感
動かなかった原因は恐らくだけど/usr/local/bin/mysqldump部分っぽい。ここは元々はmysqldumpのみ書いていた。Cronで動かすファイルでincludeとかする際は絶対パスで書かないとダメみたいなことを覚えが記憶があるが、コマンドのパスについてもちゃんと書かないといけないらしい。
関連記事
-
-
PHPでmysqli関数使用時のプリペアドステートメントの利用方法
PHPでMySQLを扱う際はmysqli関数を、エスケープの際はreal_esc ...
-
-
PHPからMySQLにシリアライズしたデータを格納
アンケートフォームみたいなのがあって、 今後も定期開催し、尚且つ質問内容は増減す ...
-
-
MySQLで一連の処理を関数のように実行できるストアドプロシージャの設定と利用方法
MySQL関連のサイトを見ていた際にストアドプロシージャが云々というページがあっ ...
-
-
phpMyAdminでのエクスポート/インポート
DBのバックアップを取る際にエクスポート/インポートを行うが、 データ件数が多い ...
-
-
MySQLでテーブルとデータの複製(コピー)する方法
MySQLでテーブルとデータを複製したかった。ダンプとかではなく、簡単なSQL文 ...