Comment faire une sauvegarde de base de données sur MySQL

Si vous utilisez un serveur MySQL avec des informations essentielles, vous pouvez sauvegarder ses bases de données périodiquement.
Un outil en ligne de commande Linux appelé mysqldump vous permet de sauvegarder les bases de données MySQL sans avoir besoin d'arrêter un serveur MySQL.
mysqldump génère en sortie un fichier texte contenant une série de commandes MySQL qui représentent un instantané actuel des bases de données MySQL en cours de sauvegarde.
Le fichier de sortie de mysqldump peut facilement être comprimé ou crypté au besoin.

Dans ce tutoriel, je vais décrire comment sauvegarder un serveur MySQL avec mysqldump.

Le programme de mysqldump est contenue dans le paquet du client MySQL.
Donc, vous aurez besoin d'installer le paquet du client MySQL. sous Debian ou linux type Debian

aptitude install mysql-client

sous RedHat ou linux type RedHat

yum install mysql

Afin de générer un instantané en ligne pour un serveur MySQL, vous devez empêcher toute mise à jour de ses bases de données pendant la sauvegarde est en cours de traitement.
Cela dépend du moteur de stockage que vous utilisez pour les tables à l'intérieur MySQL.
Donc d'abord savoir quel moteur de stockage (par exemple, MyISAM, InnoDB) que vous utilisez.

Sauvegarde des bases de données InnoDB

Si toutes vos tables MySQL utilisent InnoDB, vous pouvez utiliser l'option “–single transaction” avec mysqldump pour faire une sauvegarde en ligne:

mysqldump -h[server-ip-address] -u[username] -p[password] --all-databases --single-transaction > backup.sql

Notez que dans la commande mysqldump ci-dessus, il n'y a pas d'espace entre les options (par exemple, -h, -u, -p), si vous ne voulez pas sauvegarder toutes les bases, il vous suffit d'enlever –all-databases et de préciser votre base à sauvegarder.

MyISAM ou InnoDB sauvegarde des bases de données MyISAM

La commande ci-dessus, cependant, ne fonctionne pas si vous utilisez des tables MyISAM ou un mélange de tables InnoDB/MyISAM.
Dans ce cas, vous devez verrouiller explicitement toutes les tables pendant que la sauvegarde se fait comme suit.

mysql> flush tables with read lock;

La déclaration flush MySQL dans la commande ci-dessus ferme toutes les tables ouvertes dans le serveur MySQL et obtient des verrous en lecture à toutes les tables de toutes les bases de données existantes, empêchant ainsi toute écriture aux bases de données.

Cela garantit une image cohérente d'un système de roulement. Maintenant procéder à la sauvegarde.

mysqldump -h[server-ip-address] -u[username] -p[password] --all-databases > backup.sql

Enfin, relâchez le verrou global pour les bases de données.

mysql> unlock tables;

Source: xmodulo.com