一般需要搭建主從兩個資料庫叢集的時候,可能會需要資料的同步。什麼時候需要搭建兩個叢集呢?大概有這麼幾種情況。
場景一:
解決單點問題。如,使用者登入的session使用一台memcached存儲。如果這台memcached機器故障,可能會導緻全部使用者登入狀态丢失。這種情況下,可以再啟動一個memcached,用于備份。
場景二:
解決網絡延遲問題。如,你的應用部署在兩個機房。而兩個機房的網絡延遲比較大。如果隻在一個機房部署memcached叢集,可能會導緻響應時間明顯加大,很大的影響了使用者體驗。這時,就需要在兩個機房各部署一個memcached叢集。處理請求時,隻使用本機房的memcached。
kvproxy支援兩種類型的資料複制政策。即,同步複制和異步複制。
同步複制就是,當有資料寫操作(set delete add 等)時,先寫主叢集,然後寫從叢集,兩個叢集都寫完後,最後給用戶端響應。
優點:能保證資料的及時同步到從叢集。
缺點:用戶端等待時間過長。
異步複制就是,當資料寫操作(set add 等)時,先謝主叢集,然後給用戶端響應,最後寫從叢集。
優點:能快速響應用戶端。
确定:資料同步有延遲。
首先,在配置檔案中建立兩個叢集。組名可以随意定。主叢集叫master,從叢集叫slave。
其次,在配置檔案中修改hosts和hosts_backup兩個配置項。hosts配置項用于設定主叢集名。hosts_backup配置項用于設定從叢集名。
最後,設定同步複制key字首。如,我們設定sync_str = '+',那麼隻要key是以+開頭的,都使用同步複制。否則,使用異步複制。
配置檔案示例如下: