Passer de MySQL à MariaDB

Larry Ellison

Mise à jour 16/10/2011: Dans la première version j'utilisais l'ancienne version stable de MariaDB (5.1), suite au commentaire de Guillaume je l'ai mis à jour pour utiliser la version 5.2.

Depuis quelques temps, Oracle ne se sent plus pisser: Ils rachètent Sun, ils ferment les sources des logiciels qu'ils possèdent, ils font des procès pour gagner des thunes,...

Ils ont tué OpenOffice. Ils vont tuer Java. Donc quand ils ont acheté MySQL, les libristes l'avaient mauvaise. Pourquoi maintiendraient-ils un des plus grand concurrent de leur propre système de base de données ?

Ça n'a pas tardé d'ailleurs, la semaine dernière ils ont annoncé la sortie d'extensions « closed sources » pour MySQL. Donc le passage en mode « open core » : La base devrait rester ouverte mais des fonctions intéressantes vont devenir opaques... Inutile de se leurrer, ce n'est qu'un premier pas vers la mort de MySQL.

Heureusement, le libre est un monde capable de grandes choses (quand les gens ne passent pas leur temps à se troller et à forker pour des raisons d'ego) et un dérivé de MySQL a vu le jour: MariaDB.

En fait comme pour LibreOffice, ce sont de nombreux développeurs du logiciel d'origine qui sont parti continuer leur boulot ailleurs, loin d'Oracle. MariaDB c'est donc MySQL, mais en mieux et en toujours libre, la compatibilité étant évidemment de mise.

Pour remplacer le démon MySQL (au sens informatique et idéologique du terme) il existe un dépôt maintenu par le site OurDelta.org que l'on retrouve sur cette page: Dépot MariaDB Lucid Lynx (Ils ont aussi des dépôts pour Debian et CentOS). on peut utiliser le dépôt officiel MariaDB dans sa dernière version stable (la 5.2) :

sudo -s
apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 1BB943DB
echo '# MariaDB repository list - created 2011-10-16 09:36 UTC
# http://downloads.askmonty.org/mariadb/repositories/
deb http://ftp.osuosl.org/pub/mariadb/repo/5.2/ubuntu lucid main
deb-src http://ftp.osuosl.org/pub/mariadb/repo/5.2/ubuntu lucid main' > /etc/apt/sources.list.d/mariadb.list
apt-get update

Si vous avez Debian ou une autre version d'Ubuntu (ou que vous voulez utiliser MariaDB 5.1 ou 5.3) vous pouvez aller sur le générateur de sources.list de MariaDB.

Pensez à éteindre mysql après avoir fait vos sauvegardes (sudo services mysql stop) et lancez l'installation:

sudo apt-get install mariadb-server mariadb-client

Terminé ! Le fichier de conf est le même (/etc/mysql/my.cnf), le script de démarrage s'appelle toujours mysql mais si vous avez besoin d'en avoir le coeur net voila ce qu'on obtient en se connectant en ligne de commande:

mysql -p
Enter password:
Welcome to the MariaDB monitor.  Commands end with ; or g.
Your MariaDB connection id is 181
Server version: 5.2.9-MariaDB-mariadb102~lucid-log (MariaDB - http://mariadb.com/)

This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.

MariaDB [(none)]>

Un bémol toutefois, la compatibilité a beau être excellente il reste néanmoins quelques petits trucs qui ne marchent pas. Par exemple MariaDB n'aime pas la date 0000-00-00 00:00:00, or c'est une date par défaut utilisé dans pas mal de schémas (Wordpress par exemple). Pour une application qui a déjà sa base configurée ça ne posera pas de problème, en revanche elle n'arrivera pas à la créer dans le cas d'une nouvelle installation.

Pour y remédier, il suffit de supprimer le mode strict dans le fichier de configuration /etc/mysql/my.cnf en commentant la ligne suivante:

sql-mode = STRICT_TRANS_TABLES

J'imagine que vous êtes des gens responsables et donc il est inutile que je précise qu'il est recommandé de faire des backups et des tests avant d'opérer une migration sur un serveur en production.