升级数据存储

您可以升级数据库实例的数据存储版本。在执行升级时,系统会自动管理您的数据库的数据和配置文件。

要执行数据存储升级,您需要

  • 一个需要升级的 Trove 数据库实例。

  • 一个具有目标数据存储版本的 guest 镜像。

本指南演示如何将 MySQL 数据存储从 5.7.29 升级到 5.7.30,用于一个数据库实例。

警告

数据存储升级可能会导致数据库服务停机。

升级数据存储

  1. 检查系统中的数据存储版本

    在我的环境中,MySQL 定义了数据存储版本 5.7.29 和 5.7.30。

    $ openstack datastore list
    +--------------------------------------+-------+
    | ID                                   | Name  |
    +--------------------------------------+-------+
    | 50bed39d-6788-4a0d-8d74-321012bb6b55 | mysql |
    +--------------------------------------+-------+
    $ openstack datastore version list mysql
    +--------------------------------------+--------+---------+
    | ID                                   | Name   | Version |
    +--------------------------------------+--------+---------+
    | 70c68d0a-27e1-4fbd-bd3b-f29d42ce1a7d | 5.7.29 | 5.7.29  |
    | cf91aa9a-2192-4ec4-b7ce-5cac3b1e7dbe | 5.7.30 | 5.7.30  |
    +--------------------------------------+--------+---------+
    
  2. 使用数据存储版本 5.7.29 创建一个新实例

    确保实例状态在升级前为 HEALTHY(健康)。

    $ openstack database instance create test-mysql-upgrade \
      --flavor d2 \
      --size 1 \
      --nic net-id=$netid \
      --datastore mysql --datastore-version 5.7.29 \
      --databases testdb --users user:password
    $ openstack database instance list -c ID -c Name -c Status -c "Operating Status" -c Addresses
    +--------------------------------------+--------------------+--------+------------------+--------------------------------------------------------------------------------------------------+
    | ID                                   | Name               | Status | Operating Status | Addresses                                                                                        |
    +--------------------------------------+--------------------+--------+------------------+--------------------------------------------------------------------------------------------------+
    | 32eb56b0-d10d-43e9-b59e-1e4b0979e5dd | test-mysql-upgrade | ACTIVE | HEALTHY          | [{'address': '10.0.0.54', 'type': 'private', 'network': '3dc8f3c2-f335-11eb-878c-00224d6b7bc1'}] |
    +--------------------------------------+--------------------+--------+------------------+--------------------------------------------------------------------------------------------------+
    

    通过连接数据库检查 MySQL 版本

    $ ip=10.0.0.54
    $ mysql -u user -ppassword -h $ip testdb
    mysql> SELECT @@GLOBAL.innodb_version;
    +-------------------------+
    | @@GLOBAL.innodb_version |
    +-------------------------+
    | 5.7.29                  |
    +-------------------------+
    
  3. 运行升级

    使用 openstack database instance upgrade 命令来升级实例的数据存储。

    $ openstack database instance upgrade 32eb56b0-d10d-43e9-b59e-1e4b0979e5dd cf91aa9a-2192-4ec4-b7ce-5cac3b1e7dbe
    
  4. 等待状态从 UPGRADE(升级中)变为 HEALTHY(健康)。

    使用 openstack database instance list 来检查当前状态。

    $ openstack database instance list -c ID -c Name -c Status -c "Operating Status"
    +--------------------------------------+--------------------+---------+------------------+
    | ID                                   | Name               | Status  | Operating Status |
    +--------------------------------------+--------------------+---------+------------------+
    | 32eb56b0-d10d-43e9-b59e-1e4b0979e5dd | test-mysql-upgrade | UPGRADE |                  |
    +--------------------------------------+--------------------+---------+------------------+
    $ openstack database instance list -c ID -c Name -c Status -c "Operating Status"
    +--------------------------------------+--------------------+--------+------------------+
    | ID                                   | Name               | Status | Operating Status |
    +--------------------------------------+--------------------+--------+------------------+
    | 32eb56b0-d10d-43e9-b59e-1e4b0979e5dd | test-mysql-upgrade | ACTIVE | HEALTHY          |
    +--------------------------------------+--------------------+--------+------------------+
    

    再次检查 MySQL 版本

    $ mysql -u user -ppassword -h $ip testdb
    mysql> SELECT @@GLOBAL.innodb_version;
    +-------------------------+
    | @@GLOBAL.innodb_version |
    +-------------------------+
    | 5.7.30                  |
    +-------------------------+