MariaDB Enterprise Backup est une solution de sauvegarde de MariaDB Corporation avec un certain nombre de fonctionnalités telles que les sauvegardes non bloquantes, la sauvegarde complète, la sauvegarde incrémentielle, la sauvegarde partielle et la récupération ponctuelle.
Nous recevons souvent des questions sur les différences entre MariaDB Backup et les fonctionnalités de gestion des sauvegardes de ClusterControl. Voilà donc de quoi parle ce blog.
Créer des sauvegardes plutôt que les gérer
MariaDB Backup est un fork de Percona XtraBackup, et est un outil pour effectuer des sauvegardes physiques du serveur MariaDB. Il vous permet de faire des choses comme des sauvegardes complètes, incrémentielles et partielles. On peut également effectuer une récupération ponctuelle à l'aide de journaux binaires. Selon la documentation, la version "Enterprise" de la sauvegarde MariaDB fournit "le suivi des instructions DDL, ce qui réduit le temps de verrouillage pendant les sauvegardes".
ClusterControl prend en charge MariaDB Backup comme méthode de sauvegarde pour MariaDB. Il fournit une interface utilisateur graphique pour planifier des sauvegardes complètes, des sauvegardes incrémentielles et des sauvegardes partielles, et effectuer la récupération des fichiers de sauvegarde ou automatise également la récupération ponctuelle. De plus, ClusterControl fournit des fonctionnalités telles que le chiffrement, la compression, le téléchargement vers le stockage cloud (Azure, AWS, Google Cloud) et la vérification automatique des sauvegardes pour s'assurer qu'elles sont récupérables.
Sauvegarde et restauration complètes
Pour effectuer une sauvegarde complète à l'aide de MariaDB Enterprise Backup, vous pouvez utiliser les utilitaires de commande mariabackup. Il y a 4 entrées de paramètres après la commande mariabackup. Les paramètres sont :
- Sauvegarde - Ceci est utilisé pour sauvegarder la base de données à l'aide des utilitaires mariabackup.
- Préparer - pour effectuer une sauvegarde cohérente à un instant donné, vous devez préparer la sauvegarde après l'exécution de la sauvegarde brute.
- Recopie - utilisé pour restaurer la sauvegarde extraite dans le répertoire de données par défaut de mysql. Il copiera la sauvegarde dans le répertoire mysql, sans supprimer la sauvegarde d'origine.
- Reculer - utilisé pour restaurer la sauvegarde extraite dans le répertoire de données mysql en déplaçant tous les répertoires de sauvegarde.
Si vous souhaitez sauvegarder et restaurer, il vous suffit de passer le paramètre obligatoire après la commande mariabackup. Pour une commande de sauvegarde complète, voici un exemple de script utilisant MariaDB Backup.
mariabackup --backup --target-dir=/backup/full/ --user=bkpuser --password=p4sswordb4ckup
Vous devez définir certaines options, telles que --target-dir, qui est l'emplacement cible pour les fichiers de sauvegarde, --user, utilisé pour les utilisateurs d'informations d'identification pour la sauvegarde, et --password pour le mot de passe de sauvegarde des informations d'identification.
Pour rendre la sauvegarde cohérente à un instant donné, vous devez exécuter la préparation une fois la sauvegarde complète terminée. Les fichiers de données ne sont pas cohérents jusqu'à ce que vous exécutiez la préparation, c'est parce que lorsque vous exécutez la sauvegarde, les fichiers de données ont été copiés à différents moments pendant la sauvegarde.
Pour exécuter la préparation de la sauvegarde :
mariabackup --prepare --target-dir=/backup/full
Après avoir exécuté prepare, la sauvegarde sera prête à être restaurée. Vous verrez le message sur la dernière ligne comme ci-dessous, lorsque la préparation a réussi.
InnoDB: Shutdown completed; log sequence number 9553231
Vous pouvez exécuter la commande de restauration à l'aide de la recopie. Voici l'exemple de script pour restaurer la sauvegarde :
mariabackup --copy-back --target-dir=/backup/full
Vous pouvez placer le script ci-dessus dans une commande de script shell et accorder une autorisation exécutable, configurez-le sur le planificateur du système d'exploitation.
La sauvegarde et la restauration à l'aide de ClusterControl Backup Management sont très faciles à utiliser. ClusterControl prend en charge la sauvegarde logique et la sauvegarde physique. Pour la sauvegarde logique, ClusterControl utilise mysqldump et pour la sauvegarde physique utilise mariabackup sauvegarde complète et incrémentielle.
Il existe deux options pour effectuer la sauvegarde ; vous pouvez créer la sauvegarde directement ou planifier la sauvegarde.
Vous pouvez également activer certaines options telles que le cryptage, la compression, le fil de copie parallèle comme ci-dessous :
La restauration de la sauvegarde est aussi simple que la sauvegarde a été créée. Il vous suffit de sélectionner le fichier de sauvegarde complète que vous souhaitez restaurer.
Il existe deux options pour restaurer la sauvegarde ; vous pouvez restaurer la sauvegarde sur les nœuds où la sauvegarde a été effectuée ou vous pouvez restaurer la sauvegarde sur un hôte autonome dédié.
Sauvegarde et restauration incrémentielles
Réaliser une sauvegarde complète d'une très grande base de données prendra du temps et nécessitera beaucoup de ressources. La sauvegarde incrémentielle est utilisée pour effectuer la sauvegarde des modifications après la dernière sauvegarde complète.
Lorsque la sauvegarde incrémentielle est en cours d'exécution, MariaDB Enterprise Backup comparera la sauvegarde complète précédente ou la sauvegarde incrémentielle pour trouver les dernières modifications.
mariabackup --backup --incremental-basedir=/backup/full --target-dir=/backup/incr --user=bkpuser --password=p4sswordb4ackup
Avant d'effectuer la sauvegarde incrémentielle, vous devez vous assurer qu'une sauvegarde complète a été préparée. Après cela, vous pouvez exécuter la sauvegarde incrémentielle, en l'appliquant à la dernière sauvegarde complète.
mariabackup --prepare --target-dir=/backup/full --incremental-dir=/backup/incr
Une fois la sauvegarde incrémentielle appliquée à la sauvegarde complète, le répertoire de sauvegarde complète aura désormais toutes les données de sauvegarde préparées.
La restauration de la sauvegarde complète préparée avec toutes les modifications incrémentielles peut être effectuée via :
mariabackup --copy-back --target-dir=/backup/full
Pour effectuer une sauvegarde incrémentielle dans ClusterControl, vous pouvez choisir la sauvegarde incrémentielle mariabackup. Vous devez disposer de la sauvegarde complète préparée avant de procéder à la sauvegarde incrémentielle.
ClusterControl trouvera automatiquement la sauvegarde complète la plus proche lorsque vous exécuterez la sauvegarde incrémentielle. Et pour restaurer la sauvegarde, vous pouvez choisir la sauvegarde et la restauration entièrement préparées. Il vous demandera comment vous souhaitez restaurer la sauvegarde, soit sur le nœud, soit sur l'hôte autonome. Il restaurera la sauvegarde, y compris les modifications incrémentielles.
Sauvegarde et restauration partielles
La sauvegarde partielle spécifie la base de données ou la table que vous souhaitez sauvegarder. Vous pouvez soit choisir une liste de bases de données et de tables à sauvegarder, soit exclure certaines bases de données et tables de la sauvegarde. Les options incluent :--databases, --databases-exclude, --tables, --tables-exclude
Vous trouverez ci-dessous un exemple de script pour effectuer la sauvegarde partielle, pour la table card_data.
mariabackup --backup --target-dir=/backup/partial --user=bkpuser --password=p4sswordb4ckup --tables=card_data
Vous devez toujours préparer la sauvegarde partielle complète pour rendre la sauvegarde cohérente à un instant donné en exécutant la commande ci-dessous :
mariabackup --prepare --export --target-dir=/backup/partial
L'exécution d'une restauration partielle est très différente de la restauration d'une sauvegarde complète et d'une sauvegarde incrémentielle. Vous devez préparer les tables et la base de données dans le serveur MariaDB en cours d'exécution, puis copier manuellement les fichiers de données dans le répertoire de données mysql.
Par exemple, vous souhaitez effectuer une restauration partielle de la table card_data (table non partitionnée).
- Créer la table vide de card_data avec la même structure dans la base de données cible
- Exécutez l'espace de table DISCARD sur la table card_data.
ALTER TABLE carddb.card_data DISCARD TABLESPACE;
- Copiez les fichiers de données dans le répertoire de données mysql
cp /backup/partial/carddb/card_data.* /var/lib/mysql/carddb
- Changer le propriétaire des fichiers devenu mysql
chown mysql:mysql /var/lib/mysql/carddb/card_data.*
- Dernière chose, importez le tablespace :
ALTER TABLE carddb.card_data IMPORT TABLESPACE;
La sauvegarde partielle dans ClusterControl est vraiment simple, il vous suffit d'activer l'option de sauvegarde partielle. Cela vous donnera la possibilité d'inclure ou d'exclure la base de données et les tables comme indiqué ci-dessous :
La partie suivante est similaire à la sauvegarde complète et à la sauvegarde incrémentielle, vous pouvez choisissez des paramètres tels que le chiffrement et la compression.
La restauration de la sauvegarde partielle est exactement la même que lorsque nous restaurons la sauvegarde complète. Il vous suffit de choisir la sauvegarde partielle, et le reste sera géré par ClusterControl.
Récupération ponctuelle
La restauration de la sauvegarde complète ou de la sauvegarde incrémentielle vous donne une sauvegarde à partir du moment où la sauvegarde a été effectuée, mais elle ne vous donne aucune donnée postérieure à la sauvegarde. Ces changements seraient dans le journal binaire. Lorsque vous effectuez la sauvegarde préparée avec binlog activé, il y aura un fichier appelé xtrabackup_binlog_info. Le fichier contient un fichier journal binaire et la position du dernier numéro de séquence.
Vous pouvez effectuer la récupération à un instant donné en extrayant les modifications vers SQL, comme après la fin de la restauration. Vous pouvez exécuter mysqlbinlog pour extraire l'heure spécifique dans le nœud de la base de données source et appliquer le SQL dans le nœud de la base de données cible/restaurée.
La récupération ponctuelle (PITR) dans ClusterControl peut être activée comme indiqué ci-dessous :
Vous devez définir jusqu'à quel point récupérer, il y a deux options prises en charge qui sont basés sur le temps ou sur la position. Pour le temps, il vous suffit de renseigner l'heure exacte à laquelle les données seront restaurées. Pour la position basée, vous devez remplir le nom et la position du binlog. Le reste de la restauration est similaire.
Conclusion
C'est tout pour le moment. Comme nous l'avons vu plus haut, MariaDB Backup est un bel outil avec beaucoup d'options. ClusterControl fournit une interface graphique facile à utiliser pour effectuer les procédures de sauvegarde. Il ajoute également un certain nombre de fonctionnalités telles que le chiffrement, la compression, la planification, la gestion de la rétention et la vérification automatique des sauvegardes.