MySQL, MariaDB
- Check et Repair de toutes les bases
- Erreur "Can't connect to local MySQL server through socket"
- Remplacer MySQL par MariaDB sur CentOS6/7
- Cassandra sur MariaDB 10
Check et Repair de toutes les bases
MySQL a parfois besoin qu'on vérifie ses tables, qu'on les optimise ou qu'on les répare (après un arrêt brutal du serveur, une mise à jour).
On peut vérifier, analyser, optimiser ou réparer des tables en ligne de commande par :
CHECK TABLE xxx
ANALYZE TABLE xxx
OPTIMIZE TABLE xxx
REPAIR TABLE xxx
mais s'il y en a beaucoup, il vaut mieux utiliser mysqlcheck, qui agit sur une base complète, voire sur toutes les bases d'un serveur.
Réparer toutes les tables de la base "base_de_données":
mysqlcheck -r -uroot -p base_de_données
Optimiser toutes les tables de toutes les bases grâce aux options suivantes :
- -A = --all-databases
- -o = --optimize
mysqlcheck -Ao -uroot -p
Autres options intéressantes :
- -B = --databases DB1 [DB2] [DB3]...
- -a = --analyze
- -c = --check
- -r = --repair
Erreur "Can't connect to local MySQL server through socket"
Si cette erreur apparaît (évidemment) quand Mysql n'est pas lancé sur la machine linux, elle peut néanmoins se produire pour d'autres raisons.
- Le fichier socket n'est pas à l'endroit attendu
Le fichier peut être créé au lancement de MySQL soit dans /tmp, ou /var/lib/mysql/mysql.sock, ou (comme sur Debian Squeeze) dans /var/run/mysqld/mysqld.sock, ou ailleurs.
Si le client mysql local ne le trouve pas, on peut forcer le chemin sur la ligne de commande par
mysql --socket-path=/var/run/mysqld/mysqld.sock
ou
mysql -S /var/run/mysqld/mysqld.sock
On peut aussi forcer ce chemin pour le client dans /etc/my.cnf (ou /etc/mysql/my.cnf). Modifier ou créer un bloc [client] :
[client]
socket=/var/run/mysqld/mysqld.sock
- La résolution de "localhost" est erronée
Plus bizarre (il n'y a pas d'explication claire sur le lien entre une connexion locale par le fichier socket, et une connexion locale mais par le réseau sur "localhost", qui sont normalement deux façons distinctes de se connecter à mysql en local sur un serveur), ce message peut apparaître aléatoirement quand la résolution de "localhost" (adresse de loopback) se fait mal ou pas du tout. "Aléatoirement" signifie que la connexion peut se faire normalement au départ mais planter sans prévenir avec cette erreur.
Vérifier /etc/hosts. On doit y voir au minimum :
127.0.0.1 localhost
Autre erreur constatée : mauvaise adresse IP pour localhost :
127.0.1.1 localhost
Cette adresse, bien que correcte pour un loopback, gêne MySQL.
Remplacer MySQL par MariaDB sur CentOS6/7
Installation de MariaDB version 10
Créer un fichier pour les dépôts MariaDB /etc/yum.repos.d/MariaDB.repo (vérifier la dernière version disponible sur http://yum.mariadb.org/) :
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.3.5/centos74-amd64/
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
Pour CentOS 7, remplacer centos6-amd64 par centos7-amd64 ci-dessus
Si MySQL est installé, enlever les libs et le server qui peuvent causer des conflits (ça ne touche pas aux bases de données, évidemment).
systemctl stop mysql
ou
systemctl stop mariadb
rpm -e --nodeps mariadb mariadb-libs mariadb-server # MariaDB5.5 installé par défaut sur CentOS7 - ne pas utiliser "yum remove" pour éviter la désinstallation de dépendances comme Postfix ou Exim
Installer MariaDB 10:
yum install MariaDB-server MariaDB-shared
systemctl start mysql # Attention, MariaDB crée un fichier d'init sans "d" au bout
Paramétrer la sécurité:
mysql_secure_installation
Mettre à jour les bases existantes :
mysql_upgrade -p
Mise à jour MariaDB 10.0 -> 10.1
Il suffit de modifier le dépôt, et désinstaller la 10.0 (requis par le paquet 10.1 qui sinon indique une erreur)
systemctl stop mysql
yum remove MariaDB-server
Modifier le dépôt :
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.0/centos6-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
Et réinstaller
yum install MariaDB-server MariaDB-shared
Cassandra sur MariaDB 10
Cassandra est une base NoSQL développée par la fondation Apache. C'est une base de type clés-valeurs, conçue pour fonctionner en cluster et gérer des quantités massives de données.
Le connecteur Cassandra est disponible en standard dans MariaDB 10, mais non installé.
Installation de Cassandra
TODO
Exemple ici : https://codepre.com/fr/como-instalar-cassandra-en-centos-6.html
Installation du connecteur de MariaDB
yum -y install MariaDB-cassandra-engine
Se connecter à MariaDB, vérifier les "moteurs" disponibles
SHOW ENGINES;
Activer le connecteur Cassandra
INSTALL SONAME 'ha_cassandra';
SHOW ENGINES;
On peut ensuite créer une "vue" dans MariaDB vers une "column-family" (= table) d'un "keyspace" (= schéma) de Cassandra.
https://mariadb.com/kb/en/mariadb/cassandra-storage-engine-overview/