Kleines Latenzproblem nach dem Einfügen/Aktualisieren mit ProxySQL und MySQL Cluster
P粉194919082
P粉194919082 2024-03-21 21:11:42
0
1
307

Wir verwenden MySQL Cluster mit ProxySQL und haben das folgende Setup:

  • Server 1 ist der Hauptserver, auf dem die Hauptdatenbank gehostet wird, und befindet sich in Europa
  • Server 2 ist ein Server in Asien, der lokale Benutzer bedient und eine schreibgeschützte Version der Datenbank enthält, die Server 1 aktualisiert, wenn Änderungen auftreten.

Die Frage ist diese: Benutzer auf Server 2 löst SQL UPDATE aus, UPDATE client SET name= 'New Name' WHERE id = 123. (Dieses Update wird an Server 1 gesendet, dann werden Updates an Server 2 gesendet)

Wenn wir im selben Codeblock den Datensatz auswählen (SELECT name FROM customer WHERE id =123), wird die Abfrage an den lokalen Server gesendet und das Ergebnis ist „alter Name“, es sei denn, wir pausieren den Code für 1 Sekunde ( zum Prüfen).

Eine Lösung, die wir uns überlegt haben, bestand darin, die Verbindung (PHP) zu ändern und direkt zu Server 1 zu gehen, um den Rest des Codeblocks zu erhalten, aber das verfehlt irgendwie den Zweck und ist alles andere als ideal (eine ziemlich große Codebasis muss aktualisiert werden).

Gibt es eine Lösung mit ProxySQL?

P粉194919082
P粉194919082

Antworte allen(1)
P粉122932466

为了防止查询路由到具有高复制延迟的从属服务器,您可以在表 mysql_server 列中设置阈值最大复制延迟 最大复制延迟。参考:max_replication_lag

max_replication_lag – 如果大于 0,ProxySQL 将 定期监控复制延迟以及是否超出配置的范围 阈值,它将暂时避开主机,直到复制赶上。

您还可以创建查询规则来拆分查询读写。 ref : ProxySQL 拆分读/写

重要proxysql-gtid-causal-reads 如果您使用的是 Mysql 版本 5.7.5 或更高版本,这可能主要解决您的问题。

Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!