web-dev-qa-db-fra.com

MySQL peut-il être remplacé de manière transparente par MariaDB ou y a-t-il des choses à changer dans ce cas?

Si je remplace un serveur MySQL 5.1 par un serveur MariaDB (mémoires Maria & XtraDB) au lieu de MySQL (MyISAM & InnoDB), la plupart des logiciels clients MySQL (y compris les applications créées avec PHP 5.2 et Java SE 1.6). ..

  1. reste-t-il au travail sans aucun changement (éventuellement avec des régressions mineures)?
  2. Ou devrai-je remplacer/reconfigurer les pilotes client (comme utiliser une autre classe de pilote JDBC et une chaîne de connexion)?
  3. Ou devrai-je même changer le code de l'application?
27
Ivan

http://kb.askmonty.org/v/mariadb-versus-mysql

Tous les connecteurs MySQL (PHP, Perl, Python, Java, MyODBC, Ruby, connecteur MySQL C, etc.) ne changent pas avec MariaDB.

37
Qwerty

Mariadb est utilisé depuis plusieurs années pour remplacer MySQL d'Oracle. C'est plus rapide et très fiable. Nécessite juste peu d'attention dans apt, mais rien de grave. En outre, il y a un petit détail avec Mariadb; [erreur] "Avertissement PHP: mysql_connect (): les en-têtes et la version mineure de la bibliothèque client ne correspondent pas" dans les journaux. Je n'ai pas trouvé d'autre solution à cela que de commencer à compiler manuellement: askMonty

$php -i | grep 'Client API'

Client API version => 5.3.7-MariaDB
Client API library version => 5.3.7-MariaDB
Client API header version => 5.1.61
Client API version => 5.3.7-MariaDB
1
Peter

reste-t-il au travail sans aucun changement (avec des régressions mineures peut-être)?

Vous ne devriez pas avoir de problèmes tant que vous remplacez par la même version. Si vous utilisez actuellement MySQL 5.1, vous pouvez le remplacer par MariaDB 5.1. Si vous utilisez 5.5, utilisez celui qui correspond. MariaDB v5.2 et v5.3 et versions améliorées de 5.1.

Ou devrai-je remplacer/reconfigurer les pilotes clients (comme utiliser une autre classe de pilotes JDBC et une chaîne de connexion)?

Tu ne devrais pas. MySQL et MariaDB utilisent tous deux le même protocole et la même syntaxe, mais il peut y avoir quelques exceptions dans certains cas. L'URL cité dans une autre réponse est une excellente ressource: http://kb.askmonty.org/v/mariadb-versus-mysql

En ce qui concerne les permis de conduire, il existe des différences si vous envisagez de distribuer votre projet commercialement. Dans ce cas, je vous recommande de vérifier les termes de la licence et, si vous avez des problèmes, utilisez les versions MariaDB/SkySQL des connecteurs comme suggéré dans une autre réponse. Vérifiez http://www.skysql.com/downloads/Java-cc-connectors-mariadb pour plus de détails.

Ou devrai-je même changer le code de l'application?

Le code de l'application doit rester inchangé.

1
seattlegaucho

Juste un petit retour sur la compatibilité avec le pilote mysql/CodeIgniter. J'ai rencontré les problèmes sur les types d'attributs BIT il y a quelques minutes.

La valeur n'a pas été retransmise du serveur. Il était toujours vide . J'utilisais la configuration standard de la base de données CI qui utilise le pilote "mysql" . Après la modification du pilote dans le fichier database.php, le problème "mysqli" a été résolu.

Juste la tête haute qu'il peut y avoir quelques différences si vous utilisez l'ancien pilote mysql.

$db['default']['dbdriver'] = 'mysqli';

API client MariaDB version 5.5.40

0
Tom