#升级前准备

# 检查滚动升级环境

如需进行滚动升级,须确保当前数据库满足以下条件:

  • 数据库为yashan模式。

    通过以下SQL语句查看数据库模式:

    show parameter compat_vector
    
    name                                                              value                                                            
    ----------------------------------------------------------------  ---------------------------------------------------------------- 
    COMPAT_VECTOR                                                     yashan                                                           
    
    

    若当前环境为mysql模式,请使用离线升级。

  • 数据库不存在身份列。

    通过以下SQL语句查看数据库中身份列数量:

    SELECT COUNT(*) FROM DBA_TAB_COLS WHERE IDENTITY_COLUMN = 'Y';
    
                 count(*) 
    --------------------- 
                        0
    
    

    若当前数据库中存在身份列,请使用离线升级。

# 获得新版本安装包

请与YashanDB技术支持确认当前在用数据库版本是否可直接升级到目标新版本,并获取新版本的安装包。

# 检查依赖项

请参照依赖项准备检查并确保所有服务器的依赖项均已满足要求。

# 检查SSH服务

升级需用到SSH和SFTP服务,请检查各服务器SSH服务是否已开启并允许操作用户(建议直接使用安装用户)远程登录。

  • 可通过如下命令检查SSH服务是否已开启:

    $ systemctl status sshd.service
    ● sshd.service - OpenSSH server daemon
       Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)
       Active: active (running) since Wed 2023-04-26 14:32:52 CST; 3 months 6 days ago
         Docs: man:sshd(8)
               man:sshd_config(5)
     Main PID: 6372 (sshd)
       CGroup: /system.slice/sshd.service
               └─6372 /usr/sbin/sshd -D
    
  • 可通过如下命令检查升级中是否能操作用户远程登录:

    使用当前用户SSH连接到当前服务器,SSH可以使用密码或密钥免密:

    $ ssh 用户名@IP -p SSH端口
    

    按照命令提示输入密码,查看是否能够成功连接上SSH服务器。

# 上传新版本安装包

路径、安装包名称等请替换为实际值。

  1. 以安装用户登录数据库安装服务器。

  2. 创建一个空目录,该目录将作为升级安装包的临时存放路径。

    $ cd /home/yashan
    $ mkdir tmp_upgrade20250930
    

    Note:

    tmp_upgrade20250930仅为示例值,实际操作时建议采用新版本号或操作日期命名该目录,便于管理与区分。

  3. 将新版安装包上传至/home/yashan/tmp_upgrade中。

  4. 进入升级安装包的存放目录并解压安装包。

    $ cd tmp_upgrade
    $ tar zxf yashandb-{新版本号}-linux-x86_64.tar.gz
    

# 规划系统盘(共享集群部署)

共享集群部署中,如需从23.2.x.x及以前版本离线升级至23.4.x.x及以上版本,必须执行本操作。

  1. 在共享存储上规划系统盘,具体操作请查阅目录规划

  2. 在tmp_upgrade目录新建disk_config.toml文件,参考共享集群升级配置文件并结合实际磁盘规划进行文件内容编辑,确认无误后保存退出。

    $ vi disk_config.toml
    
    [[group]]
        group_id = 1                    # 共享集群组ID
        disk_found_path = "/dev/yfs"    # 指定磁盘发现路径,即数据盘的上一层目录,数据盘信息可通过yfscmd show disk命令查询
        system_data = ["/dev/yfs/sys0", "/dev/yfs/sys1", "/dev/yfs/sys2"]   # 指定为规划的系统盘路径
    
    [[group]]                           # 主备集群部署时,备集群参考主集群的示例修改,若无可删除
        group_id = 2        
        disk_found_path = "/dev/yfs2"
        system_data = ["/dev/yfs2/sys0", "/dev/yfs2/sys1", "/dev/yfs2/sys2"]
    

# 检查hosts.toml文件

hosts.toml文件的默认路径为/home/yashan/install/hosts.toml。

# 检查yasom信息

