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安全事件的一些思考

TAG:資料庫 | NewSQL | NoSQL |