From af6c2131ec064746b15bb064d84cd7c3b6c4b00f Mon Sep 17 00:00:00 2001 From: mtrossevin Date: Fri, 10 Jul 2020 15:15:07 +0200 Subject: [PATCH] Add filter description and some advanced configuration --- HowtoMaxScale.md | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/HowtoMaxScale.md b/HowtoMaxScale.md index 8d0401fb..0e697f5f 100644 --- a/HowtoMaxScale.md +++ b/HowtoMaxScale.md @@ -112,6 +112,17 @@ MariaDB MaxScale à plusieurs types de routages possibles, les principaux sont: Il y a d'autres router mais ils sont soit en béta soit très instables si non configurés avec une bonne connaissance du contenu des base de donnés. +### Filtres + +MaxScale peut faire passer les statements SQL par des filtres avant de les envoyés au routeur et donc au serveurs MySQL, ces filtres permettent de bloquer certaines requêtes, de conseiller au routeur d'envoyer des requêtes sur un certain serveur, ou de modifier le retour des serveurs. + +* `dbfwfilter`: Permet de bloquer des requêtes de manière plus souple que le systême de GRANT traditionnel. Le filtre est considéré comme une solution par le meilleur effort et à pour but principal de protéger contre les erreurs et non les attaques. +* `insertstream`: (⚠ : Expérimental) Permet de convertir des `INSERT` en masse en une seul commande `LOAD DATA LOCAL INFILE` afin de réduire l'utilisation du traffic et augmenter la vitesse des insertions de masse. +* `cache`: (⚠ : N'est pas au courant des droits utilisateurs) Permet de cacher le retour d'un `SELECT` tant qu'il n'y a pas eu d'écriture afin d'augmenter la vitesse de retour d'un `SELECT` identique. +* `tee`: Permet de copier une requête et de l'envoyée vers un autre service. +* `throttle`: Permet de limité la fréquence des requêtes. +* `binlogfilter`: Permet de faire de la réplication partiel avec `binlogrouter`. + ## Utilisation Pour utiliser MariaDB MaxScale il suffit de l'utiliser comme un serveur MySQL normal: @@ -119,4 +130,10 @@ Pour utiliser MariaDB MaxScale il suffit de l'utiliser comme un serveur MySQL no ~~~ $ mysql --host --user=USER --password base_de_donnée ~~~ +## Configuration avancée +### Limiter le retard visible + +Cela se fait au niveau du routeur et n'est possible que pour le routeur `Readwritesplit`, `readconnroute` étant trop léger pour permettre ce genre de configurations. + +Pour que le routage ne se fasse pas du tout sur un serveur secondaire ayant un trop grand retard il faut préciser la valeur de l'option `max_slave_replication_lag` avec le nombre de secondes de lags autorisées. Pour que le routeur "attende" que le serveur secondaire puisse retourner une valeur consistente lors d'une lecture suivant des modifications de données, il faut définir l'option `causal_reads` à `true` et que les serveurs ai le paramètre `session_track_system_variables` défini à `last_gtid`.