MySQL

Configuration

Recommandations :

  • Configurer le innodb_buffer_pool_size à 80% de la mémoire disponible
  • Configurer le innodb_file_per_table à 1 pour avoir un fichier par table

Exemple :

[mysqld]
innodb_buffer_pool_size = 800M
innodb_file_per_table = 1

Gestion des processus

Lister les processus :

$ mysqladmin processlist -uroot -p

Tuer un processus :

$ mysqladmin kill PROCESS_ID

Gestion des utilisateurs

Afficher la liste des utilisateurs :

SELECT host,user,password FROM mysql.user;

Afficher les droits d’un utilisateur :

SHOW GRANTS FOR 'username'@'hostname';

Supprimer un utilisateur :

DROP USER 'username'@'hostname';

Ajouter un utilisateur :

CREATE USER 'username'@'hostname' IDENTIFIED BY 'toto';

Modifier le mot de passe d’un utilisateur :

SET PASSWORD FOR 'username'@'hostname' = PASSWORD('my-password')

Sécuriser après une installation :

# /usr/bin/mysql_secure_installation

Maintenance

InnoDB tue MySQL lors du démarrage

Démarrer MySQL en utilisant les Recovery Modes. On démarre à 1, si la base de données crash toujours, on augmente ce nombre jusqu’à ce que la base de données démarre. Dans le fichier de configuration de MySQL :

[mysqld]
innodb_force_recovery = 2

A partir de là, on peut chercher une table incohérente qui pourrait causer le crash :

$ mysqlcheck --all-databases -p

Si toutes les tables sont valides, on peut tenter un backup/restore de la DB complète.

Sauvegarde et restauration

Sauvegarder toute la base de données :

$ mysqldump --all-databases -p"$ROOT_PASSWORD" > dump.sql

Restaurer toutes les données (Attention : cette commande détruira les tables et les recréera si elles existent) :

$ mysql -p"$ROOT_PASSWORD" < dump.sql

Réplication MySQL

Pour valider la réplication sur un noeud utilisant WSREP :

SHOW STATUS LIKE 'wsrep%';

Vérifier les champs :

  • wsrep_local_state_comment
  • wsrep_incoming_addresses
  • wsrep_desync_count

Export des métriques dans Prometheus

Utilisation du mysqld_exporter avec des dashboard proposés par Percona.