MariaDB
 sql >> Base de données >  >> RDS >> MariaDB

Passer à la sauvegarde MariaDB

Dans mon précédent article de blog qui parlait de la mise à niveau vers la dernière version de Jira avec la dernière version de MariaDB, j'ai brièvement mentionné que lors de la mise à niveau vers MariaDB Server 10.3, il faut regarder comment les sauvegardes sont effectuées. Avec MariaDB Server 10.3 vient MariaDB Backup, qui prend en charge les dernières fonctionnalités de MariaDB Server. Il est également disponible sur toutes les mêmes plates-formes que MariaDB Server et est distribué avec le serveur.

Si vous avez sauvegardé avec XtraBackup et essayez d'exécuter ces mêmes commandes sur MariaDB Server 10.3, vous obtiendrez un message d'erreur :

$ innobackupex ~/backup_to_dir --user=username --password=password
...
InnoDB: Unsupported redo log format. The redo log was created with MariaDB 10.3.9.

La première phrase du dernier message est de quoi il s'agit. XtraBackup ne comprend pas le(s) fichier(s) dans le journal de rétablissement de la version 10.3. Notez que nous avons utilisé une ancienne version de XtraBackup et c'est pourquoi la commande est toujours innobackupex .

Pour cette raison et pour d'autres raisons mentionnées ci-dessous, MariaDB Server est désormais livré avec MariaDB Backup qui prend en charge le nouveau format de journalisation. Avec MariaDB Backup, vous disposez des mêmes fonctionnalités que celles auxquelles vous êtes habitué avec XtraBackup, mais avec la prise en charge du format de journalisation amélioré et la prise en charge du chiffrement des données au repos de MariaDB. Un autre aspect très demandé est que MariaDB Backup est également disponible pour Windows, ce que XtraBackup n'est pas. Si vous souhaitez en savoir plus sur la modification du journal de rétablissement, lisez ceci.

Au début de cet article, je mentionne que nous avons récemment mis à niveau Jira vers la version la plus récente et MariaDB Server vers 10.3. Dans cet ancien environnement, nous avons utilisé XtraBackup. Pour obtenir des sauvegardes pour MariaDB Server 10.3, nous avons dû mettre à jour nos scripts de sauvegarde pour utiliser MariaDB Backup.

Après être passé à MariaDB Backup, la commande de sauvegarde ressemble à ceci :

$ mariabackup --backup --target-dir /backup/to/dir --user=username --password=password --parallel=4

Nous avons dû changer la commande elle-même d'être innobackupex à mariabackup et nous avons ajouté deux options ; –sauvegarde dire à mariabackup que nous voulons qu'il crée une sauvegarde et –target-dir pour spécifier que le répertoire donné est l'endroit où les fichiers de sauvegarde doivent aller. Il convient de noter que si nous avions utilisé une version plus récente de XtraBackup, les options de ligne de commande auraient été entièrement compatibles avec XtraBackup, donc la seule chose à changer aurait alors été la commande elle-même de xtrabackup à mariabackup .

Pour être sûr que la sauvegarde fonctionne, nous allons la copier sur un autre serveur et essayer de la restaurer là-bas. Pour restaurer une sauvegarde, nous devons d'abord la préparer :

$ mariabackup --prepare --target-dir full-2018-09-11_09-38-32

Notez que j'ai une sauvegarde complète d'une instance de MariaDB Server qui remplacera tout ce qui existerait dans l'instance sur laquelle je suis en train de restaurer. Je vais donc arrêter le serveur et supprimer tous les fichiers de données qu'il contient.

$ sudo service mariadb stop
$ sudo rm -rf /var/lib/mysql/*

Maintenant, les fichiers de sauvegarde peuvent être placés dans le répertoire de données de cette instance de serveur. Cela devrait être fait avec mariabackup pour le faire correctement. Il fait certaines choses liées au format de journalisation expliqué ci-dessus.

$ sudo mariabackup --copy-back --target-dir full-2018-09-11_09-38-32

Assurez-vous que les autorisations sont correctes. Dans mon cas, l'utilisateur et le groupe normaux sont utilisés. Ensuite, démarrez le serveur.

$ sudo chown mysql:mysql /var/lib/mysql -R
$ sudo service mariadb start

Connectons-nous ensuite au serveur et vérifions qu'il dispose des données qu'il devrait avoir. J'ai décidé de demander le nombre maximal de problèmes dans Jira.

# connect to mariadb
$ mysql -uusername -ppassword
# query the database
MariaDB [(none)]> USE jiradb
MariaDB [jiradb]> SELECT MAX(issuenum) FROM jiraissue;

Voila ! Nous avons maintenant des sauvegardes fonctionnant sur MariaDB Server 10.3.