# 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 :

```SQL
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 :

<div class="mw-body-content" id="bkmrk--a-%3D---all-databases"><div class="mw-body-content"><div class="mw-content-ltr" dir="ltr" lang="fr"><div class="mw-parser-output">- -A = --all-databases
- -o = --optimize

</div></div></div></div>```
mysqlcheck -Ao -uroot -p
```

Autres options intéressantes :

<div class="mw-body-content" id="bkmrk--b-%3D---databases-db1"><div class="mw-content-ltr" dir="ltr" id="bkmrk--b-%3D---databases-db1-0" lang="fr"><div class="mw-parser-output">- -B = --databases DB1 \[DB2\] \[DB3\]...
- -a = --analyze
- -c = --check
- -r = --repair

</div></div></div>

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

<div class="mw-body-content" id="bkmrk-le-fichier-socket-n%27"><div class="mw-body-content"><div class="mw-content-ltr" dir="ltr" lang="fr"><div class="mw-parser-output">- Le fichier socket n'est pas à l'endroit attendu

</div></div></div></div>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
```

<div class="mw-body-content" id="bkmrk-la-r%C3%A9solution-de-%22lo"><div class="mw-body-content"><div class="mw-content-ltr" dir="ltr" lang="fr"><div class="mw-parser-output">- La résolution de "localhost" est erronée

</div></div></div></div>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

## <span class="mw-headline" id="bkmrk-installation-de-mari-0">Installation de MariaDB version 10</span>

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/](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
```

## <span class="mw-headline" id="bkmrk-mise-%C3%A0-jour-mariadb--0">Mise à jour MariaDB 10.0 -&gt; 10.1</span>

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/](http://www.liquidweb.com/kb/how-to-install-the-cassandra-storage-engine-for-mariadb-10-0-on-centos-6/)

## <span class="mw-headline" id="bkmrk-installation-de-cass-0">Installation de Cassandra</span>

TODO  
Exemple ici : [https://codepre.com/fr/como-instalar-cassandra-en-centos-6.html](https://codepre.com/fr/como-instalar-cassandra-en-centos-6.html)

## <span class="mw-headline" id="bkmrk-installation-du-conn-0">Installation du connecteur de MariaDB</span>

```
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/](https://mariadb.com/kb/en/mariadb/cassandra-storage-engine-overview/)