GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Effectuer des sauvegardes à chaud des bases de données MySQL avec Percona XtraBackup sur Ubuntu 16.04

Percona XtraBackup est un utilitaire de sauvegarde open source pour MySQL. Il prend en charge toutes les versions de MySQL telles que Percona Server, MariaDB et (Oracle) MySQL. Percona Xtrabackup effectue une sauvegarde à chaud pour MySQL. La sauvegarde à chaud signifie créer une sauvegarde d'un serveur MySQL pendant son exécution sans temps d'arrêt.

Dans ce tutoriel, je vais vous montrer comment créer une sauvegarde de base de données MySQL à chaud avec l'outil OpenSource Percona XtraBackup sur Ubuntu 16.04 (Xenial Xerus). J'utiliserai MariaDB comme serveur de base de données pour effectuer la sauvegarde, mais la même configuration fonctionnera également pour les serveurs MySQL.

Prérequis

  • Serveur Ubuntu 16.04 - (Xenial Xerus)
  • Serveur MySQL ou MariaDB
  • Privilèges racine

Étape 1 - Installer Percona XtraBackup

La première étape consiste à installer le dernier logiciel Percona XtraBackup sur notre serveur Ubuntu. Connectez-vous à votre serveur en SSH (ou sur la console) :

ssh [email protected]
TYPE YOUR PASSWORD

Percona XtraBackup est disponible dans le référentiel Ubuntu, mais nous souhaitons utiliser la dernière version du référentiel Percona.

Ajoutez le référentiel Percona en téléchargeant le package deb à partir du Web et installez-le avec la commande dpkg :

wget https://repo.percona.com/apt/percona-release_0.1-3.$(lsb_release -sc)_all.deb
sudo dpkg -i percona-release_0.1-3.$(lsb_release -sc)_all.deb

Ensuite, mettez à jour le référentiel et installez Ppercona XtraBackup 2.4 (la dernière version pour le moment) :

sudo apt-get update
sudo apt-get install percona-xtrabackup-24

Percona XtraBackup est installé.

Étape 2 - Configurer l'utilisateur et le répertoire de sauvegarde

Pour effectuer la sauvegarde à chaud, nous devons créer un nouvel utilisateur mysql avec des privilèges et des autorisations spéciaux. Dans ce tutoriel, j'utiliserai MariaDB 10.0 comme serveur de base de données. Si vous n'avez pas encore installé de base de données compatible MySQL, vous pouvez l'installer avec la commande ci-dessous :

sudo apt-get install mariadb-server mariadb-client

Définissez un mot de passe sécurisé pour l'utilisateur root avec cette commande :

mysql_secure_installation

Si MariaDB est installé, accédez au shell MariaDB/MySQL en tant qu'utilisateur root avec la commande mysql client :

mysql -u root -p
TYPE MySQL PASSWORD

Créez un nouvel utilisateur appelé 'bekupuser ' avec le mot de passe 'mypassword ' (choisissez un mot de passe sécurisé pour votre serveur !) :

CREATE USER 'bekupuser'@'localhost' IDENTIFIED BY 'mypassword';

Accordez à l'utilisateur les privilèges suivants :'RELOAD, PROCESS, LOCK TABLES, REPLICATION CLIENT'.

GRANT RELOAD, LOCK TABLES, PROCESS, REPLICATION CLIENT ON *.* TO 'bekupuser'@'localhost';
FLUSH PRIVILEGES;
exit

Ensuite, créez un nouveau répertoire pour stocker les fichiers de sauvegarde MySQL :

mkdir -p /data/backups/mysql/

Le nouvel utilisateur de sauvegarde et un répertoire de sauvegarde ont été créés.

Étape 3 - Effectuer une sauvegarde avec Innobackupex

Innobackupex est un wrapper de script Perl pour le programme xtrabackup. Il s'agit d'une version corrigée du script innobackup fourni par oracle, distribué avec l'outil de sauvegarde InnoDB. Innobackupex fournit une sauvegarde pour toute une instance de base de données MySQL, en utilisant xtrabackup en combinaison avec xbstream et xbcrypt.

Dans cette étape, nous allons créer et préparer une sauvegarde complète pour l'instance MySQL.

A. Créer une sauvegarde avec Innobackupex

