Mysql
使用多主 innodb 集群時的應用程序注意事項
我正在開發一個可擴展的雲應用程序,我希望使用多主集群在需要時能夠更好地水平擴展。我有使用單一主集群配置的經驗。
在多主模式下,組複製從節點到節點略有延遲。因此,例如,兩個連續的請求,比如 PUT /users/1 和 GET /users/1,可以成功插入,但直到一段時間後才能選擇。
不一定特定於上述問題,是否有既定的方法來設計建構在多主集群之上的應用程序?
我考慮讓每個使用者會話在會話的整個生命週期內都堅持使用其中一個數據庫。這樣,創建的任何內容都將在後續請求中可用,因為它將請求同一個集群節點。
這可以通過連接到具有 id 的節點來實現,
sessionId % n
其中 n 是節點數。然而,實際上這樣做似乎相當脆弱和不標準。所以我想知道是否有更好的、既定的方法來實現這種一致性。謝謝!
不幸的是,簡短的回答是否定的。您是否考慮過改用 Galera?它具有成熟的同步複製,幾乎可以保證跨節點的一致性。我會極力推薦它。本文將您現在使用的內容與 Galera 選項進行了比較:https ://www.percona.com/blog/2017/02/24/battle-for-synchronous-replication-in-mysql-galera-vs-group-replication /
否則,您將不得不像您描述的那樣開發一個醜陋的解決方案,並且在節點故障的情況下它仍然不會 100% 足夠。