SequoiaDB版本在線升級介紹說明
1.前言
在SequoiaDB資料庫發展過程中,基本保持每半年對外發行一個正式的Release版本。並且每個新發布的Release版本相對老版本而言,性能方面都有很大的提高,並且資料庫也會在新版本中加入很多新的功能,希望能夠提高資料庫開發的易用性。
在SequoiaDB發展過程中,越來越多的開發者了解到它,並且對它發生興趣。現在已經有越來越多的用戶在學習、研究SequoiaDB,並且也有越來越多的企業用戶在對SequoiaDB經過充分測試後,決定將SequoiaDB部署在企業的生產環境中,利用SequoiaDB分散式存儲的優勢,對外提供高並發、低延時的數據操作服務。
在很多SequoiaDB的企業客戶中,使用SequoiaDB資料庫的生產系統都是企業內部比較重要的系統,必須支持24*7對外提供服務,所以即使在對資料庫實施版本升級的同時,也必須要滿足資料庫服務不停機的技術要求。
本文通過SequoiaDB在線升級原理介紹與詳細升級步驟說明,向廣大SequoiaDB用戶提供一個可操作的資料庫在線升級方案文檔,希望能夠對即將給SequoiaDB做版本升級的用戶提供幫助。
2.背景介紹
2.1 伺服器資源介紹
2.2 操作系統及資料庫軟體版本
2.3 數據集群部署部署架構3.版本升級兼容性說明
4.SequoiaDB支持在線升級原理說明
在Sequoiadb集群中,如果部署的環境為所有節點組都是3份數據冗餘,那樣用戶就可以逐一對每台伺服器上的資料庫版本進行升級。
在線升級的方法如圖示:
用戶首先選擇一台伺服器,將其所有的Sequoiadb 進程停止,停止當前機器所有的資料庫服務可以參考 sdbstop 命令的使用方式,然後直接使用新版本的資料庫安裝包覆蓋安裝老的版本。新版資料庫安裝完畢後,它會自動將本台機器的所有Sequoiadb 相關進程啟動。一旦升級的資料庫服務成功啟動後,則代表此伺服器完成了資料庫版本升級。
用戶可以通過相同的方式對其餘幾台伺服器進行相同的操作,直至所有伺服器都完成了版本升級,並且所有的資料庫服務都已經成功啟動。
5.SequoiaDB版本在線升級步驟
5.1 升級前環境信息收集
用戶在開始SequoiaDB集群版本升級之前,應該先對SequoiaDB集群的基本情況有一個大概的了解,並且將資料庫的信息收集起來。
檢查SequoiaDB資料庫的安裝路徑已經操作系統分配給資料庫的系統用戶,此步驟建議用戶在所有部署了SequoiaDB服務的機器上執行。
切換到root許可權
su - root
查看SequoiaDB資料庫的安裝路徑與操作系統分配的用戶
cat /etc/default/sequoiadb
以作者的環境舉例,列印的內容如下:
NAME=sdbcmSDBADMIN_USER=sdbadminINSTALL_DIR=/opt/sequoiadbMD5=d60fdabd78e05f0ad482b938f1df1d72
通過/etc/default/sequoiadb文件,用戶可以快速了解到SequoiaDB的基本情況
用戶再通過sdb shell控制台,了解SequoiaDB資料庫集群的部署情況
切換到sdbadmin用戶
su - sdbadmin
進入sdb shell控制台
/opt/sequoiadb/bin/sdb
連接資料庫Coord節點
> db = new Sdb("localhost", 11810)
查看SequoiaDB集群部署情況
> db.list(7)
以作者環境為例,列印內容為(由於篇幅太長,文檔里做了省略):
{ "Group": [ { "dbpath": "/opt/sequoiadb/database/catalog/11800", "HostName": "sdb1", "Service": [ { "Type": 0, "Name": "11800" }, { "Type": 1, "Name": "11801" }, { "Type": 2, "Name": "11802" }, { "Type": 3, "Name": "11803" } ], "NodeID": 1 },……………… { "HostName": "sdb3", "dbpath": "/opt/sequoiadb/database/data/11930", "Service": [ { "Type": 0, "Name": "11930" }, { "Type": 1, "Name": "11931" }, { "Type": 2, "Name": "11932" } ], "NodeID": 1008 } ], "GroupID": 1002, "GroupName": "group3", "PrimaryNode": 1008, "Role": 0, "Status": 1, "Version": 4, "_id": { "$oid": "580c1fc9a378cafcebe4e956" }}
用戶從列印的信息中,基本可以了解到SequoiaDB共使用了多少台伺服器,建立了多少個數據組,每個數據組又包含多少個節點,節點的數據存儲路徑和埠號分別是什麼,用戶都可以從db.list(7)命令中獲取。
作者根據演示環境,整理信息如下:
5.2 資料庫版本升級
升級步驟必須逐台伺服器執行,不能夠同時在所有伺服器上執行升級資料庫版本步驟。
作者以升級01伺服器為例,詳細記錄一台伺服器上升級SequoiaDB版本的步驟。
切換sdbadmin用戶
su - sdbadmin
停止當前伺服器的sdbcm服務
/opt/sequoiadb/bin/sdbcmtop
停止當前伺服器所有的SequoiaDB服務
/opt/sequoiadb/bin/sdbstop/opt/sequoiadb/bin/sdbstop -p 11780
檢查當前伺服器是否所有SequoiaDB伺服器停止
/opt/sequoiadb/bin/sdblist -t all -m run
如果還有SequoiaDB服務在運行,執行sdblist命令會在屏幕上列印SequoiaDB正在運行的服務信息,例如
sdbom(11780) (31966)Total: 1
確認所有的SequoiaDB均停止後,開始對當前伺服器升級SequoiaDB版本
切換root許可權
su - root
為SequoiaDB執行軟體賦予可執行許可權
chmod a+x /opt/sequoiadb-2.6-linux_x86_64-enterprise-installer.run
執行SequoiaDB新版本安裝命令
/opt/sequoiadb-2.6-linux_x86_64-enterprise-installer.run
讓用戶選擇安裝時的語言,這裡選擇1,英文
Please select the installation language[1] English - English[2] Simplified Chinese - 簡體中文Please choose an option [1] : 1
然後出來一堆license的內容,讓用戶選擇直接忽略選擇1,如果希望了解詳情選擇2查看
License Agreement for Evaluation of Programs [1] Agree The License: For More Licenses Detail, Please Check The License File After Installation[2] Read The LicensePlease choose an option [1] : 1
讓用戶選擇是否同意本license,這裡選擇y(YES)
Do you accept this license? [y/n]: y
軟體檢測到本機器已經安裝了SequoiaDB,讓用戶選擇是否升級版本,這裡選擇Y(YES)
An existing installation has been detected in /opt/sequoiadb. Change to upgrade mode? [Y/n]: y
安裝軟體已經準備就緒了,是否繼續安裝,這裡選擇Y(YES)
Setup is now ready to begin installing SequoiaDB Server on your computer. Do you want to continue? [Y/n]: Y
然後軟體就開始正式安裝,會出現以下的內容
Please wait while Setup installs SequoiaDB Server on your computer. Installing 0% ______________ 50% ______________ 100% Begin to upgrade package ......************************** check list *************************************Check: configure file /etc/default/sequoiadb is exists ...... okCheck: get install directory and user in /etc/default/sequoiadb ...... okCheck: install dir /opt/sequoiadb is not empty ...... okCheck: compatibility between version 1.12.5 Enterprise and 2.6 Enterprise ...... okCheck: disk space is enough ...... okCheck: user sdbadmin is exist, and get group ...... okCheck: relevant processes are stoped ...... ok#########################################
只要屏幕上出現以下信息,則證明SequoiaDB軟體版本升級已經成功了
Setup has finished installing SequoiaDB Server on your computer.
5.3 SequoiaDB版本升級後檢查
在SequoiaDB版本升級後,sdbcm會自動將當前機器的所有SequoiaDB服務啟動,用戶可以通過sdblist命令查看確認。用戶在執行命令前,作者建議用戶還是首先切換系統用戶
su - sdbadmin
查看SequoiaDB資料庫服務啟動情況。
/opt/sequoiadb/bin/sdblist -t all -m local
例如作者的環境,列印的內容為:
sequoiadb(11920) (12808) Dsequoiadb(11930) (12811) Dsdbom(11780) (12792)sequoiadb(11910) (12812) Dsequoiadb(11810) (12805) Ssequoiadb(11800) (12780) Csdbcm(11790) (12770)sdbcmd (12768)Total: 8
如果有存在一些節點沒有正常啟動,會列印如下信息
sequoiadb(11920) (12808) Dsequoiadb(11930) (12811) Dsdbom(11780) (12792)sequoiadb(11910) (12812) Dsequoiadb(11810) (-) Ssequoiadb(11800) (12780) Csdbcm(11790) (12770)sdbcmd (12768)Total: 8
顯示sequoiadb(11810) (-) S 則說明這個節點是存在於本伺服器的,但是該節點並沒有啟動。
SequoiaDB版本升級後,雖然所有的進程都已經啟動,但是用戶還需要確認啟動的節點已經恢復正常,並且能夠正常提供服務。
用戶在檢查節點是否恢復正常時,只要檢查編目節點和數據節點的狀態,也就是
sequoiadb(11920) (12808) Dsequoiadb(11930) (12811) Dsequoiadb(11910) (12812) Dsequoiadb(11800) (12780) C
用戶進入SequoiaDB Shell
/opt/sequoiadb/bin/sdb
挑選其中一個節點,進行連接檢查
> var db = new Sdb("localhost", 11910);> db.snapshot(6, {}, {"ServiceStatus":null});> db.close();
只要snapshot(6)列印的內容{"ServiceStatus": true} 等於true,則代表此節點服務已經恢復正常,處於正常運行狀態,如果為false,則代表此節點狀態還沒有恢復,通常情況下,ServiceStatus=false,為節點處於全量同步狀態。
重複此動作,檢查其餘的localhost:11920、localhost:11930、localhost:11800節點狀態是否正常。如果有節點狀態不正常,就需要耐心等待節點完成數據檢查或者數據同步,直至節點狀態恢復正常,當前伺服器的SequoiaDB版本升級才算結束。
> var db = new Sdb("localhost", 11920);> db.snapshot(6, {}, {"ServiceStatus":null});> db.close();> var db = new Sdb("localhost", 11920);> db.snapshot(6, {}, {"ServiceStatus":null});> db.close();> var db = new Sdb("localhost", 11800);> db.snapshot(6, {}, {"ServiceStatus":null});> db.close();
當用戶完成當前伺服器的SequoiaDB版本升級,則可以在兩外一台伺服器上執行相同命令,開始SequoiaDB版本升級,直至資料庫集群所有的伺服器資料庫版本升級完畢。
6.總結
由於SequoiaDB集群部署時,是通過3台伺服器互相做數據冗餘,從而保證整個資料庫集群的數據安全性,並且每台伺服器的資料庫進程都相互獨立,中間沒有任何的數據依賴。用戶在對資料庫版本進行升級時,可以利用這數據冗餘3份的特點,通過對整個資料庫集群做滾動升級的方式,逐一對各台伺服器上的SequoiaDB資料庫版本做升級操作,從而完成所有伺服器的資料庫版本升級。
推薦閱讀:
※分散式SQL執行引擎核心是什麼?Fragment、Stage、Subplan等概念有什麼區別?
※NewSQL系統綜述——NewSQL到底New在哪裡?
※TiDB RC1 Release
※關於MongoDB安全事件的一些思考