À l'étape 2, nous avons créé un nouveau répertoire pour la sauvegarde et ajouté un nouvel utilisateur de sauvegarde mysql. Nous allons les utiliser maintenant pour créer une sauvegarde avec la commande innobackupex.

Créez une sauvegarde MySQL avec l'innobackupex dans le nouveau répertoire '/data/backups/my_backup' :

innobackupex --user=bekupuser  --password=mypassword --no-timestamp /data/backups/my_backup

Remarque :

--utilisateur =utilisateur avec les privilèges de sauvegarde requis (étape 2).

--mot de passe =mot de passe de l'utilisateur de sauvegarde.

--pas d'horodatage =désactiver la création d'un nouveau sous-répertoire horodaté dans le répertoire racine de sauvegarde.

/data/backups/ma_sauvegarde =répertoire pour la sauvegarde, il sera créé automatiquement lors du processus de sauvegarde. Si le répertoire existe, vous obtiendrez un message d'erreur.

Autre option :

mkdir -p /data/backups/my_backup2

innobackupex --user=bekupuser --password=mypassword /data/backups/my_backup2

or

innobackupex --user=bekupuser --password=mypassword /data/backups/

Remarque :

S'il n'y a pas de répertoire 'my_backup2 ', vous obtiendrez votre répertoire basé sur 'timestamp '.

Résultats :

B. Préparer une sauvegarde complète avec Innobackupex

Après avoir créé une nouvelle sauvegarde, les données ne sont pas prêtes pour une restauration. Il reste une étape pour que les données soient prêtes à être restaurées. Nous avons besoin de "l'étape de préparation" pour que les données puissent être restaurées.

Préparez la sauvegarde en utilisant innobackupex avec l'option --apply-log dans le répertoire de sauvegarde '/data/backups/my_backup ' :

innobackupex --apply-log /data/backups/my_backup

Assurez-vous que le processus est terminé sans erreur avant de continuer.

Si vous disposez de suffisamment de mémoire et d'une grande base de données, vous pouvez utiliser l'option --use-memory=memorynumber pour indiquer à innobackupex la quantité de mémoire qu'il peut utiliser :

innobackupex --apply-log --use-memory=4G /data/backups/my_backup

Les données sont prêtes à être restaurées maintenant. Nous pouvons le restaurer sur le même serveur ou sur un autre serveur exécutant MariaDB.

Étape 4 - Restaurer la sauvegarde complète avec Innobackupex

Dans cette étape, nous allons restaurer l'instance MySQL avec innobackupex.

Avant de restaurer l'instance MySQL, nous devons arrêter le processus MySQL avec la commande systemctl (le processus MariaDB s'appelle mysql) :

systemctl stop mysql

Faites une sauvegarde de l'ancien répertoire de données MySQL :

mkdir ~/mysql_old/
mv /var/lib/mysql/* ~/mysql_old/

Ensuite, restaurez l'instance mysql à partir de la sauvegarde complète avec innobackupex :

innobackupex --copy-back /data/backups/my_backup

Lorsque vous voyez le résultat 'innobackupex :terminé OK ', alors vous avez restauré avec succès votre instance MySQL.

Remplacez maintenant le propriétaire du répertoire de données MySQL par l'utilisateur mysql et redémarrez le service :

chown -R mysql:mysql /var/lib/mysql
systemctl start mysql

L'instance MySQL a été restaurée avec succès avec percona-xtrabackup.


Ubuntu
  1. Installer et démarrer avec MySQL Workbench sur Ubuntu

  2. Ubuntu 20.04 :WordPress avec l'installation de Nginx

  3. Comment installer Nginx avec PHP5 et MySQL sur Ubuntu 11.10

  4. Comment installer Mattermost avec MySQL sur Ubuntu 14.04 et Debian 8

  5. Comment créer une sauvegarde des bases de données MySQL à l'aide de mysqldump sur Ubuntu 20.04

Hébergement virtuel avec vsftpd et MySQL sur Ubuntu 12.10

Comment sauvegarder votre bureau Ubuntu avec DejaDup

Installation de Nginx avec prise en charge de PHP5 et MySQL sur Ubuntu 8.10

Comment installer Drupal 7 avec Apache sur Ubuntu 14.04

Installer WordPress avec LEMP Stack sur Ubuntu 20.04

Installer WordPress avec LEMP Stack sur Ubuntu 20.04