Création d'une tâche cron pour mysqldump
Je suis en train de créer une tâche cron pour la sauvegarde de base de données.
C'est ce que j'ai à ce jour:
mysqldump.sh
mysqldump -u root -ptest --all-databases | gzip > "/db-backup/backup/backup-$(date)" 2> dump.log
echo "Finished mysqldump $(date)" >> dump.log
Tâche Cron:
32 18 * * * /db-backup/mysqldump.sh
Le problème que j'ai est le travail n'est pas par le biais de l'exécution de cron ou quand je ne suis pas dans l'annuaire.
Quelqu'un peut-veuillez en informer. Sont mes chemins d'accès incorrect?
Également, la ligne suivante, je ne suis pas sûr qu'ils vont les erreurs de sortie à la décharge.journal:
mysqldump -u root -ptest --all-databases | gzip > "/db-backup/backup/backup-$(date)" 2> dump.log
Ce qui a fonctionné:
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
Votre exemple devrait fonctionner. Comment vous assurez-vous que exécution?
Eh bien, si je suis dans le répertoire et tapez ./mysqldump.sh il fonctionne; cependant, si je cd .. et le type dire ./db-backup/mysqldump.sh alors que le journal et le dos n'est pas pris. Aussi, la tâche cron a été fixé à 18:32 pour tester. 18:32 franchi un pas de sauvegarde a été prise.
Vous devez utiliser un chemin d'accès absolu du fichier journal. Comme
Montrez-vous l'ensemble de votre mysqldump.sh? ou juste des parties de celui-ci? Im avec hek2mgl - probable, soit les autorisations ou le chemin d'accès. Test d'un simple script dans le même répertoire que l'envoie juste un mail ou vous informe qu'il est exécuté.
Salut, je suis en train de montrer la totalité du fichier
Eh bien, si je suis dans le répertoire et tapez ./mysqldump.sh il fonctionne; cependant, si je cd .. et le type dire ./db-backup/mysqldump.sh alors que le journal et le dos n'est pas pris. Aussi, la tâche cron a été fixé à 18:32 pour tester. 18:32 franchi un pas de sauvegarde a été prise.
Vous devez utiliser un chemin d'accès absolu du fichier journal. Comme
/var/log/mysql.dump.log
. Assurez-vous que le fichier est accessible en écriture par le cron de l'utilisateur. Remarque: les Travaux listés dans /etc/crontab ou /etc/cron.d* être exécutées en tant que root. Il y a aussi un par utilisateur crontab mécanisme. Ces tâches cron s'exécute avec les mêmes privilèges que l'utilisateur à qui le crontab appartientMontrez-vous l'ensemble de votre mysqldump.sh? ou juste des parties de celui-ci? Im avec hek2mgl - probable, soit les autorisations ou le chemin d'accès. Test d'un simple script dans le même répertoire que l'envoie juste un mail ou vous informe qu'il est exécuté.
Salut, je suis en train de montrer la totalité du fichier
OriginalL'auteur Brian | 2013-04-06
Vous devez vous connecter pour publier un commentaire.
Il ya un couple de choses que vous pouvez vérifier, si plus d'information est toujours plus utile (autorisations et l'emplacement du fichier, l'ensemble du contenu du fichier, etc).
mysqldump.sh
fichier avec l' Arborescence de syntaxe pour votre environnement. Je me risquerais à deviner#!/bin/bash
serait suffisant.mysqldump -u ....
utiliser le chemin absolu/usr/bin/mysqldump
(ou à l'endroit où il se trouve sur votre système). Les chemins absolus sont toujours une bonne idée de toute forme de script, car il est difficile de dire si l'utilisateur a le même environnement que vous faites.Comme pour stocker les erreurs dans le dump.journal, je ne crois pas que votre syntaxe est correcte. Je suis assez sûr que vous êtes la tuyauterie, les erreurs de
gzip
en décharge.journal, de ne pas les erreurs demysqldump
. Cela semble être un assez commun de question qui arrive à la réponse demysqldump $PARAMS | gzip -c dump-$(date)
OriginalL'auteur Brandon