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

Les services gérés à l'honneur

Nos administrateurs système ont soulevé quelques cargos remplis de conteneurs de travail. (oui, ce jeu de mots était intentionnel, plus...

En savoir plus

Quel niveau de service (SLA) est de vigueur sur un hébergement serveur (co-location)?

Nos clients ayant un hébergement serveur dans notre datacentre bénéficient également de garanties excellentes. Chaque hébergement serveur chez Kinamo dispose...

En savoir plus

Comment corriger une erreur de blocage lors de la mise à niveau d'ESXi 6.5 vers 7.0 update 2 via vSphere Lifecycle Manager.

Kinamo maintains multiple VMware vSphere clusters, not only for our own infrastructure, but also for a variety of customers. As...

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: