Voici ma question posée sur StackExchange il y a 2 jours. https://stackoverflow.com/q/35839190/4772652 Quelqu'un m'a suggéré de demander ici. Quelqu'un pourrait-il me donner un coup de main pour résoudre ce problème?
============
J'avais essayé de lancer un script de mysqldump pour une sauvegarde quotidienne par launchd et également par Carbon Copy Cloner (CCC). Le script fonctionne très bien en ligne de commande. Cependant, il est livré avec un fichier vide sous launchd ou CCC.
Alors que j'ai exécuté manuellement la commande sh mysqldump.sh
, une <DATE>.sql.gz
le fichier sera créé. Et si le launchd / CCC appelle le script, un <DATE>.sql.gz
Le fichier sera également créé. Cependant, la taille du fichier sera de 2 0B.
Voici le contenu de mon fichier plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.MySQL.crontab</string>
<key>Program</key>
<string>/bin/mysqldump.sh</string>
<key>RunAtLoad</key>
<true/>
<key>StandardErrorPath</key>
<string>/tmp/AlTest1.err</string>
<key>StandardOutPath</key>
<string>/tmp/AlTest1.out</string>
<key>StartCalendarInterval</key>
<dict>
<key>Weekday</key>
<integer>5</integer>
<key>Hour</key>
<integer>6</integer>
<key>Minute</key>
<integer>0</integer>
</dict>
</dict>
</plist>
Et le statut de lancement pour ce plist est - 0 com.MySQL.crontab
Voici le script pour mysqldump, qui est créé par Schulz avec une légère modification
#!/bin/sh
# *************************************************************
# file: mysqldump.sh
# date: 2015-03-27
# author: (c) by Marko Schulz - <[email protected]>
# description: Get a mysqldump of all mysql databases.
# *************************************************************
dbUsername="me"
dbBackup="/Backup/MySQL_backup"
date=$( date +%Y%m%d )
find $dbBackup/ -mtime +30 -type f -name '*.sql.gz' -exec rm -rf {} ';' >/dev/null 2>&1
mysqldump -u $dbUsername --all-databases | gzip > ${dbBackup}/${date}.sql.gz 2>&1
Que pourrais-je faire pour résoudre ce problème?
Réponses:
Votre script shell ne contient pas le chemin complet vers mysqldump (en supposant que vous avez installé MySQL Community Edition par Oracle):
Si vous avez besoin d'un mot de passe, définissez-le dans le script shell:
et remplacez la ligne ci-dessus par:
Il n'y a pas d'espace entre -p et $ dbP ...!
Je conseille également de déplacer le script shell vers un autre chemin (par exemple, / usr / local / bin / ). Vous devez alors ajuster votre plist et la ligne
devient:
la source