Petit problème de latence après insertion/mise à jour à l'aide de proxySQL et MySQL Cluster
P粉194919082
P粉194919082 2024-03-21 21:11:42
0
1
359

Nous utilisons MySQL Cluster avec proxySQL et avons la configuration suivante :

  • Le serveur 1 est le serveur principal hébergeant la base de données principale et est situé en Europe
  • Le serveur 2 est un serveur en Asie qui dessert les utilisateurs locaux et contient une version en lecture seule de la base de données que le serveur 1 met à jour lorsque des modifications se produisent.

La question est la suivante : L'utilisateur sur le serveur 2 déclenche SQL UPDATE, UPDATE client SET name= 'New Name' WHERE id = 123. (Cette mise à jour est envoyée au serveur 1, puis le serveur 2 est mis à jour)

Dans le même bloc de code, si nous sélectionnons l'enregistrement (SELECT nom FROM clients WHERE id =123), la requête sera envoyée au serveur local et le résultat sera "ancien nom" sauf si nous mettons le code en pause pendant 1 seconde ( pour tester).

Une solution à laquelle nous avons pensé était de changer la connexion (PHP) et d'accéder directement au serveur 1 pour obtenir le reste du bloc de code, mais cela va à l'encontre de l'objectif et est loin d'être idéal (une base de code discrètement volumineuse doit être mise à jour).

Existe-t-il une solution impliquant proxySQL ?

P粉194919082
P粉194919082

répondre à tous(1)
P粉122932466

Pour éviter que les requêtes ne soient acheminées vers des serveurs esclaves avec une latence de réplication élevée, vous pouvez définir un seuil de latence de réplication maximale dans la colonne mysql_server de la table. Délai de réplication maximum. Référence : max_replication_lag

max_replication_lag – Si supérieur à 0, ProxySQL le fera Surveillez régulièrement la latence de réplication et vérifiez si elle dépasse les limites configurées. seuil, il évitera temporairement l'hôte jusqu'à ce que la réplication rattrape son retard.

Vous pouvez également créer des règles de requête pour diviser la lecture et l'écriture des requêtes. ref : ProxySQL fractionné lecture/écriture

Important : proxysql-gtid-causal-reads Si vous utilisez Mysql version 5.7.5 ou supérieure, cela peut principalement résoudre votre problème.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal