Remplacer MySQL par MariaDB
Cet article présente comment remplacer MySQL par MariaDB quand on utilise Dotdeb. En effet, Dotdeb propose déjà MySQL en version 5.6, apt refuse donc de remplacer MySQL 5.6 par une version de MariaDB « inférieure », c.a.d en 5.5 ou par une supérieure en 5.10.
Pré-Requis
Sauvegardez vos bases de données !! Voilà, c’est dit, normalement, la migration est transparente, dans les faits, on n’est jamais à l’abri de mauvaises surprises. Un dump avec MySQL comme présenté dans un script d’un précédent tuto fait l’affaire.
On conserve aussi une copie du fichier de config de MySQL, /etc/mysql/my.cnf
.
Repo MariaDB
On va simplement rajouter les repos de MariaDB aux sources du serveur en suivant les consignes fournies.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | root@server:~# cat /etc/apt/sources.list.d/mariadb.list # https://downloads.mariadb.org/mariadb/repositories/ # MariaDB 10.0 repository list - created 2015-01-09 21:23 UTC # http://mariadb.org/mariadb/repositories/ deb http://nwps.ws/pub/mariadb/repo/10.0/debian wheezy main deb-src http://nwps.ws/pub/mariadb/repo/10.0/debian wheezy main root@server:~# apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xcbcb082a1bb943db Executing: gpg --ignore-time-conflict --no-options --no-default-keyring --secret-keyring /tmp/tmp.glim2OsVxR --trustdb-name /etc/apt//trustdb.gpg --keyring /etc/apt/trusted.gpg --primary-keyring /etc/apt/trusted.gpg --keyring /etc/apt/trusted.gpg.d//debian-archive-jessie-automatic.gpg --keyring /etc/apt/trusted.gpg.d//debian-archive-jessie-security-automatic.gpg --keyring /etc/apt/trusted.gpg.d//debian-archive-jessie-stable.gpg --keyring /etc/apt/trusted.gpg.d//debian-archive-squeeze-automatic.gpg --keyring /etc/apt/trusted.gpg.d//debian-archive-squeeze-stable.gpg --keyring /etc/apt/trusted.gpg.d//debian-archive-wheezy-automatic.gpg --keyring /etc/apt/trusted.gpg.d//debian-archive-wheezy-stable.gpg --recv-keys --keyserver keyserver.ubuntu.com 0xcbcb082a1bb943db gpg: requesting key 1BB943DB from hkp server keyserver.ubuntu.com gpg: key 1BB943DB: public key "MariaDB Package Signing Key <package-signing-key@mariadb.org>" imported gpg: no ultimately trusted keys found gpg: Total number processed: 1 gpg: imported: 1 root@server:~# apt-get update |
Mise à Jour avec APT
Comme expliqué, un simple apt-get install
ne marche pas avec un message assez inquiétant.
1 2 3 4 5 | root@vps62429:~# apt-get install mariadb-server The following packages have unmet dependencies: mariadb-server : Depends: mariadb-server-10.0 (= 10.0.15+maria-1~wheezy) but it is not going to be installed E: Unable to correct problems, you have held broken packages. |
On va donc d’abord vérifier les packages mysql installés, surtout les modules MySQL de perl, php, python, etc.
1 2 3 4 5 6 7 8 9 10 11 12 13 | root@server:~# dpkg --get-selections | grep mysql libdbd-mysql-perl install libmysqlclient-dev install libmysqlclient18:amd64 install mysql-client-5.6 install mysql-client-core-5.6 install mysql-common install mysql-common-5.6 install mysql-server install mysql-server-5.6 install mysql-server-core-5.6 install php5-mysql install python-mysqldb install |
On supprime les packages mysql-server et mysql-common. Là l’opération est un peu brutale :
1 2 3 4 5 6 7 8 9 | root@server:~# apt-get remove mysql-common mysql-server Reading package lists... Done Building dependency tree Reading state information... Done The following packages will be REMOVED: libdbd-mysql-perl libmysqlclient-dev libmysqlclient18 mysql-client-5.6 mysql-common mysql-common-5.6 mysql-server mysql-server-5.6 php5-mysql python-mysqldb 0 upgraded, 0 newly installed, 10 to remove and 0 not upgraded. After this operation, 114 MB disk space will be freed. Do you want to continue [Y/n]? Y |
Et on peut maintenant réinstaller MariaDB et php5-mysql qui saute avec la manip.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | class="lang: bash;" title="Installation de MariaDB" root@vps62429:~# apt-get install mariadb-server mariadb-common php5-mysql Reading package lists... Done Building dependency tree Reading state information... Done The following extra packages will be installed: libdbd-mysql-perl libmariadbclient18 libmysqlclient18 mariadb-client-10.0 mariadb-client-core-10.0 mariadb-server-10.0 mariadb-server-core-10.0 Suggested packages: tinyca mariadb-test The following NEW packages will be installed: libdbd-mysql-perl libmariadbclient18 libmysqlclient18 mariadb-client-10.0 mariadb-client-core-10.0 mariadb-common mariadb-server mariadb-server-10.0 mariadb-server-core-10.0 php5-mysql 0 upgraded, 10 newly installed, 0 to remove and 0 not upgraded. Need to get 0 B/37,3 MB of archives. After this operation, 130 MB of additional disk space will be used. Do you want to continue [Y/n]? Y |
Vérifications
Normalement, MariaDB a bien géré la conversion. Pour autant :
- Vérifiez-bien qu’il ne manque aucun module (ex php5-mysql)
- Vérifiez que les bases de données n’ont pas été corrompues !
Notez bien que cette migration vers MariaDB 10.0 est un aller-simple. Il n’est plus possible ensuite de convertir les BDDs, sauf à revenir sur les dumps réalisés avant.
Aussi, n’hésitez pas à regarder les fonctionnalités de TokuDB qui est maintenant packagé avec les dernières versions de MariaDB.