watcher-db-manage

watcher-db-manage 工具用于创建 watcher 服务将用于存储的数据库模式表。它还可以用于在 watcher 的不同版本之间迁移时升级(或降级)现有的数据库表。

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

选项

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

watcher-db-manage --help
-h, --help

显示帮助信息并退出。

--config-dir <DIR>

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

--config-file <PATH>

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

-d, --debug

打印调试输出。

-v, --verbose

打印更详细的输出。

--version

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

upgrade, downgrade, stamp, revision, version, create_schema, purge

要运行的 命令

用法

watcher-db-manage 的各种 命令 的选项在使用命令后,通过 -h--help 选项列出。

例如

watcher-db-manage create_schema --help

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

watcher-db-manage --config-file /path/to/watcher.conf create_schema

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

[database]
connection=mysql://root@localhost/watcher

如果未通过 --config-file 选项指定配置文件,watcher-db-manage 假定使用 SQLite 数据库。

命令选项

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

create_schema

-h, --help

显示 create_schema 的帮助并退出。

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

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

watcher-db-manage --config-file=/etc/watcher/watcher.conf create_schema

downgrade

-h, --help

显示 downgrade 的帮助并退出。

--revision <REVISION>

要降级的修订号。

此命令会将现有的数据库表还原到以前的版本。可以使用 --revision 选项指定版本。

将表版本降级到修订号 2581ebaf0cb2 的示例

watcher-db-manage --config-file=/etc/watcher/watcher.conf downgrade --revision 2581ebaf0cb2

revision

-h, --help

显示 revision 的帮助并退出。

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

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

--autogenerate

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

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

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

stamp

-h, --help

显示 stamp 的帮助并退出。

--revision <REVISION>

修订号。

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

upgrade

-h, --help

显示 upgrade 的帮助并退出。

--revision <REVISION>

要升级到的修订号。

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

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

将表升级到最新版本的示例

watcher-db-manage --config-file=/etc/watcher/watcher.conf upgrade

注意

如果未向 watcher-db-manage 提供命令,则此命令是默认命令。

警告

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

version

-h, --help

显示 version 的帮助并退出。

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

purge

-h, --help

显示 purge 的帮助并退出。

-d, --age-in-days

从今天开始,在此天数之前,我们将认为软删除的对象已过期并应被删除。默认情况下,所有软删除的对象都被认为已过期。这可能很有用,因为删除大量对象可能会导致性能问题。

-n, --max-number

我们期望删除的最大数据库对象数。如果超过此限制,将阻止任何删除。

-t, --goal

要清除的目标的 UUID 或名称。

-e, --exclude-orphans

这是一个标志,指示我们是否要从删除中排除孤立对象。

--dry-run

这是一个标志,指示我们是否要执行试运行。这将显示将被删除的对象,而不是实际删除它们。

此命令将清除当前数据库,删除其软删除和孤立对象。