J'ai besoin d'un script qui permet automatiquement une sauvegarde d'une base de données MySQL. Je sais qu'il y a déjà beaucoup de postes et de scripts sur ce sujet, mais voici ici que la mine diffère. P>
Quelqu'un a quelque chose de similaire ou d'idées où commencer? P>
7 Réponses :
Vous pouvez faire la majeure partie de cela avec un jeu de cronjob one-line pour exécuter toutes les 30 minutes: Ceci créera une passe de base de données toutes les 30 minutes et chaque semaine, ça va commencer Écraser les décharges de la semaine précédente. P> a ensuite un autre cronjob qui fonctionne une fois par semaine qui copie le dépotoir le plus récent à un endroit séparé où vous gardez des instantanés. P> P>
réponse em>: cron description em>: p> Essayez de créer un fichier quelque chose.sh avec ceci: p> Minutes (range 0-59)
Hours (0-23)
Day of month (1-31)
Month (1-12)
Day of the week (0-6 being 0=Domingo)
Absolute path to script or program to run
Je déposerais effectivement le script (ou un symbole symbolique) dans l'un des dossiers /etc/cron.daily si votre distribution le supporte au lieu d'ajouter spécifiquement une ligne au maître crontab.
faire à peu près la même chose comme beaucoup de gens.
Le script doit être exécuté sur la machine hébergeant la base de données MySQL (c'est une machine Linux).
=> Créez un script Bash ou Perl local (ou autre) "myscript" sur cette machine "A" P> LI>
Les sauvegardes doivent être enregistrées sur le même serveur que la base de données est activée. Quelques astuces et fonctions pour vous aider à démarrer car je ne publierai pas tout mon script, il ne fait pas complètement le tour mais non loin: P>
=> Dans le script "myscript", vous pouvez simplement utiliser mysqldump strong>. De la sauvegarde locale, vous pouvez créer une tarabasse #!/bin/sh
...
MYSQLDUMP="$(which mysqldump)"
FILE="$LOCAL_TARBALLS/$TARBALL/mysqldump_$db-$SNAPSHOT_DATE.sql"
$MYSQLDUMP -u $MUSER -h $MHOST -p$MPASS $db > $FILE && $GZIP $GZ_COMPRESSION_LEVEL $FILE
function create_tarball()
{
local tarball_dir=$1
tar -zpcvf $tarball_dir"_"$SNAPSHOT_DATE".tar.gz" $tarball_dir >/dev/null
return $?
}
function send_tarball()
{
local PROTOCOLE_="2"
local IPV_="4"
local PRESERVE_="p"
local COMPRESSED_="C"
local PORT="-P $DESTINATION_PORT"
local EXECMODE="B"
local SRC=$1
local DESTINATION_DIR=$2
local DESTINATION_HOST=$DESTINATION_USER"@"$DESTINATION_MACHINE":"$DESTINATION_DIR
local COMMAND="scp -$PROTOCOLE_$IPV_$PRESERVE_$COMPRESSED_$EXECMODE $PORT $SRC $DESTINATION_HOST &"
echo "remote copy command: "$COMMAND
[[ $REMOTE_COPY_ACTIVATED = "Yes" ]] && eval $COMMAND
}
Créer un script shell comme celui ci-dessous:
30 8 * * * /shell_dir/filename.sh
Ma préférence est pour Automysqlbackup qui est livré avec Debian. C'est vraiment facile et crée des sauvegardes quotidiennes, qui peuvent être configurées. De plus, il stocke une sauvegarde mensuelle hebdomadaire, puis une sauvegarde mensuelle. P>
J'ai eu la course pendant un moment et il est super facile à configurer et à utiliser! p>
Vous pouvez envisager cet outil open source, Matiri, https://github.com/aafc-mbb / matiri qui est un script de sauvegarde MySQL simultané avec des métadonnées dans SQLite3. Caractéristiques (plus que vous demandiez ...): p>
Divulgation complète: Auteur d'origine Matiri. P>
Après une brève lecture de la question et des bonnes réponses, j'ajouterais de quelques points de plus. Certains d'entre eux sont déjà mentionnés.
Le processus de sauvegarde peut impliquer les étapes suivantes: strong> p> Pour composer un script pour couvrir toutes les étapes de sauvegarde dont vous avez besoin d'effort et de connaissances. P> Je voudrais partager un Lien vers un article (je suis l'un des écrivains) qui décrit le script bash p>
automysqlbackup p>
Outils tiers P> li>
ol> J'espère que ce serait utile! p> p>
jamais b> Sauvegarde dans la machine de production. Si votre serveur de production meurt, vous sauvegardez également.