Resynchronisation d’un noeud avec MariaDB Galera Cluster

Lorsqu’un noeud a du mal à se synchroniser avec le reste du cluster, il est plus simple de le remettre à zéro. Pour faire cette opération, il suffit d’effacer les données pour que le noeud se resynchronise avec le cluster :

Cette opération peut prendre du temps, et un timeout peut survenir au démarrage du cluster. Il peut être nécessaire de modifier la configuration du service pour augmenter le timeout au démarrage :

Ajouter cette ligne en fin de fichier :

 

 

Mysql, quelques outils pour le tuning

Etant un utilisateur de mysql (et maintenant de plus en plus de mariadb) sur de nombreux serveurs avec de nombreuses bases de données, j’ai un besoin crucial de pouvoir suivre et améliorer la configuration de nos serveurs.  A moins d’être un expert de mysql et de connaître la liste de tous les paramètres à surveiller durant l’exécution, voici une petite liste d’outil qui permet de synthétiser les informations issues de Mysql et pour certains de proposer des pistes de tuning.

I L’outil de tuning le plus connu : Mysql Tuning script

Le script est disponible ici : https://launchpad.net/mysql-tuning-primer.  L’outil est un script shell qui effectue des opérations de SHOW VARIABLE xxx sur le serveur de base de données et en fonction de différentes valeurs en propose une évaluation avec le cas échéant des conseils d’optimisation.

Le script propose des recommandations pour les points suivants:

  • SLOW QUERIES
  • BINARY UPDATE LOG
  • WORKER THREADS
  • MAX CONNECTIONS
  • INNODB STATUS
  • MEMORY USAGE
  • KEY BUFFER
  • QUERY CACHE
  • SORT OPERATIONS
  • JOINS
  • OPEN FILES LIMIT
  • TABLE CACHE
  • TEMP TABLES
  • TABLE SCANS
  • TABLE LOCKING

II Suivi d’exécution : Mytop

Il s’agit d’un outil proche dans l’esprit de top ou de iftop qui permette de surveiller les process en cours de fonctionnement ou pour iftop les flux réseaux sur une interface. L’outil est disponible dans les dépôts officiels ubuntu, il s’installe simplement via la commande :

Il est également disponible depuis l’adresse : http://jeremy.zawodny.com/mysql/mytop/

L’outil affiche un état général de la performance Mysql. L’écran se décompose en deux parties. En haut sont affichées les informations sur le temps d’exécution total de Mysql, le nombre de requêtes, la répartition select/insert/update/delete … Dans la partie du dessous, la liste des threads actifs avec l’utilisateur utilisé pour la connexion, la base de données accédée, le temps total et l’instruction courante.

Mytop affichage des performances de Mysql

 

III Performance et optimisation : MysqlTuner

MySQLTuner est un script perl qui évalue la configuration de Mysql et propose des recommandations d’optimisation. Sur ubuntu il est très simple à installer puisque disponible dans les répository :

Resynchronier base de données mysql en mode réplication

Replication mysqlLors de la réplication d’un serveur maitre vers un serveur esclave, il arrive que le serveur esclave perde l’intégrité des données par rapport au serveur maitre. Dans ce cas, le plus simple est de refaire un point de reprise complet depuis un dump du serveur. La solution la plus rapide et la plus simple est de faire un dump de la base de données à synchroniser en utilisant les options de mysqldump permettant de positionner les informations de point de reprise.

Attention le lancement de cette commande avec ces options verrouille l’accès à la base maitre, elle est inutilisable durant le temps de l’exécution de la commande !

Sur la base de données source (serveur maitre):

Sur le serveur esclave, après transfert du fichier de dump :

Continue reading

Reinitialiser le mot de passe root de mysql

Comment faire pour récupérer le mot de passe root de MySQL lorsque celui-ci a été perdu?

Voici une petite procédure qui fonctionne très bien sous linux :

  1. Arrêter le service MySQL (/etc/init.d/mysqld stop suivant votre distribution)
  2. Démarrer le démon mysqld en le lançant en ligne de commande avec l’option –skip-grant-tables. De cette manière il ne demande pas le mot de passe.
  3. Se connecter à mysql avec l’utilisateur root (ligne de commande mysql –user=root)
  4. Mettre à jour le mot de passe root avec la commande SQL suivante :
  5. Quitter le client, arrêter le démon et redémarrer le service MySQL.

Activer innoDb sur mysql

InnoDB est un moteur de stockage utilisable au sein de MySQL il est utilisé par de nombreuses applications pour sa capacité à gérer les transactions. En voulant installer magento sur un serveur hébergé, je me suis aperçu que le moteur n’était pas activé. Après une brève recherche sur google j’ai trouvé les informations pour activer le moteur.

La configuration se fait dans le fichier de configuration de MySQL, my.cnf.

# Comment the following if you are using InnoDB tables
# the following is the InnoDB configuration
# if you wish to disable innodb instead
# uncomment just the next line
#skip-innodb
innodb_buffer_pool_size = 16M
innodb_additional_mem_pool_size = 2M
innodb_data_home_dir            = /home/mysql/innodb/
innodb_log_arch_dir             = /home/mysql/innodb/
innodb_log_group_home_dir       = /home/mysql/innodb/
innodb_data_file_path = ibdata1:10M:autoextend:max:128M
innodb_log_file_size = 5M
innodb_log_buffer_size = 8M
set-variable = innodb_log_files_in_group=2
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 50
 

Les paramètres peuvent être modifiés suivant les besoins de votre utilisation.

Ensuite il suffit de redémarrer le service mysql et voici le résultat si le moteur InnoDB a été activé :

innodb.jpg

 

Accéder à MySQL via des services REST en PHP

 Qu’est ce que REST ?

REST n’est pas un protocole (contrairement à SOAP), il s’agit d’une méthodologie décrite dans une thèse de Roy Thomas Fielding "Architectural Styles and the Design of Network-based Software Architectures". Cette méthodologie préconise d’utiliser les standards du web (Protocole HTTP, XML) pour mettre à disposition des services sur le WEB.

Un petit projet pour se simplifier le travail

Le projet suivant PHPRestSQL hébergé sur Sourceforge permet de rendre accessible les tables d’une base de données Mysql via des requêtes HTTP.

 Un projet très interessant mais un peu limité au niveau de la sécurité, surtout si les écritures dans la base de données sont possible.