Mysql
減輕單主/多從設置中的 MySQL 複製延遲
對於需要高可用性的特定 Web 應用程序,我正在考慮通過使用一個“寫入”主伺服器和多個“讀取”從屬伺服器設置 MySQL 複製來擴展(如此處所述http://dev.mysql.com/doc/refman /5.1/en/replication-solutions-scaleout.html)。
我唯一的問題是如何減輕主從之間的複制延遲?例如,假設使用者發布了一個項目(寫給主人),然後很快想要查看他發布的項目(從其中一個奴隸那裡閱讀)。我可以採取什麼有效的解決方案來確保來自其中一個從屬設備的讀取操作將始終具有任何先前完成的對主設備的寫入操作的所有內容?
由於“本機”MySQL 使用非同步複製,因此沒有系統方式來保證或強制從屬伺服器在任何給定時間應用主伺服器的語句。
半同步複製通過至少確保您的語句被從屬設備辨識來縮短此延遲時間 - 但並沒有確保它已應用於您的從屬設備。
這是一個常見的問題。最終,您的應用程序需要具有複製意識,以便您的查詢“知道”它是在主伺服器或從伺服器上執行的。在您的情況下,常見的解決方案是確保
SELECT
緊跟在寫入操作之後的查詢在 master 上執行。您可以選擇使用同步解決方案:MySQL NDB Cluster 或 Galera Replication。即使使用 Galera,您也需要特殊配置來確保一致的讀寫成功。