SequoiaDB版本線上升級介紹說明

SequoiaDB發表於2016-12-13

1.前言

SequoiaDB資料庫發展過程中,基本保持每半年對外發行一個正式的Release版本。並且每個新發布的Release版本相對老版本而言,效能方面都有很大的提高,並且資料庫也會在新版本中加入很多新的功能,希望能夠提高資料庫開發的易用性。

SequoiaDB發展過程中,越來越多的開發者瞭解到它,並且對它發生興趣。現在已經有越來越多的使用者在學習、研究SequoiaDB,並且也有越來越多的企業使用者在對SequoiaDB經過充分測試後,決定將SequoiaDB部署在企業的生產環境中,利用SequoiaDB分散式儲存的優勢,對外提供高併發、低延時的資料操作服務。 在很多SequoiaDB的企業客戶中,使用SequoiaDB資料庫的生產系統都是企業內部比較重要的系統,必須支援24*7對外提供服務,所以即使在對資料庫實施版本升級的同時,也必須要滿足資料庫服務不停機的技術要求。

本文通過SequoiaDB線上升級原理介紹與詳細升級步驟說明,向廣大SequoiaDB使用者提供一個可操作的資料庫線上升級方案文件,希望能夠對即將給SequoiaDB做版本升級的使用者提供幫助。

2.背景介紹

2.1伺服器資源介紹 enter image description here

2.2作業系統及資料庫軟體版本 enter image description here

2.3資料叢集部署部署架構 enter image description here

3.版本升級相容性說明 enter image description here

4.SequoiaDB支援線上升級原理說明

在Sequoiadb叢集中,如果部署的環境為所有節點組都是3份資料冗餘,那樣使用者就可以逐一對每臺伺服器上的資料庫版本進行升級。 線上升級的方法如圖示: enter image description here

使用者首先選擇一臺伺服器,將其所有的Sequoiadb 程式停止,停止當前機器所有的資料庫服務可以參考 sdbstop 命令的使用方式,然後直接使用新版本的資料庫安裝包覆蓋安裝老的版本。新版資料庫安裝完畢後,它會自動將本臺機器的所有Sequoiadb 相關程式啟動。一旦升級的資料庫服務成功啟動後,則代表此伺服器完成了資料庫版本升級。

使用者可以通過相同的方式對其餘幾臺伺服器進行相同的操作,直至所有伺服器都完成了版本升級,並且所有的資料庫服務都已經成功啟動。

5.SequoiaDB版本線上升級步驟

5.1升級前環境資訊收集 使用者在開始SequoiaDB叢集版本升級之前,應該先對SequoiaDB叢集的基本情況有一個大概的瞭解,並且將資料庫的資訊收集起來。

檢查SequoiaDB資料庫的安裝路徑已經作業系統分配給資料庫的系統使用者,此步驟建議使用者在所有部署了SequoiaDB服務的機器上執行。 切換到root許可權

su - root

檢視SequoiaDB資料庫的安裝路徑與作業系統分配的使用者

cat /etc/default/sequoiadb

以作者的環境舉例,列印的內容如下:

NAME=sdbcm
SDBADMIN_USER=sdbadmin
INSTALL_DIR=/opt/sequoiadb
MD5=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)命令中獲取。 作者根據演示環境,整理資訊如下: enter image description here

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 License's Detail, Please Check The License File After Installation
[2] Read The License
Please 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 ...... ok
Check: get install directory and user in /etc/default/sequoiadb ...... ok
Check: install dir /opt/sequoiadb is not empty ...... ok
Check: compatibility between version 1.12.5 Enterprise and 2.6 Enterprise ...... ok
Check: disk space is enough ...... ok
Check: user sdbadmin is exist, and get group ......  ok
Check: relevant processes are stoped ...... ok
#########################################

只要螢幕上出現以下資訊,則證明SequoiaDB軟體版本升級已經成功了

Setup has finished installing SequoiaDB Server on your computer.

5.3SequoiaDB版本升級後檢查 在SequoiaDB版本升級後,sdbcm會自動將當前機器的所有SequoiaDB服務啟動,使用者可以通過sdblist命令檢視確認。使用者在執行命令前,作者建議使用者還是首先切換系統使用者

su - sdbadmin

檢視SequoiaDB資料庫服務啟動情況。

/opt/sequoiadb/bin/sdblist -t all -m local

例如作者的環境,列印的內容為:

sequoiadb(11920) (12808) D
sequoiadb(11930) (12811) D
sdbom(11780) (12792)
sequoiadb(11910) (12812) D
sequoiadb(11810) (12805) S
sequoiadb(11800) (12780) C
sdbcm(11790) (12770)
sdbcmd (12768)
Total: 8

如果有存在一些節點沒有正常啟動,會列印如下資訊

sequoiadb(11920) (12808) D
sequoiadb(11930) (12811) D
sdbom(11780) (12792)
sequoiadb(11910) (12812) D
sequoiadb(11810) (-) S
sequoiadb(11800) (12780) C
sdbcm(11790) (12770)
sdbcmd (12768)
Total: 8

顯示sequoiadb(11810) (-) S 則說明這個節點是存在於本伺服器的,但是該節點並沒有啟動。 SequoiaDB版本升級後,雖然所有的程式都已經啟動,但是使用者還需要確認啟動的節點已經恢復正常,並且能夠正常提供服務。 使用者在檢查節點是否恢復正常時,只要檢查編目節點和資料節點的狀態,也就是

sequoiadb(11920) (12808) D
sequoiadb(11930) (12811) D
sequoiadb(11910) (12812) D
sequoiadb(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資料庫版本做升級操作,從而完成所有伺服器的資料庫版本升級。

SequoiaDB巨杉資料庫2.6最新版下載 SequoiaDB巨杉資料庫技術部落格 SequoiaDB巨杉資料庫社群

相關文章