MySQL, MariaDB

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é.

source : http://www.liquidweb.com/kb/how-to-install-the-cassandra-storage-engine-for-mariadb-10-0-on-centos-6/

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/