概述MySQL 配置管理功能允许Trove 用户重载由Trove服务的操作者提供的缺省MySQL配置环境。这是通过影响MySQL 的includedir 命令来实现的。
这些MySQL 的includedir 命令已经预先定义在/etc/mysql/conf.d 中了。 保存到这个目录的配置文件将在MySQL启动时被解释。my.cnf文件 或者 MySQL的缺省目录里的值将被替换。
为了实现这个管理功能, 当一个实例被创建时,一个数据库实例可以(可选的)关联到一个配置上。也可以当实例被创建后附加一个配置到这个实例上。一个配置是一个 key / value对的集合。 这些有效的key / value在MySQL手册上有定义,地址: http://dev.mysql.com/doc/refman/5.1/en/server-system-variables.html。 一些命令可以自动生效,另外一些命令需要服务器重启来生效。
当通过增加新的key/value 对 或者 修改原有的 key/value对来更新一个配置时, 服务将为每个与配置相关的实例更新overrides.cnf 文件。
如果值允许自动更新的话,服务将尝试自动更新运行的MySQL实例。
MySQL 配置管理功能特性将集成进由https://blueprints.launchpad.net/trove/+spec/quotas 规定的两个最大定额值:(1)每个租户的最大配置组个数 (2) 每个配置组的最大值个数。
系统允许操作者配置 key/value 对的有效规则 。 该规则能够赋予配置组上去。 这些有效规则在 configuration-validation.conf文件中定义, 用户通过API 得到这些规则。这些API定义在下面的文档中。
服务选项Mysql 见https://wiki.openstack.org/wiki/Trove/Configurations/mysql-optionsCassandra 见 http://www.datastax.com/documentation/cassandra/2.0/cassandra/configuration/configCassandra_yaml_r.htmlAPI两种新的资源:configurations 和 configuration-parameters 将作为 Trove 的 API暴露给用户。configurations 资源允许用户创建一个新的配置组,组里包含用户定义的名字,描述以及 一组将要写入到MySQL overrides.cnf文件里去的 key value对。 配置组资源提供以下数据: •id – 第一次创建配置组时系统分配的UUID值.•name – 用户定义的配置组名字.•description – 用户定义的配置组描述 (可选).•values – 赋予配置组的一组键值对.•instances - 与配置组关联的一组实例(如果可用). 配置参数资源包含以下信息: •name – 键的名字.•description – 可选项/设置 的 描述.•default - 由MySQL提供的键的缺省值。服务提供者可以根据实例的大小或者硬件的配置来选择重载一定的MySQL缺省值。缺省由MySQL 的缺省值提供.•configurable – 是否允许被配置。•dynamic – 是否允许在MySQL 运行时动态更新值•type – 键的数据类型 (Boolean, String, Integer)
API 细节 Create / Modify / List Instance 为了实现这个功能,create/modify/list 实例的操作将不能破坏目前的1.0规则。 这些操作允许用户将一个配置组关联到一个新的或者已经存在的实例上,并决定那个配置组已经通过这些操作关联到已经运行的实例上了。Get an Instance Default Configuration (GET)根据套餐应用到实例上的缺省配置应答结构
Create an Instance (POST)请求消息
API 细节:配置 Get Configuration (GET)请求(无消息体)应答{ "configurations": { "id": "12345678-1111-2222-3333-444444444444", "name": "Enhanced Performance Settings", "description": "Performance Enhancing Settings", "values": { "ft_min_word_len": "2", "key_buffer_size": "300M" }, "instances": [ { "id": "dea5a2f7-3ec7-4496-adab-0abb5a42d635", "name": "json_rack_instance" } ] }}Get Configurations (GET)请求(无消息体)应答{ "configurations": [ { "id": "12345678-1111-2222-3333-444444444444", "name": "Enhanced Performance Settings", "description": "Performance Enhancing Settings" }, { "id": "11111111-2222-3333-4444-444444444444", "name": "Another great configuration group", "description": "Super Speed MySQL" } ]} Create a Configuration (POST)创建这个配置时,调用者必须提供一个名字和至少一个值。描述项是可选的。 请求 { "configuration" : { "name" : "Enhanced Performance Settings", "description" : "Performance Enhancing Settings", "values" : { "ft_min_word_len" : "2", "key_buffer_size" : "300M" } }}应答 { "configuration" : { “id” : “12345678-1111-2222-3333-444444444444”, "name" : "Enhanced Performance Settings", "description" : "Performance Enhancing Settings", "values" : { "ft_min_word_len" : "2", "key_buffer_size" : "300M" } }} Update a Configuration Parameter (GET)更新一个配置时,用户必须提供ID 以及更新所需的属性。当更新值数组时,调用者必须提供一组完全的值,该值将代替目前条目中的值。 请求{ "configuration" : { "values" : { "join_buffer_size": 1048576 } }}应答
(无应答体)
Update all Configuration Parameters (PUT) 更新一个配置时,用户必须提供ID 以及更新所需的属性。当更新值数组时,调用者必须提供一组完全的值,该值将代替目前条目中的值 请求{ "configuration" : { "values" : { "key_buffer_size" : 102400 } }} 应答{ "configuration" : { “id” : “12345678-1111-2222-3333-444444444444”, "name" : "Enhanced Performance Settings", "description" : "Performance Enhancing Settings", "values" : { "key_buffer_size" : 102400 } }}请求(无消息体)应答{ "parameters":[ { "name":"autocommit", "description":"Enable or disable MySQLs autocommit feature", "default":"true", "configurable":"true", "dynamic":"true", "type":"boolean" } ]}
数据库模式在trove 数据库中添加了两个条目:configuration_group 和 configuration_item。 这些条目保存由用户提供的配置组的数据。本表描述了本配置组所包含的 ID, 名字,描述 和 租户ID。配置组 本表描述了本配置组所包含的 ID, 名字,描述 和 租户ID。配置项 本表通过外键configuration_group_id 维护了 配置组的 多对一的关系。数据存储配置参数 本表包含了医嘱配置参数并将他们与指定的存储版本相关联:管理命令trove-manage 命令如下,对于每一个数据存储版本来说,该命令提供了加载指定目录下的配置参数json文件的功能。
trove-manage load_datastore_config_parameters [datastore_version_id] [full path to the json file]