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

Hoe de taal van Kinamo webmail aanpassen

Dit FAQ-artikel legt uit hoe je de taal van de gebruikersinterface kunt aanpassen in Kinamo Webmail

En savoir plus

Puis-je vérifier mon e-mail en ligne (par webmail)?

Si vous avez une adresse e-mail chez Kinamo, vous pouvez consulter votre boîte aux lettres en ligne en vous rendant...

En savoir plus

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

Avez-vous une adresse e-mail chez Kinamo ? Découvrez ici comment créer un filtre spécial via Kinamo Webmail pour garder les...

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!

Kinamo

Sélectionnez votre langue

Toutes les langues: