mysqldump ne fonctionne pas dans crontab
J'essaye d'ajouter une tâche cron dans la crontab (ubuntu server), les sauvegardes de la base mysql.
L'exécution du script dans le terminal en tant que root fonctionne bien, mais inséré dans la crontab rien ne se passe. J'ai essayé de l'exécuter à chaque minutes, mais aucun fichier n'apparaît dans le dossier /var/db_backups.
(D'autres tâches cron)
Ici est la tâche cron:
* * * * * mysqldump-u root -pHERE IL EST de MON MOT de passe
--all-databases | gzip > /var/db_backups/database_'date +%d%m%y`.sql.gz
ce que peut être le problème?
source d'informationauteur xspecial
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin pour échapper à caractère % avec \
Vérifier cron journaux (doit être dans /var/log/syslog), Vous pouvez utiliser grep pour filtrer les.
Aussi, vous pouvez vérifier votre boîte aux lettres locale pour voir si il y a des mails du cron
Vous pouvez également configurer d'autres de réception des messages dans vous fichier crontab
Sinon, vous pouvez créer une commande personnalisée mycommand. À laquelle vous pouvez ajouter plus d'options. Vous devez donner les autorisations d'exécution.
Il est préférable d'avoir un dossier où ils stockent toutes vos sauvegardes, dans ce cas, à l'aide d'une écriture dossier "sauvegarde" qui, la première, de créer dans votre "home" par exemple.
Ma commande dans "usr/local/bin/mycommand":
Cron: Exécute le 1er jour de chaque mois.
J'espère que cela aide un peu.
Créer un nouveau fichier et l'exec du code de vidage dans un emplacement de fichier zip . Exécutez le script via un cron
Ok, j'ai eu un problème similaire et a été en mesure de le faire réparer.
Dans votre cas, vous pouvez insérer cette commande mysqldump pour un script
puis le profil de l'utilisateur qui exécute la commande mysqldump
pour exemple:
puis utiliser le chemin absolu de la commande mysqldump
Je suis en utilisant Percona Server (un fork de MySQL) sur Ubuntu. Le package (très probablement la régulière paquet MySQL) est livré avec un compte de l'entretien appelé
debian-sys-maint
. Pour que ce compte sera utilisé, les informations d'identification sont créés lors de l'installation du package, et ils sont stockés dans/etc/mysql/debian.cnf
.Et maintenant la surprise: Un lien symbolique
/root/.my.cnf
pointant vers/etc/mysql/debian.cnf
est installé.Ce fichier est un fichier d'options lire automatiquement lors de l'utilisation de
mysql
oumysqldump
. Donc, fondamentalement, vous avez alors eu des informations de connexion de donnée deux fois - dans ce fichier, et sur la ligne de commande. C'était le problème que j'ai eu.Donc une solution pour éviter cela est d'utiliser
--no-defaults
option pourmysqldump
. L'option fichier ne sera pas lu. Cependant, vous fournissez des informations d'identification via la ligne de commande, donc n'importe qui peut émettre unps
pouvez réellement voir le mot de passe une fois l'exécution de la sauvegarde. Il est donc préférable si vous créez un fichier d'option avec nom d'utilisateur et le mot de passe et de la transmettre à desmysqldump
via--defaults-file
.Vous pouvez créer l'option de fichier à l'aide de
mysql_config_editor
ou tout simplement dans n'importe quel éditeur.De course
mysqldump
viasudo
à partir de la ligne de commande commeroot
fonctionne, tout simplement parce quesudo
habituellement ne change pas$HOME
donc.my.cnf
est pas trouvé, alors. Lors de l'exécution d'une tâche cron, il est.J'ai essayé le même, mais j'ai trouvé que la sauvegarde a été créée avec 0KB. Donc, j'ai appris à connaître au sujet de la solution qui a sauvé mon temps.
Commande :
REMARQUE:
1) Vous pouvez changer le réglage de l'heure selon vos besoins. J'ai mis tous les jours dans la commande ci-dessus.
2) assurez-vous d'entrer votre nom d'utilisateur, MOT de passe et BASE de données à l'intérieur des guillemets simples (').
3) Écrivez la commande ci-dessus dans votre Crontab.
J'espère que cela aide quelqu'un.
Vous pourriez aussi avoir besoin de redémarrer le service pour charger l'un de vos modifications.
ou