ironic-dbsync

ironic-dbsync 工具用于创建 ironic 服务将用于存储的数据库模式表。它也可以在不同版本的 ironic 之间迁移时用于升级现有的数据库表。

Alembic 库 用于执行数据库迁移。

选项

以下是其中一些最有用的选项的列表。要查看完整列表,请运行以下命令

ironic-dbsync --help
-h, --help

显示帮助信息并退出。

--config-dir <DIR>

包含配置文件目录的路径。

--config-file <PATH>

要使用的配置文件的路径。

-d, --debug

打印调试输出。

--version

显示程序的版本号并退出。

upgrade, stamp, revision, version, create_schema,
online_data_migrations

要运行的 命令

用法

ironic-dbsync 的各种 命令 的选项在命令之后使用 -h--help 选项时列出。

例如

ironic-dbsync create_schema --help

数据库信息从 API 服务器和 conductor 服务使用的 ironic 配置文件中读取。必须使用 --config-file 选项指定此文件

ironic-dbsync --config-file /path/to/ironic.conf create_schema

配置文件定义了使用 connection 数据库选项使用的数据库后端

[database]
connection=mysql+pymysql://root@localhost/ironic

如果未通过 --config-file 选项指定配置文件,ironic-dbsync 假定 SQLite 数据库。

命令选项

ironic-dbsync 收到一个命令,告诉该工具要执行哪些操作。这些命令可以接受参数。有几个命令可用

create_schema

-h, --help

显示 create_schema 的帮助并退出。

此命令将基于最新版本创建数据库表。它假定不存在现有表。

创建数据库表的示例,使用最新版本

ironic-dbsync --config-file=/etc/ironic/ironic.conf create_schema

online_data_migrations

-h, --help

显示 online_data_migrations 的帮助并退出。

--max-count <NUMBER>

要迁移的最大对象数(正值)。可选。如果未指定,将迁移所有对象(分批进行 50 个,以避免长时间锁定数据库)。

--option <MIGRATION.KEY=VALUE>

如果迁移接受其他参数,可以通过此参数传递它们。可以多次指定它。

此命令将迁移数据库中的对象到其最新版本。在升级到未来版本之前,必须成功运行此命令(返回码 0)。

它返回

  • 1(未完成),如果仍有待迁移的对象。在升级到较新版本之前,必须运行此命令,直到返回 0。

  • 0(成功),迁移完成后或没有要迁移的数据

  • 127(错误),如果 max-count 不是正值或选项无效

  • 2(错误),如果数据库与此版本不兼容。需要使用 ironic 的先前版本运行此命令,然后再升级并使用此版本运行它。

revision

-h, --help

显示 revision 的帮助并退出。

-m <MESSAGE>, --message <MESSAGE>

要与修订文件一起使用的消息。

--autogenerate

比较应用程序中的表元数据与数据库的状态,并基于此比较生成迁移。

此命令将创建一个新的修订文件。可以使用 --message 选项来注释修订。

这对于进行需要数据库更改的 ironic 开发人员来说才真正有用。此修订文件在数据库迁移期间使用,并将指定需要对数据库表进行的更改。进一步讨论超出了本文档的范围。

stamp

-h, --help

显示 stamp 的帮助并退出。

--revision <REVISION>

修订号。

此命令将使用 --revision 选项指定的版本“标记”修订表。它不会运行任何迁移。

upgrade

-h, --help

显示 upgrade 的帮助并退出。

--revision <REVISION>

要升级到的修订号。

此命令将升级现有的数据库表到最新版本,或升级到使用 --revision 选项指定的版本。

在调用此 upgrade 之前,必须使用 ironic 的先前版本成功运行命令 ironic-dbsync online_data_migrations(如果您正在进行升级而不是 ironic 的全新安装)。如果未运行它,数据库将与此最新版本的 ironic 不兼容,并且此命令将返回 2(错误)。

如果不存在现有表,则将创建新表,从最旧的已知版本开始,并使用所有数据库迁移文件逐步升级,直到达到指定的版本。请注意,此行为与 create_schema 命令不同,后者基于最新版本创建表。

升级到最新表版本的示例

ironic-dbsync --config-file=/etc/ironic/ironic.conf upgrade

注意

如果未向 ironic-dbsync 提供命令,则此命令是默认命令。

警告

升级命令与 SQLite 数据库不兼容,因为它使用 ALTER TABLE 命令来升级数据库表。SQLite 仅支持有限的 ALTER TABLE 子集。

version

-h, --help

显示 version 的帮助并退出。

此命令将输出当前数据库版本。