2013-04-06 10 views
5

データベースバックアップ用のcronジョブを作成しようとしています。mysqldump用のcronジョブを作成する

これは私がこれまで持っているものです:私が午前問題は、ジョブがcronを経由で実行されていないです

32 18 * * * /db-backup/mysqldump.sh 

か:

mysqldump.sh

mysqldump -u root -ptest --all-databases | gzip > "/db-backup/backup/backup-$(date)" 2> dump.log 

echo "Finished mysqldump $(date)" >> dump.log 

cronジョブ私がディレクトリにいないとき。

誰かに助言してもらえますか?私のパスは間違っていますか?

また、次の行私はdump.logに意志の出力誤差はよく分からない:

mysqldump -u root -ptest --all-databases | gzip > "/db-backup/backup/backup-$(date)" 2> dump.log 

働いていた何を:

mysqldump -u root -ptest --all-databases | gzip > "../db-backup/backup/backup-$(date).sql.gz" 2> ../db-backup/dump.log 

echo "Finished mysqldump $(date)" >> ../db-backup/dump.log 
+0

あなたの例が有効です。 *実行していないことを確認する方法* – hek2mgl

+0

私がディレクトリにいて、./mysqldump.shと入力すると動作します。しかし、もし私がcd ..と言うと./db-backup/mysqldump.shとすると、ログとバックは取られません。また、上記のcronジョブは、テストするために18:32に設定されていました。 18時32分に渡されたバックアップは取られませんでした。 – Brian

+5

ログファイルの絶対パスを使用する必要があります。 '/ var/log/mysql.dump.log'に似ています。ファイルがcronユーザーによって書き込み可能であることを確認してください。注:/ etc/crontabまたは/etc/cron.d*にリストされているジョブは、rootとして実行されます。また、ユーザーごとのcrontabメカニズムがあります。このようなcronジョブは、crontabが所属するユーザと同じ権限で実行されます。 – hek2mgl

答えて

6

あなたがチェックすることができます物事のカップルがありますが、より多くの情報が常に役立ちます(ファイルのパーミッションと場所、ファイルの内容全体など)。

  1. それは自分の環境にShebang syntaxmysqldump.shファイルを前置きして傷つけることはありません。私は#!/bin/bashが十分であると推測することを試みるだろう。
  2. mysqldump -u ....の代わりに、絶対パス/usr/bin/mysqldump(またはそれがあなたのシステム上のどこにあるか)を使用してください。ユーザがあなたと同じ環境を持っているかどうかを言うことは難しいため、絶対パスは常にスクリプトの形式では良いアイデアです。

dump.logにエラーを格納するために、私はあなたの構文が正しいとは思わない。私はかなりgzipからのエラーをdump.logにパイプしていると確信していますが、エラーはmysqldumpではありません。これは、答えがmysqldump $PARAMS | gzip -c dump-$(date)に到着したfairly common questionのようです。

関連する問題