MariaDB
MariaDB est une alternative plus optimisée à MySQL.
Migration MariaDB 5.5 à MariaDB 10.2
La version 5.5 (stable) est la version par défaut fournie sur toutes les distributions. Toutefois certaines fonctionnalités nécessite une version plus récente.
La migration vers la dernière version peut être effectuée avec la procédure suivante :
Sauvegarde
Réaliser une sauvegarde complète de la base de donnée.
mysqldump --all-databases
Arrêt des services
Arrêter l'ancien service et le désactiver.
systemctl stop mariadb systemctl disable mariadb
Installation du dépôt
Installer le dépôt comformément à la documentation de MariaDB https://downloads.mariadb.org/mariadb/repositories/.
Exemple avec Centos7, il faut mettre dans le dossier /etc/yum.repo.d/mariadb.repo :
- mariadb.repo
# MariaDB 10.2 CentOS repository list - created 2018-02-06 15:53 UTC # http://downloads.mariadb.org/mariadb/repositories/ [mariadb] name = MariaDB baseurl = http://yum.mariadb.org/10.2/centos7-amd64 gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB gpgcheck=1
Installation packages
Mettre à jour les packages :
yum install MariaDB-Server
Vérification
Vérifier le bon fonctionnement de MariaDB avec la commande :
systemctl status mysql
Charset
Niveau serveur
Le charset par défaut est dans les variables MariaDB :
SET character_set_server = 'utf8'; SET collation_server = 'utf8_general_ci';
Niveau Database
Il peut être défini à la création de la base, ou bien modifié par la suite avec la commande :
ALTER DATABASE czech_slovak_names COLLATE = 'utf8_general_ci';
Niveau des tables
ALTER TABLE MyTable CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
Le script suivant peut être utile pour changer toutes les tables d'une base de donnée :
- update.sh
#!/bin/bash DATABASE="myDatabase" CHARSET="utf8" COLLATE="utf8_general_ci" IFS=$'\n' QUERY="SELECT CONCAT('ALTER TABLE \`$DATABASE\`.\`', TABLE_NAME,'\` CONVERT TO CHARACTER SET $CHARSET COLLATE $COLLATE;') FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='$DATABASE' AND TABLE_TYPE='BASE TABLE' AND TABLE_COLLATION!='$COLLATE'" for MYSQL_CMD in `mysql -B -e "$QUERY"`; do echo "$MYSQL_CMD" mysql -B -e "$MYSQL_CMD" done