如果升级前做过yasom的相关切换操作,请确保升级时hosts.toml中OM的LISTEN_ADDR为当前主yasom。

  1. 执行yasboot process yasom status -c yashandb,查询当前环境中yasom相关信息。

    $ yasboot process yasom status -c ceyashandb
    +------------------------------------------------------------------------------------------------------------------------------------+
    | hostid   | pid   | ipaddr       | primary           | secondary | local_yasom_addr  | role    | backup_num | max_seq | auto_repair |
    +------------------------------------------------------------------------------------------------------------------------------------+
    | host0001 | -     | 192.168.1.2  | 192.168.1.3:1675  | []        | -                 | -       | 2          | 54      | -           |
    +----------+-------+--------------+-------------------+-----------+-------------------+---------+------------+---------+-------------+
    | host0002 | 27584 | 192.168.1.3  | 192.168.1.3:1675  | []        | 192.168.1.3:1675  | primary | 2          | 54      | off         |
    +----------+-------+--------------+-------------------+-----------+-------------------+---------+------------+---------+-------------+
    

    根据回显可知,当前环境中yasom的LISTEN_ADDR为192.168.1.3:1675、所在服务器hostid为host0002

  2. 确认role为primary的yasom的local_yasom_addr与hosts.toml中OM的LISTEN_ADDR和hostid是否相同。若不同,请手动修改hosts.toml中OM的LISTEN_ADDR、hostid与主yasom的一致。

    $ cat hosts.toml
    
    ……
    [om]
      hostid = "host0001"	
      [om.config]	
        LISTEN_ADDR = "192.168.1.2:1675"
    ……
    # hosts.toml文件中yasom的LISTEN_ADDR、hostid均与实际不一致,需修改
    
    $ vi hosts.toml
    
    ……
    [om]
      hostid = "host0002"	
      [om.config]	
        LISTEN_ADDR = "192.168.1.3:1675"
    ……
    

# 检查服务器信息

如果升级前执行过新增服务器的扩容操作,需确保新增的服务器的信息已追加到hosts.toml文件中。

# 确认临时目录的权限及空间

# 滚动升级

滚动升级时会自动创建安装新版本数据库的目录,请确保操作用户拥有创建该目录的权限,且具备充足的存储空间。

# 离线升级

离线升级时会自动创建一个临时目录(${旧版本的YASDB_HOME}/upgrade_tmp/backup)作为备份目录,用于备份当前数据库的控制文件、redo文件、SYSTEM表空间文件、SYSAUX表空间文件以及UNDO表空间文件。请确保操作用户拥有创建该目录的权限,且拥有足够的存储空间。

部署形态 备份位置 容量估算(查询)方法
单机部署 每台服务器 方式一:使用SQL语句查询并统计各文件的大小
SELECT (SELECT SUM(BYTES) FROM V$CONTROLFILE) + (SELECT SUM(USED_BLOCKS * BLOCK_SIZE) FROM V$LOGFILE) + (SELECT SUM(BYTES) FROM DBA_DATA_FILES WHERE TABLESPACE_NAME IN ('SYSTEM', 'SYSAUX', 'UNDO')) AS total_capacity FROM DUAL;

方式二:根据各服务器中$YASDB_DATA/dbfiles路径的总容量估算
共享集群部署 主实例所在服务器 使用SQL语句查询并统计各文件的大小
SELECT (SELECT SUM(BYTES) FROM V$CONTROLFILE) + (SELECT SUM(USED_BLOCKS * BLOCK_SIZE) FROM V$LOGFILE) + (SELECT SUM(BYTES) FROM DBA_DATA_FILES WHERE TABLESPACE_NAME IN ('SYSTEM', 'SYSAUX', 'UNDO')) AS total_capacity FROM DUAL;
存算一体分布式部署 每台服务器 方式一:使用SQL语句查询并统计各文件的大小
SELECT (SELECT SUM(BYTES) FROM V$CONTROLFILE) + (SELECT SUM(USED_BLOCKS * BLOCK_SIZE) FROM V$LOGFILE) + (SELECT SUM(BYTES) FROM DBA_DATA_FILES WHERE TABLESPACE_NAME IN ('SYSTEM', 'SYSAUX', 'UNDO')) AS total_capacity FROM DUAL;

方式二:根据各服务器中$YASDB_DATA/dbfiles路径的总容量估算

执行离线升级操作时,还可以通过--backup-reserved-space参数指定临时目录的额外预留容量(默认值为5G),即临时目录的容量需高于备份上述数据文件所需容量 + 额外预留容量的总和。系统会先检测临时目录的容量是否满足要求再根据检测结果判断是否继续执行后续操作。

升级成功或回退成功后,该目录会自动删除。

# 检查数据库实例状态

升级前请确保数据库实例(包括主备环境中的所有数据库实例)为OPEN状态,可通过如下方式检查数据库实例状态:

通过yasboot cluster status命令查询数据库的状态信息,并根据instance_status字段的值确认实例状态。

instance_status字段为open表示对应实例处于OPEN状态,mounted表示对于实例处于MOUNT阶段,started表示实例处于NOMOUNT阶段。

