D'un point de vue utilisateur, MariaDB peut être vu comme une mise à jour de MySQL :

  • Pour mettre à jour depuis une très vieille version de MySQL, voir "Passer à MariaDB depuis MySQL 5.0 (ou plus ancien)".
  • Au sein d'une même version majeure (par exemple 5.5), il suffit de désinstaller MySQL et d'installer MariaDB. Il n'est pas requis d'exporter et restaurer les bases mais il reste recommandé, comme à chaque mise à jour, de faire auparavant une sauvegarde de vos données.
  • Vous devez exécuter mysql_upgrade (comme sous MySQL) pour terminer la mise à niveau. Cela est nécessaire pour assurer que les tables de privilèges et d'événements MySQL soient mises à jour avec les nouveaux champs utilisés par MariaDB. Il faut noter que si MariaDB est installé au moyen d'un paquetage, l'exécution de mysql_upgrade est généralement automatique.
  • Tous les clients et connecteurs (PHP, Perl, Python, Java, etc.) qui se connectaient à MySQL continueront à fonctionner sans modification (il n'est pas nécessaire de les recompiler). Cela fonctionne car MariaDB et MySQL utilisent le même protocole de client et les bibliothèques clientes sont compatibles au niveau binaire. Vous pouvez également utiliser vos anciens paquets de connecteurs MySQL avec MariaDB si vous voulez.

Mise à niveau sous Windows

Sous Windows, vous ne devez pas désinstaller MySQL puis installer MariaDB, cela ne fonctionnerait pas car la base de données préexistante ne sera pas trouvée.

Il suffit d'installer MariaDB et d'utiliser l'assistant de mise à niveau qui fait partie du paquetage d'installation qui est exécuté par l'installer MSI. Il est également possible d'exécuter manuellement la commande mysql_upgrade_service <nom_service> en ligne de commande.

Mise à niveau de my.cnf

Toutes les options du fichier de configuration my.cnf de MySQL doivent fonctionner correctement pour MariaDB.

Cependant, comme MariaDB a plus de fonctionnalités que MySQL, il faudra considérer ajuster un certain nombre de paramètres lors du passage à MariaDB.

  • MariaDB utilise par défaut le moteur de stockage Aria pour les fichiers temporaires internes, à la place de MyISAM. En cas d'utilisation importante de fichiers temporaires, il est recommandé de configurer
    1. aria-pagecache-buffer-size à la même valeur que key-buffer-size.
  • Si les tables MyISAM ne sont pas utilisées, il est possible de définir key-buffer-size à une valeur très faible, comme 64K.
  • Lorsque les applications se connectent et déconnectent souvent de MariaDB, il est recommandé de définir thread-cache-size au nombre couramment atteint de threads de requêtes simultanées. C'est important avec MariaDB car ce dernier utilise l'allocateur mémoire jemalloc qui a généralement de meilleures performances lors de l'exécution de threads par rapport à d'autres allocateurs de mémoire, sauf si un grand nombre de fils sont créés et détruits, auquel cas il passera beaucoup de ressources à essayer de gérer un stockage spécifique aux threads. Avoir un cache de thread va résoudre ce problème.
  • Dans le cas d'un grand nombre de connexions (> 100) qui exécutent principalement des requêtes dont le temps d'exécution est court, il faut envisager l'utilisation du thread pool. Par exemple en utilisant : thread_handling=pool-of-threads et thread_pool_size=128 qui pourraient mener à une amélioration notable des performances dans ce cas. Dans cet exemple, 128 devrait être d'environ 2 * nombre de cœurs disponibles sur la machine.

Autres choses à savoir

  • Les vues utilisant dans leur définition ALGORITHM=MERGE ou ALGORITHM=TEMPTABLE ont été accidentellement interverties entre MariaDB et MySQL. Il faudra recréer ces vues créées avec n'importe laquelle de ces définitions (voir MDEV-6916)
  • MariaDB dispose d'une version LGPL du connecteur C et du client Java. Si vous proposez une application qui prend en charge MariaDB ou MySQL, vous devriez envisager d'utiliser ceux-ci !
  • Vous devriez envisager d'essayer le moteur de stockage TokuDB ou d'autres nouveaux moteurs de stockage qui sont fournis avec MariaDB.

Voir également

Comments

Comments loading...