管理数据库配置

您可以使用配置组来管理数据库配置任务。配置组允许您将配置选项批量设置到一个或多个数据库上。

本示例假定您已创建一个 MySQL 数据库,并演示如何使用配置组对其进行配置。虽然此示例仅在一个数据库上设置一个选项,但您可以使用相同的步骤在整个环境中设置多个数据库实例上的多个选项。这可以在管理您的云时节省大量时间。

批量配置一个或多个数据库

  1. 列出可用选项

    首先,确定您可以设置哪些配置选项。不同的数据存储版本具有不同的配置选项。

    列出 mysql 数据存储的所有可用版本的名称和 ID

    $ openstack datastore version list mysql
    +--------------------------------------+-----------+
    |                  id                  |    name   |
    +--------------------------------------+-----------+
    | eeb574ce-f49a-48b6-820d-b2959fcd38bb | mysql-5.5 |
    +--------------------------------------+-----------+
    

    使用数据存储版本 ID 与 openstack database configuration parameter list 命令一起使用,以获取可用的选项

    $ openstack database configuration parameter list DATASTORE_VERSION_ID
    +--------------------------------+---------+---------+----------------------+------------------+
    |              name              |   type  |   min   |         max          | restart_required |
    +--------------------------------+---------+---------+----------------------+------------------+
    |    auto_increment_increment    | integer |    1    |        65535         |      False       |
    |     auto_increment_offset      | integer |    1    |        65535         |      False       |
    |           autocommit           | integer |    0    |          1           |      False       |
    |    bulk_insert_buffer_size     | integer |    0    | 18446744073709547520 |      False       |
    |      character_set_client      |  string |         |                      |      False       |
    |    character_set_connection    |  string |         |                      |      False       |
    |     character_set_database     |  string |         |                      |      False       |
    |    character_set_filesystem    |  string |         |                      |      False       |
    |     character_set_results      |  string |         |                      |      False       |
    |      character_set_server      |  string |         |                      |      False       |
    |      collation_connection      |  string |         |                      |      False       |
    |       collation_database       |  string |         |                      |      False       |
    |        collation_server        |  string |         |                      |      False       |
    |        connect_timeout         | integer |    1    |        65535         |      False       |
    |        expire_logs_days        | integer |    1    |        65535         |      False       |
    |    innodb_buffer_pool_size     | integer |    0    |     68719476736      |       True       |
    |     innodb_file_per_table      | integer |    0    |          1           |       True       |
    | innodb_flush_log_at_trx_commit | integer |    0    |          2           |      False       |
    |     innodb_log_buffer_size     | integer | 1048576 |      4294967296      |       True       |
    |       innodb_open_files        | integer |    10   |      4294967296      |       True       |
    |   innodb_thread_concurrency    | integer |    0    |         1000         |      False       |
    |      interactive_timeout       | integer |    1    |        65535         |      False       |
    |        join_buffer_size        | integer |    0    |      4294967296      |      False       |
    |        key_buffer_size         | integer |    0    |      4294967296      |      False       |
    |          local_infile          | integer |    0    |          1           |      False       |
    |       max_allowed_packet       | integer |   1024  |      1073741824      |      False       |
    |       max_connect_errors       | integer |    1    | 18446744073709547520 |      False       |
    |        max_connections         | integer |    1    |        65535         |      False       |
    |      max_user_connections      | integer |    1    |        100000        |      False       |
    |    myisam_sort_buffer_size     | integer |    4    | 18446744073709547520 |      False       |
    |           server_id            | integer |    1    |        100000        |       True       |
    |        sort_buffer_size        | integer |  32768  | 18446744073709547520 |      False       |
    |          sync_binlog           | integer |    0    | 18446744073709547520 |      False       |
    |          wait_timeout          | integer |    1    |       31536000       |      False       |
    +--------------------------------+---------+---------+----------------------+------------------+
    

    在本例中,openstack database configuration parameter list 命令返回一个选项列表,这些选项适用于 MySQL 5.5。

  2. 创建配置组

    配置组包含一个逗号分隔的键值对列表。每个对由一个配置选项及其值组成。

    您可以使用 openstack database configuration create 命令创建配置组。此命令的通用语法是

    $ openstack database configuration create NAME VALUES --datastore DATASTORE_NAME --datastore-version DATASTORE_VERSION_NAME
    
    • NAME。您希望为此组使用的名称。

    • VALUES。键值对列表。将 VALUES 设置为 JSON 字典,例如

      {"myFirstKey" : "someString", "mySecondKey" : 1}
      
    • DATASTORE_NAME。关联的数据存储的名称。

    • DATASTORE_VERSION_NAME。关联的数据存储版本的名称

    本示例创建一个名为 group1 的配置组。group1 仅包含一个键值对,该对将 sync_binlog 选项设置为 1

    $ openstack database configuration create group1 '{"sync_binlog" : 1}' --datastore mysql --datastore-version mysql-5.5
    +----------------------+--------------------------------------+
    |       Property       |                Value                 |
    +----------------------+--------------------------------------+
    | datastore_version_id | eeb574ce-f49a-48b6-820d-b2959fcd38bb |
    |     description      |                 None                 |
    |          id          | 9a9ef3bc-079b-476a-9cbf-85aa64f898a5 |
    |         name         |                group1                |
    |        values        |          {"sync_binlog": 1}          |
    +----------------------+--------------------------------------+
    
  3. 检查您的现有配置

    在使用新创建的配置组之前,请查看 sync_binlog 选项在您的数据库上是如何配置的。将以下示例连接值替换为连接到您的数据库的值

    $ mysql -u user7 -ppassword -h 172.16.200.2 myDB7
     Welcome to the MySQL monitor. Commands end with ; or \g.
     ...
     mysql> show variables like 'sync_binlog';
     +---------------+-------+
     | Variable_name | Value |
     +---------------+-------+
     | sync_binlog   | 0     |
     +---------------+-------+
    

    如您所见,sync_binlog 选项当前设置为 0,适用于 myDB7 数据库。

  4. 使用配置组更改数据库配置

    您可以将配置组附加到数据库实例,从而更改数据库的配置。您可以使用 openstack database configuration attach 命令并传入数据库实例的 ID 和配置组的 ID 来执行此操作。

    获取数据库实例的 ID

    $ openstack database instance list
    +-------------+------------------+-----------+-------------------+--------+-----------+------+
    |     id      |       name       | datastore | datastore_version | status | flavor_id | size |
    +-------------+------------------+-----------+-------------------+--------+-----------+------+
    | 26a265dd... | mysql_instance_7 |   mysql   |     mysql-5.5     | ACTIVE |     6     |  5   |
    +-------------+------------------+-----------+-------------------+--------+-----------+------+
    

    获取配置组的 ID

    $ openstack database configuration list
    +-------------+--------+-------------+---------------------+
    |    id       |  name  | description |datastore_version_id |
    +-------------+--------+-------------+---------------------+
    | 9a9ef3bc... | group1 |     None    |      eeb574ce...    |
    +-------------+--------+-------------+---------------------+
    

    将配置组附加到数据库实例

    注意

    此命令语法仅适用于 python-troveclient 版本 1.0.6 及更高版本。早期版本要求您将配置组 ID 作为第一个参数传入。

    $ openstack database configuration attach DB_INSTANCE_ID CONFIG_GROUP_ID
    
  5. 重新检查数据库配置

    再次显示 sync_binlog 设置

    mysql> show variables like 'sync_binlog';
    +---------------+-------+
    | Variable_name | Value |
    +---------------+-------+
    | sync_binlog   | 1     |
    +---------------+-------+
    

    如您所见,sync_binlog 选项现在设置为 1,如 group1 配置组中指定的。

结论。 使用配置组在一个数据库上设置单个选项显然是一个简单的示例。但是,考虑到

  • 配置组可以指定大量选项值。

  • 您可以将配置组应用于您环境中的数百或数千个数据库实例。

这样使用,配置组允许您大规模地、即时地修改您的数据库云配置。

维护。 还有许多有用的维护功能可用于处理配置组。您可以

  • 使用 openstack database configuration detach 命令将配置组从数据库实例分离。

  • 使用 openstack database configuration parameter set 命令即时修改配置组。

  • 使用 openstack database configuration instances 命令找出哪些实例正在使用配置组。

  • 使用 openstack database configuration delete 命令删除配置组。如果没有任何实例使用该组,您可能需要这样做。