$ yasboot cluster status -c yashandb -d -p sys_password
+-----------------------------------------------------------------------------------------------------------------------------------------------+
| hostid   | node_type | nodeid | pid   | instance_status | database_status | database_role | listen_address   | data_path                      |
+----------+-----------+--------+-------+-----------------+-----------------+---------------+------------------+--------------------------------+
| host0001 | db        | 1-1:1  | 54814 | open            | normal          | primary       | 192.168.1.2:1688 | /data/yashan/yasdb_data/db-1-1 |
+----------+-----------+--------+-------+-----------------+-----------------+---------------+------------------+--------------------------------+
| host0002 | db        | 1-2:2  | 49529 | open            | normal          | standby       | 192.168.1.3:1688 | /data/yashan/yasdb_data/db-1-2 |
+----------+-----------+--------+-------+-----------------+-----------------+---------------+------------------+--------------------------------+
| host0003 | db        | 1-3:3  | 49582 | open            | normal          | standby       | 192.168.1.4:1688 | /data/yashan/yasdb_data/db-1-3 |
+----------+-----------+--------+-------+-----------------+-----------------+---------------+------------------+--------------------------------+           

# 终止守护进程

升级前请检查并终止各实例所在服务器上的守护进程,若已配置开机自启动,需先暂时关闭自启动

Caution:

此步骤仅需终止与YashanDB相关的守护进程,无需终止其他应用相关的或系统本身的monit进程。

# 执行yasboot monit status命令或yasboot monit summary命令确认是否存在monit进程
$ yasboot monit status -c yashandb

# 若存在,需终止YashanDB相关的守护进程
$ yasboot monit stop -c yashandb
+---------------------------------------------------------------------------------------------------------+
| type | uuid             | name            | hostid | index    | status  | return_code | progress | cost |
+---------------------------------------------------------------------------------------------------------+
| task | eac7dd31c8a589e3 | MonitParentStop | -      | yashandb | SUCCESS | 0           | 100      | 1    |
+------+------------------+-----------------+--------+----------+---------+-------------+----------+------+
task completed, status: SUCCESS

# 检查仲裁模式

若为单机一主一备部署或存算一体分布式高可用部署(DN组内节点为一主一备),需要执行当前操作检查并关闭yasom仲裁选主再执行后续操作。

  1. 执行如下命令,检查yasom仲裁选主是否开启:

    $ yasboot election config show -c yashandb
    group 1
      Protection Mode: MAXIMUM PROTECTION
      Members:
        [1-1:1] - Primary database
          [1-2:2] - Physical standby database
                      Transport Lag: 0 seconds
                      Apply Lag:     0 seconds
                      Apply Rate:    3.79 MByte/s
    
      Properties:
        FailoverThreshold      = 9
        FailoverAutoReinstate  = false
        ZeroDataLossMode       = true
    
    Automatic Failover: Enabled in Zero Data Loss Mode # Enabled表示已开启仲裁
    
  2. 若已开启,需执行如下命令关闭仲裁:

    $ yasboot election enable off -c yashandb
    

升级完成后,请按需还原相关配置,具体操作请查阅一主一备yasom仲裁选主

# 全量checkpoint

等待主库redo全部同步至备库,然后在所有主备库执行全量checkpoint以加快升级速度。

ALTER SYSTEM CHECKPOINT;

# 全量备份

YashanDB提供两种备份的方式,分别是使用SQL语句和使用yasrman工具,如需了解更多有关备份的语法及说明请查阅备份恢复

  • 使用SQL语句:适用于单机部署和共享集群部署

    SQL语句执行备份需登录数据库实例进行操作,可通过执行如下语句执行全量备份:

    BACKUP DATABASE FULL FORMAT '/home/yashan/full_20221123' TAG 'full' PARALLELISM 8 COMPRESSION ALGORITHM ZSTD LOW;
    
  • 使用yasrman工具:适用于所有部署形态

    使用yasrman工具进行全量备份须确保在yasrman工具所在服务器上操作,可通过执行如下命令执行全量备份:

    # 单机部署、共享集群部署
    $ yasrman sys/********@192.168.1.2:1688 -c "BACKUP DATABASE TAG 'full_backup' FULL FORMAT 'full_001' PARALLELISM 8 COMPRESSION ALGORITHM ZSTD LOW" -D /home/yashan/catalog
    
    # 存算一体分布式集群部署
    $ yasrman sys/********@192.168.1.2:1688 -c "BACKUP CLUSTER TAG 'full_1' FORMAT 'full_bak_1' PARALLELISM 8 COMPRESSION ALGORITHM ZSTD LOW" -D /home/yashan/catalog
    
edit-icon
反馈
coperate-icon
coperate
合作
communication-icon
communicate
交流