最近在負責公司Couchbase版本升級工做,以前只有一臺Cache服務器,使用Couchbase Enterprise Edition 1.8,爲避免單點故障如今須要新增長一臺Cache服務器作負載,並對老版本couchbase進行升級。(如下均在windows系統下操做)node
在進行主題以前先提一下Couchbase一些基本概念:在Couchbase的集羣架構中,沒有中心節點和Router的概念,這些工做是由Smartclient完成的,在客戶端與couchbase server交互時,Couchbase集羣是做爲一個黑匣子存在的。客戶端負責客戶程序與羣集裏獨立節點的通訊,首次鏈接的那個節點並不會充當代理或者風發的角色。Smartclient或Moxi(couchbase server端的proxy組件)會加載vBucket映射表,並決定鏈接到集羣裏的哪一個節點去獲取和存儲數據。若是集羣的拓撲圖改變了(好比執行rebalance或者failover操做),客戶端庫會自動處理任何會話錯誤。能夠這樣理解,集羣的配置和結構,對應用程序是透明的,你無需去關注。git
什麼是Buckets,Buckets是獨立的虛擬的數據容器,一個bucket就是couchbase服務器集羣中的一個邏輯組,能夠被集羣中的多個客戶端應用使用。它提供安全的機制來組織、管理、分析數據存儲資源。github
什麼是vBuckets,一個vBucket定義爲couchbase集羣裏key空間的一個子集的擁有者。經過使用vBuckets,信息在集羣裏分發更有效。vBucket系統被用於分佈式數據,以及支持多節點間的數據複製。windows
在Couchbase中bucket有兩種類型,一種是couchbase類型,另外一種是memcache類型,Couchbase類型bucket支持數據的持久化,由於它的數據是存儲在磁盤上,把活躍的數據讀取到內存中供客戶端使用(後續的備份和Failover也僅是針對着用類型的bucket),而memcache類型的bucket是內存級別的,全部的數據均保存在內存中。如今咱們開始切入主題,咱們老的couchbase服務器,使用了這兩種類型的bucket,咱們使用couchbase類型的bucket存儲的是持久化的數據,供咱們的客戶端調用,這部分數據至關重要且不能丟失。安全
基本思路:服務器
第一步備份:架構
根據Couchbase官方說明(http://docs.couchbase.com/couchbase-manual-2.5/cb-install/#getting-started)couchbase由1.8升級到2.0+必需要通過1.8.1版本,這個過程是要對數據類型的升級。分佈式
並且couchbase1.8和2.5版本的備份方式不一致,這裏提供兩個版本的備份腳本(注意只能備份Couchbase類型的bucket)測試
#1.8版本:spa @echo off echo 開始執行Couchbase buckets備份 cd "C:\Program Files\Couchbase\Server\bin" echo 當前路徑:%cd% cbbackup "C:\Program Files\Couchbase\Server\var\lib\couchbase\data\default-data\default" c:/cbbackup/ pause... |
#2.5版本 @echo off echo 開始執行Couchbase buckets備份 cd "C:\Program Files\Couchbase\Server\bin" echo 當前路徑:%cd% cbbackup http://localhost:8091 c:/cbbackup/ -u Administrator -p 123456 --single-node pause... |
第二步 將新couchbase服務器加入集羣,操做以下:(10.4.18.26老Server,10.4.18.101新Server)
說明:Couchbase有兩種類型的Bucket:Couchbase和Memcache,Couchbase類型可實現每臺server node擁有完整的副本,支持故障轉移Failover;Memcache不支持Failover,多server node共同實現完整數據。
說明:Couchbase默認是關閉Auto-Failover,須要手動開啓,Timeout默認最低爲30秒。
第三步 修改客戶端配置節點:
<servers bucket="default" bucketPassword=""> <add uri="http://10.4.18.101:8091/pools" /> <add uri="http://10.4.18.26:8091/pools" /> </servers> |
說明:在原有uri後添加一個uri
第四步 升級Couchbase版本
升級老版本couchbase直線須要將老的服務從集羣中掛起,操做以下:
1.8版本Couchbase升級到2.5版本,要通過1.8.1版本,先停掉Couchbase服務(windows服務),直接運行1.8.1版本couchbase客戶端文件,這個版本會重複安裝兩次,第一次是upgrade 註冊表數據,第二次纔是完整的安裝升級,升級完1.8.1,再次進入windows服務關閉couchbase服務,進行2.5版本的升級,該過程只執行一次。
升級完成後,咱們須要將服務器從新加入集羣,操做以下:
整個操做過程看起來簡單,其中作了不少次的實驗和測試,生產環境的更新只能確保萬無一失。測試代碼已分享至github。點擊這裏!