proxySQL および MySQL Cluster を使用した挿入/更新後のわずかな遅延の問題
P粉194919082
P粉194919082 2024-03-21 21:11:42
0
1
344

私たちは proxySQL で MySQL Cluster を使用しており、次のセットアップを行っています:

  • サーバー 1 はマスター データベースをホストするメイン サーバーであり、ヨーロッパにあります
  • サーバー 2 は、ローカル ユーザーにサービスを提供するために使用されるアジアのサーバーです。このサーバーには、変更が発生したときにサーバー 1 が更新する読み取り専用バージョンのデータベースが含まれています。

問題は次のとおりです: サーバー 2 のユーザーが SQL UPDATE、UPDATE クライアント SET name= 'New Name' WHERE id = 123 をトリガーします。 (この更新はサーバー 1 に送信され、次にサーバー 2 に送信されます)

同じコード ブロックで、レコード (SELECT name FROM Customers WHERE id =123) を選択すると、クエリはローカル サーバーに送信され、コードを 1 分間一時停止しない限り、結果は「古い名前」になります。 2 番目 (テスト用) 。

私たちが考えた解決策の 1 つは、接続 (PHP) を変更し、サーバー 1 に直接アクセスして残りのコード ブロックを取得することでした。しかし、それは目的を達成できず、理想とは程遠いものです (静かに大規模なコード ベースは更新が必要です) )。

proxySQL に関する解決策はありますか?

P粉194919082
P粉194919082

全員に返信(1)
P粉122932466

レプリケーション レイテンシが高いスレーブ サーバーにクエリがルーティングされるのを防ぐために、テーブル mysql_server 列に最大レプリケ​​ーション レイテンシのしきい値を設定できます。 レプリケーションの最大遅延。参照: max_replication_lag

max_replication_lag – 0 より大きい場合、ProxySQL は レプリケーションの遅延と、設定された制限を超えているかどうかを定期的に監視します。 しきい値に達すると、レプリケーションが追いつくまで一時的にホストが回避されます。

クエリ ルールを作成して、クエリの読み取りと書き込みを分割することもできます。参照: ProxySQL 分割読み取り/書き込み

重要: proxysql-gtid-causal-reads Mysql バージョン 5.7.5 以降を使用している場合は、主にこれで問題が解決される可能性があります。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート