====== 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 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 :
#!/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