MySQL - backup automatique de base de données

Dernière mise à jour sur 6 sept. 2023 à 13:18:29.
Catégorie: Serveurs cloud

backup Cron Linux MariaDB MySQL

Mysql automatic backup script

Introduction

Votre serveur virtuel Kinamo (VPS) ou serveur cloud Kinamo vous permet d'installer vos propres scripts. Kinamo vous propose un script qui vous permet de sauvegarder le contenu de votre base de données MySQL ou MariaDB quotidiennement dans un dossier chronologique.

Ma base de données n'est elle pas déjà sauvegardée?

L'avantage du script présenté, c'est qu'il vous permet de créer une copie consistente de votre base de données MySQL / MariaDB à un certain point, et de la remettre en place rapidement.
Kinamo effectue des backups complets de votre serveur toutes les nuits, mais il est plus aisé de remettre à jour votre base de données comme décrit ci-dessous plutôt que de devoir faire appel au service Support de Kinamo pour un restore à partir de l'image de votre serveur.

Kinamo vous suggère de placer le script suivant dans le dossier /usr/sbin/local.
Pour rendre les choses faciles, nous avons appelé le script kinamo_mysqlbackup.sh.

Pas 1: Copiez le script

#!/bin/bash

# Configuration de base: datestamp e.g. YYYYMMDD

DATE=$(date +"%Y%m%d")

# Dossier où sauvegarder les backups (créez le d'abord!)

BACKUP_DIR="/backup/mysql"

# Identifiants MySQL

MYSQL_USER="root"
MYSQL_PASSWORD="YOURSECUREPASSWORD"

# Commandes MySQL (aucune raison de modifier ceci)

MYSQL=/usr/bin/mysql
MYSQLDUMP=/usr/bin/mysqldump

# Bases de données MySQL à ignorer

SKIPDATABASES="Database|information_schema|performance_schema|mysql"

# Nombre de jours à garder les dossiers (seront effacés après X jours)

RETENTION=14

# ---- NE RIEN MODIFIER SOUS CETTE LIGNE ------------------------------------------
#
# Create a new directory into backup directory location for this date

mkdir -p $BACKUP_DIR/$DATE

# Retrieve a list of all databases

databases=`$MYSQL -u$MYSQL_USER -p$MYSQL_PASSWORD -e "SHOW DATABASES;" | grep -Ev "($SKIPDATABASES)"`

# Dumb the databases in seperate names and gzip the .sql file

for db in $databases; do
echo $db
$MYSQLDUMP --force --opt --user=$MYSQL_USER -p$MYSQL_PASSWORD --skip-lock-tables --events --databases $db | gzip > "$BACKUP_DIR/$DATE/$db.sql.gz"
done

# Remove files older than X days

find $BACKUP_DIR/* -mtime +$RETENTION -delete

Copier et collez le contenu complet du script ci-dessus, et sauvegardez-le sous le nom kinamo_mysqlbackup.sh dans le dossier /usr/local/sbin/.

N'oubliez pas de paramétrer le script avec vos propres identifiants, et de créer le dossier de sauvegarde /backup/mysql.

Pas 2: Changez les droits du script

Ajoutez les droits d'exécution au script avec la commande suivante:

chmod 755 kinamo_mysqlbackup.sh

Pas 3: Créez un cronjob

Modifiez le crontab du serveur pour executer le script tous les jours à 1h:

vi /etc/crontab

0 1 * * * root /usr/local/sbin/kinamo_mysqlbackup.sh

Stap 4: Relancer le daemon cron

Sauvegardez le fichier cron et redémarrer le service, ce qui se fait avec une des commandes suivantes selon votre distribution Linux:

service cron restart
service crond restart

Le script assurera un backup quotidien de vos bases de données, que vous retrouverez sous /backup/mysql/YYYYMMDD/<dump de votre db>.


Articles connexes

Paramètres des serveurs mail Kinamo (feuille de triche)

L'article suivant vous donne un résumé de la configuration et noms du serveurs mail de Kinamo. Avec la liste ici...

En savoir plus

Créer un filtre anti-spam avec le Kinamo Webmail

L'article suivant vous explique comment ajouter un filtre spécial pour mettre des messages SPAM automatiquement dans un dossier dans votre...

En savoir plus

Acheter un certificat SSL? Qu'est un certificat SSL?

Vous voulez acheter un certificat SSL? Mais, c'est quoi un certificat SSL? Et pourquoi est-ce que tous le monde dit...

En savoir plus

Besoin d'aide supplémentaire?

Vous n'avez pas obtenu de réponse à toutes vos questions?
Ne vous inquiétez pas, faites une demande d'assistance!

Sélectionnez votre langue

Toutes les langues: