12
votes

Base de données MySQL automatiquement sur Linux Server

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.

  1. Le script doit fonctionner sur la machine hébergeant la base de données MySQL (il s'agit d'une machine Linux).
  2. Les sauvegardes doivent être enregistrées sur le même serveur que la base de données est activée.
  3. Une sauvegarde doit être faite toutes les 30 minutes.
  4. Lorsqu'une sauvegarde est supérieure à une semaine, elle est supprimée à moins que ce soit la toute première sauvegarde créée cette semaine. i.e OUT de ces sauvegardes BACKUP_1_12_2010_0-00_MON.DB, BACKUP_1_12_2010_0-30_MON.DB, BACKUP_1_12_2010_1-00_MON.DB ... BACKUP_7_12_2010_23-30_SUN.db, etc Seul Backup_1_12_2010_0-00_MON.db est conservé.

    Quelqu'un a quelque chose de similaire ou d'idées où commencer?


1 commentaires

jamais Sauvegarde dans la machine de production. Si votre serveur de production meurt, vous sauvegardez également.


7 Réponses :


8
votes

Vous pouvez faire la majeure partie de cela avec un jeu de cronjob one-line pour exécuter toutes les 30 minutes: xxx

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.

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.


0 commentaires

23
votes

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


1 commentaires

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.



9
votes

faire à peu près la même chose comme beaucoup de gens.

  1. 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>

  2. Les sauvegardes doivent être enregistrées sur le même serveur que la base de données est activée.
    => Dans le script "myscript", vous pouvez simplement utiliser mysqldump strong>. De la sauvegarde locale, vous pouvez créer une tarabasse forte> que vous envoyez via SCP forte> à votre machine distante. Enfin, vous pouvez mettre votre script de sauvegarde dans le crontab strong> (crontab -e). P> li> ol>

    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>

    #!/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
    
    }
    


0 commentaires

10
votes

Créer un script shell comme celui ci-dessous:

30 8 * * * /shell_dir/filename.sh


0 commentaires

2
votes

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.

J'ai eu la course pendant un moment et il est super facile à configurer et à utiliser!


0 commentaires

0
votes

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 ...):

  • Multi-Server: plusieurs serveurs MySQL sont pris en charge, qu'ils soient co-localisés sur les mêmes serveurs physiques identiques ou distincts.
  • Parallel: chaque base de données sur le serveur à sauvegarde est effectuée séparément, en parallèle (Concurency réglable: défaut: 3)
  • compressé: chaque sauvegarde de la base de données compressée
  • ChecksumMed: SHA256 de chaque fichier de sauvegarde compressé stocké et l'archive de tous les fichiers
  • ARCHIVÉE: Toutes les sauvegardes de base de données tarèlent ensemble dans un fichier unique
  • enregistré: Informations de sauvegarde stockées dans la base de données SQLITE3

    Divulgation complète: Auteur d'origine Matiri.


0 commentaires

2
votes

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:

  1. Créer une sauvegarde
  2. compresse le fichier de sauvegarde
  3. chiffrer la sauvegarde comprimée
  4. Envoyez la sauvegarde dans un nuage (Dropbox, OneDrive, GoogleDrive, Amazons3, ...)
  5. Obtenez une notification sur les résultats
  6. Configuration d'une planification pour exécuter le processus de sauvegarde périodiquement
  7. Supprimer les anciens fichiers de sauvegarde

    Pour composer un script pour couvrir toutes les étapes de sauvegarde dont vous avez besoin d'effort et de connaissances.

    Je voudrais partager un Lien vers un article (je suis l'un des écrivains) qui décrit le le plus utilisé façons de sauvegarder des bases de données MySQL avec quelques détails:

    1. script bash XXX

    2. automysqlbackup XXX

    3. Outils tiers

      J'espère que ce serait utile!


0 commentaires