データベースのバックアップにcronを使用する

データベースのバックアップにcronを使用する

毎日データベースをバックアップするためにcronジョブを設定しようとしています。これは私がcrontabファイルに書いたものです:

25 18 * * * root mysqldump -u root -p myPassWord --all-databases | gzip > /var/backup/database_`date '+%m-%d-%Y'`.sql.gz 

18:25に何も起こらなかったので、私の/var/log/syslogファイル(サーバーはDebianにあります)を確認したところ、次のことがわかりました。

Jan 24 18:25:01 ns311475 /USR/SBIN/CRON[16252]: (root) CMD (/usr/local/ispconfig/server/server.sh 2>&1 > /dev/null | while read line; do echo `/bin/date` "$line" >> /var/log/ispconfig/cron.log; done)
Jan 24 18:25:01 ns311475 /USR/SBIN/CRON[16253]: (getmail) CMD (/usr/local/bin/run-getmail.sh > /dev/null 2>> /dev/null)
Jan 24 18:25:01 ns311475 dovecot: imap-login: Disconnected (no auth attempts in 0 secs): user=<>, rip=127.0.0.1, lip=127.0.0.1, secured, session=<3xFlL2kNAAB/AAAB>
Jan 24 18:25:01 ns311475 dovecot: pop3-login: Disconnected (no auth attempts in 0 secs): user=<>, rip=127.0.0.1, lip=127.0.0.1, secured, session=<rhRlL2kNvwB/AAAB>
Jan 24 18:25:01 ns311475 postfix/smtpd[16279]: connect from localhost.localdomain[127.0.0.1]
Jan 24 18:25:01 ns311475 postfix/smtpd[16279]: lost connection after CONNECT from localhost.localdomain[127.0.0.1]
Jan 24 18:25:01 ns311475 postfix/smtpd[16279]: disconnect from localhost.localdomain[127.0.0.1]

最初の行がわかりません。残りは質問を電子メールで送信しようとしているようですが、何も得られません。

答え1

良いマニュアルを読んでください::man 5 crontabそこで「%」がcronに特別な意味を持っていることがわかります。

これは意図したコマンドを中断します。

それ以外に、これはmySQLのバックアップを開始する非常に悪い方法です。

  • ルートDBパスワードは、すべてのローカルユーザーまたはsnmp読み取りアクセス権を持つすべてのユーザーが表示できるプロセスのリストに表示されます。
  • 明らかな理由なく、シェル内でサブシェルを起動しないでください。代わりに "$(command)" を使用してください。
  • gzipは1つのCPUのみを使用します。したがって、この部分は全体のバックアップ速度を低下させます。

あなたは:

  • ルートデータベースのパスワードをルートフォルダにあるファイル(.mysql - ファイルの正確な構文と名前が記憶されていない)に入力します。このファイルはルートからのみアクセスできます。これにより、mySQLパスワードを使用して自動ルートログインが有効になります。
  • 現在実行中のタスクを/usr/local/sbinにあるスクリプトに入れます(おそらくrootとtrustedグループのみを読むことができます)
  • cronを介してスクリプトを呼び出します。
  • スクリプト内のすべてのコマンドにフルパスを使用します。すべての「共通」パスが設定されている環境では、Cronが実行されない可能性があります。
  • 使用するかpgzip空き容量がある場合は、バックアップ完了後に圧縮してください。

答え2

Debian には、MySQL データのダンプ、圧縮、および回転を処理するのに役立つパッケージがあります。次のコマンドを使用してインストールできます。

$ sudo apt-get インストール automysqlbackup

その後、毎日、毎週、毎月のダンプが配置されます。/var/lib/automysqlbackup

関連情報