さくらインターネットで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とかする際は絶対パスで書かないとダメみたいなことを覚えが記憶があるが、コマンドのパスについてもちゃんと書かないといけないらしい。
関連記事
-
-
MySQLでROW_NUMBER関数を使用してグループ毎に連番を設定する方法
以前にMySQLでオートインクリメントを使用せずにグループ毎に連番を設定する方法 ...
-
-
MySQLにてdatetime型のカラムを整形し「年月日のみ形式」または「秒のみ省いた形式」で表示する方法
MySQLにてdatetime型のカラムに登録日時等を格納しており、管理画面側で ...
-
-
MySQLのTEMPORARY TABLE(テンポラリテーブル)で高速化を図る方法
MySQLで5000万件ぐらいデータが入っているテーブルから日本語検索しないとい ...
-
-
SortableJSを使ってデータの並べ替え&保存
あるシステムを拝見した際にtableタグ内に並んでいる項目をドラッグ&ド ...
-
-
MySQLでJOINの高速化
JOINで無茶苦茶悩んだのでメモ。やりたかった事は、MySQLで テーブルAには ...