GNU/Linux >> Tutoriels Linux >  >> Linux

Sauvegarder automatiquement la base de données MySQL sur le serveur Linux

Faire à peu près la même chose que beaucoup de gens.

  1. Le script doit s'exécuter sur la machine hébergeant la base de données MySql (il s'agit d'une machine Linux).
    => Créer un script local bash ou perl (ou autre) "monscript" sur cette machine "A"

  2. Les sauvegardes doivent être enregistrées sur le même serveur que celui sur lequel se trouve la base de données.
    => dans le script "myscript", vous pouvez simplement utiliser mysqldump . À partir de la sauvegarde locale, vous pouvez créer une tarball que vous envoyez via scp à votre machine distante. Enfin, vous pouvez mettre votre script de sauvegarde dans le crontab (crontab -e).

Quelques astuces et fonctions pour démarrer car je ne posterai pas tout mon script, il ne fait pas tout à fait l'affaire mais pas loin :

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

}

Ensuite, pour supprimer les fichiers antérieurs à "date", vous pouvez regarder man find et concentrez-vous sur le mtime et plus récent options.

Edit :comme dit précédemment, il n'y a pas d'intérêt particulier à faire une sauvegarde locale à part un fichier temproray pour pouvoir envoyer une archive tar facilement et la supprimer une fois envoyée.


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

#!/bin/bash
mysqldump -u username -p'password' dbname > /my_dir/db_$(date+%m-%d-%Y_%H-%M-%S).sql
find /mydir -mtime +10 -type f -delete

Remplacez le nom d'utilisateur, le mot de passe et votre répertoire de sauvegarde (my_dir). Enregistrez-le dans un répertoire (shell_dir) sous le nom de fichier.sh

Planifiez-le pour qu'il s'exécute tous les jours en utilisant crontab -e comme :

30 8 * * * /shell_dir/filename.sh

Cela fonctionnera tous les jours à 8h30 et sauvegardera la base de données. Il supprime également la sauvegarde datant de plus de 10 jours. Si vous ne voulez pas le faire, supprimez simplement la dernière ligne du script.


Répondre :Un cron

Description :

Essayez de créer un fichier quelquechose.sh avec ceci :

 #!/bin/sh
 mysqldump -u root -p pwd --opt db1.sql > /respaldosql/db1.sql
 mysqldump -u root -p pwd --opt db2.sql > /respaldosql/db2.sql
 cd /home/youuser/backupsql/
 tar -zcvf backupsql_$(date +%d%m%y).tgz *.sql
 find -name '*.tgz' -type f -mtime +2 -exec rm -f {} \;

Donnez la permission adéquate au fichier

 chmod 700 mysqlrespaldo.sh

ou

 sudo chmod 700 something.sh

puis créez un cron avec

 crontab -e

le mettre comme

 **0 1 * * *** /home/youruser/coolscripts/something.sh

N'oubliez pas que les chiffres ou les caractères '*' ont cette structure :

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

Linux
  1. Les 5 meilleurs remplacements gratuits pour MySQL Server

  2. Modèles de récupération de base de données SQL Server

  3. Comment planifier une sauvegarde de base de données MySQL sur Ubuntu

  4. Comment configurer une base de données esclave MySQL

  5. Serveur de fichiers Linux Samba résistant aux ransomwares

Comment sauvegarder une seule base de données MySQL à partir de la ligne de commande

Comment sauvegarder une base de données WordPress via MySQL

Comment vérifier les privilèges utilisateur MySQL sous Linux

Comment renommer le nom de la base de données MySQL sous Linux

Serveur de base de données MySQL

Comment sauvegarder une base de données MySQL dans cPanel