openstack使用neutron-db-manage这个工具来管理neutron的数据库。如果我们对neutron的数据库要做一些修改,比如简单的增加一张表,删除一张表等,就需要使用这个工具了。
下面简单介绍一下如何使用这个工具:
通过使用这个命令来查看当前neutron数据库的版本状况
# neutron-db-manage current
Running current for neutron ...
INFO [alembic.runtime.migration] Context impl MySQLImpl.
INFO [alembic.runtime.migration] Will assume non-transactional DDL.
5b1229d495d7 (head)
644861cf5d9f (head)
OK
Running current for neutron-fwaas ...
INFO [alembic.runtime.migration] Context impl MySQLImpl.
INFO [alembic.runtime.migration] Will assume non-transactional DDL.
4b47ea298795 (head)
67c8e8d61d5 (head)
OK
上述结果中显示了两个subproject的版本信息,分别是neutron和neutron-fwaas。
结果中每个subproject都有两条版本号信息,我们拿neutron这个subproject为例简单说明一下。
5b1229d495d7 (head)
这个是expand分支的版本信息,后面的(head)表明当前版本是最新版本。
expand这个分支代表的是所有对数据库进行的扩充操作。
比如你给数据库增加了一张表,那么这个操作引起的版本号变更就会体现在这个分支上。
644861cf5d9f (head)
这个是contract分支的版本信息,后面一样的,(head)表明当前版本是最新版本。
contract这个分支代表的是所有对数据库进行的缩减操作(例如删除表操作)。
这个命令是为数据库变更创建一个修订文件,同时它也会生成一个新的版本和版本号,所以在应用该修订文件之前前,对应分支的版本号不再显示为head状态(有更新的版本未应用)。
它有几个参数
这条命令是应用修订文件,并更新版本号。
upgrade后面可以跟三个参数:heads/--expand/--contract
heads
例如:
neutron-db-manager upgrade heads
这会应用所有的修订文件,包括expand分支和contract分支,并更新到最新版本。
如果有多个subproject的情况下,上述的命令都可以使用subproject参数来选择,例如:
neutron-db-manager --subproject neutron current