さくらインターネットで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で全角半角を区別せずに検索する方法(collate utf8_unicode_ci)
あるシステムでMySQLの検索時に「WHERE test_column coll ...
-
-
SSH接続でMySQLにダンプファイルをインポートする方法
phpMyAdminやAdminerが入っていなかったり、ダンプファイルのサイズ ...
-
-
MySQLでIPを整数値としてカラムに格納する
MySQLでIPを整数値としてカラムに格納しているケースがあった。今までIPが必 ...
-
-
MySQLにて指定したカラムがNULLもしくは空の場合、あらかじめ決めておいた内容で表示する方法
何らかのフォームとMySQLを組み合わせた際に任意入力の項目はそのカラムがNUL ...
-
-
MySQLでサイズの大きいファイルをインポートする際の注意点
MySQLでサイズの大きい(3GBほどの)dumpファイルを異なるサーバに移行し ...