概述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 } }}應答html
(無應答體)mysql
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]sql