回覆列表
  • 1 # 狂客說技術

    這個問題問得好!

    工作中遇到過不少這個問題,由於資料庫讀者分離或者主從同步都需要一定時間,由於

    怎麼解決?

    程式碼中規避

    寫庫完成之後返回資料透過快取處理,適當允許不可重複讀!

    資料庫主從配置最佳化

    僅用從庫的binlog同步,logs-slave-updates不記錄主從產生日誌等方式減小主從同步壓力。

    提高硬體配置,確保主從資料庫在同一個區域網

    提高主從資料庫物理機配置,包括IO,頻寬,CPU等,使用SSD。注意儘量在同一個區域網部署主從伺服器。

    沒有時間細化了,大致上也就這些吧,從程式碼到架構到硬體,這也是我們考慮問題的常規思路!望採納!

  • 2 # 網路圈

    我們知道,大型網站為了緩解高併發訪問,往往會給網站做負載均衡,但這遠遠不夠。我們還需要對資料庫層做最佳化,因為大量的資料查詢單靠一臺資料庫伺服器很難抗得住,這時候我們就需要做讀寫分離了。

    什麼是讀寫分離?

    所謂的“讀寫分離”是指將資料庫分為了主庫和從庫,其中主庫用來寫入資料,(多個)從庫用來讀取資料。

    讀寫分離是為了解決什麼問題的?

    就大多數網際網路專案而言,絕大多數都是“讀多寫少”,所以讀操作往往會引發資料庫的效能瓶頸,為了解決這個問題,我們就將對資料的讀操作和寫操作進行分離,避免讀寫鎖帶來的衝突,從而提升了資料庫的效能。

    通俗的說,讀寫分離是為了解決資料庫的讀寫效能瓶頸的。

    MySQL讀寫分離的原理

    MySQL讀寫分離是基於主從同步的,因為讀寫分離是將資料讀/寫操作分流至不同的資料庫節點伺服器進行操作,這就涉及到了主庫和從庫的資料同步問題。

    MySQL主從同步的原理是:主庫將變更記錄寫入binlog日誌(二程序日誌),然後從庫中有一個IO執行緒將主庫的binlog日誌Copy過來寫入中繼日誌中,從庫會從中繼日誌逐行讀取binlog日誌,然後執行對應的SQL,這樣一來從庫的資料就和主庫的資料保持一致了。

    這裡需要留意的是,從庫同步資料時是序列而非並行操作的!!!即使在主庫上的操作是並行的,那在從庫上也是序列執行。所以從庫的資料會比主庫要慢一些,尤其是在高併發場景下延遲更為嚴重!

    MySQL主從同步延時問題如何解決?

    上面講到了,之所以導致MySQL主從同步存在延遲的原因是從庫同步資料時是序列而非並行執行的。

    要解決主從同步延遲,有幾個可行方案供大家參考:

    1、我們可以使用並行複製來處理同步。什麼是並行複製呢?並行複製指的就是從庫開啟多個執行緒並行讀取relay log 中的日誌;

    2、對實時性要求嚴格的業務場景,寫操作後我們強制從主庫中讀取;

  • 3 # 一席話君

    首先排查原因,對症下藥:

    一 網路I/O:

    首先檢查伺服器的網路通訊質量,主從伺服器的I/O負載,網路質量不好,或者I/O負載過高會導致主從同步延時。

    二 伺服器硬體:

    看看伺服器硬體是否能更上系統的併發和實時要求,如果跟不上,加資源。

    三 系統檢查:

    系統併發過高的話,適當提高從庫拉取日誌的執行緒數,改進讀寫快取策略。如果是多臺從庫,為了避免從庫拉取日誌造成主庫負載過高,可以用中繼的方式拉取日誌。

    本人專注網際網路最新技術,大資料,資料採集,資料處理,資料治理,望交流!!

  • 中秋節和大豐收的關聯?
  • 如何學習和田玉相關的知識?