勉強したことのメモ

Webエンジニア / プログラマが勉強したことのメモ。

さくらインターネットでCronからmysqldumpすると0バイトのファイルが生成される

   2024/01/16  MySQL / MariaDB データベース

さくらインターネットのレンタルサーバで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 / MariaDB データベース

  関連記事

MySQLで開始~終了日時の間隔を計算し分に変換して出力する方法
MySQLで開始~終了日時の間隔を計算し分に変換して出力する方法

MySQLで「開始日時」「終了日時」のdatetime型カラムがあり、開始から終 ...

MySQLで全文検索(フルテキストインデックス)を使用する方法
MySQLで全文検索(フルテキストインデックス)を使用する方法

普段利用しているサイトに検索用のテキストボックスがあり、そこに何らかのワードを入 ...

MySQLでスレッドの実行状況を表示しスレッドの経過時間チェックや特定スレッドを強制終了する方法
MySQLでスレッドの実行状況を表示しスレッドの経過時間チェックや特定スレッドを強制終了する方法

データベースサーバが重たく、原因を調査する機会があった。サーバ自体のメモリやCP ...

MySQLでCSVから列を指定してインポート
MySQLでCSVから列を指定してインポート

MySQLでCSVからデータをインポートしたかった。またエクセル風にいうA列はi ...

MySQLでwhere句を使ってカラム指定でデータをコピーする方法
MySQLでwhere句を使ってカラム指定でデータをコピーする方法

MySQLで大量のデータを保存しているテーブルがあり、そのデータを絞った上で尚且 ...