zoukankan      html  css  js  c++  java
  • 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=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)命令中获取。

    作者根据演示环境,整理信息如下:

    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.3 SequoiaDB版本升级后检查

    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:11920localhost:11930localhost: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巨杉数据库社区

     

  • 相关阅读:
    使用git pull文件时和本地文件冲突怎么办?
    Git回滚代码到某个commit
    PHP如何在页面中原样输出HTML代码
    git 创建本地分支、提交到远程分支
    php mysqli扩展之预处理
    htmlspecialchars() 函数过滤XSS的问题
    PHP json_encode里面经常用到的 JSON_UNESCAPED_UNICODE和JSON_UNESCAPED_SLASHES
    javascript学习笔记——Array
    javascript学习笔记——Object
    javascript的底层实现学习总结
  • 原文地址:https://www.cnblogs.com/sequoiadbsql/p/SequoiaDB.html
Copyright © 2011-2022 走看看