前提:現在有主從結構,主庫沒有配置持久化,從庫配置AOF。(主庫用來備份和寫服務,從庫用來提供讀服務)
情境:哪天主庫突然宕了,怎麼辦?
方法:連上從庫,做save操作。將會在從庫的data目錄儲存一份從庫最新的dump.rdb檔案。將這份dump.rdb檔案拷貝到主庫的data目錄下。再重啟主庫。
就因為這個我想到了用叢集的方案,但是redis官方沒有mysql那樣的master-
master的模式~ 這樣的情況下,只能咱們自己想辦法了~
實現的原理~
當 Master 與 Slave 均運作正常時, Master負責讀,Slave負責同步;
當 Master 掛掉,Slave 正常時, Slave接管服務,同時關閉主從複製功能;
然後依次迴圈。
這樣,兩台redis伺服器中的任何一台掛掉,都會由另一台繼續提供服務,不會對網站形
成可察覺的影響,也不會遺失資料。
你也可以實現
當 Master 恢複正常,則從Slave同步資料,同步資料之後關閉主從複製功能,恢複
Master身份,於此同時Slave等待Master同步資料完成之後,恢複Slave身份。
高可用方面
需要把讀寫進行分離的,寫的話,就指向到一個vip~ 那兩個主 用keepalived加指令碼進行判斷。
讀的話,盡量用haproxy進行分流,這樣的話,哪怕一個從down的話,haproxy會自動剔除的~
redis安裝~
wget http://redis.googlecode.com/files/redis-2.2.13.tar.gz tar -zxf redis-2.2.13.tar.gz cd redis-2.2.13make make install
keepalived的安裝~
tar -xzvf keepalived-1.1.20.tar.gz cd keepalived-1.1.20 ./configure --prefix=/usr/local/webserver/keepalived make make install cp /usr/local/webserver/keepalived/sbin/keepalived /usr/sbin cp /usr/local/webserver/keepalived/etc/sysconfig/keepalived /etc/sysconfig cp /usr/local/webserver/keepalived/etc/rc.d/init.d/keepalived /etc/init.d mkdir /etc/keepalived cp /usr/local/webserver/keepalived/etc/keepalived/keepalived.conf /etc/keepalived