monetdb 迁移工具
项目描述
Mroll迁移工具
mroll
已被设计用来帮助MonetDB用户管理数据库迁移。功能包括向前和向后迁移功能。虽然您可以从任何时间点部署mroll
,但建议从数据库创建的第一天开始使用它。mroll
已被内部用于管理MonetDB的持续集成工作流程。
安装
从PyPi安装mroll
$ pip install mroll
概述
命令概述总结了功能。
$ mroll --help
Usage: commands.py [OPTIONS] COMMAND1 [ARGS]... [COMMAND2 [ARGS]...]...
Options:
--help Show this message and exit.
Commands:
config Set up mroll configuration under $HOME/.config/mroll
history Shows applied revisions.
init Creates mroll_revisions tbl.
revision Creates new revision from a template.
rollback Downgrades to previous revision by default.
setup Set up work directory.
show Shows revisions information.
upgrade Applies all revisions not yet applied in work dir.
version Shows current version
每个命令可能带有一些选项,通过--help
添加进行说明。例如,在安装mroll时可以使用--path
选项指定迁移目录的位置。例如,--path "/tmp/migration"
位置。
要更新/设置mroll
配置,请使用config
命令。例如,要更新工作目录路径的配置设置,请运行。
mroll config -p <workdir_path>
用法
为了说明功能,我们将向您展示创建并管理名为demo的MonetDB数据库的步骤。我们假设您已下载mroll
(见下文),并准备好尝试使用它。
设置
mroll
需要为每个想要管理的数据库创建一个工作目录。其位置没有限制,但你可以将其迁移脚本保存在应用程序文件夹中,例如 .../app/migrations
。从 .../app
目录下执行命令:
$ mroll setup
ok
创建一个名为 migrations
的子目录来管理迁移版本。
配置
mroll
需要知道数据库的位置和凭证以启动迁移步骤。请确保您已经使用 monetdb
工具创建了并发布了演示数据库。然后完成文件 migrations/mroll.ini
,例如:
[db]
db_name=demo
user=monetdb
password=monetdb
port=50000
[mroll]
rev_history_tbl_name = mroll_revisions
管理迁移的最终步骤是:
$ mroll init
定义第一个修订版
空数据库将被填充数据库模式。为此,我们定义一个修订版。修订版名称是由系统生成的
$ mroll revision -m "Initialize the database"
ok
$ mroll show all_revisions
<Revision id=fe00de6bfa19 description=Initialize the database>
在 /tmp/migrations/versions
下添加了一个新的修订版文件。打开它,并在 -- migration:upgrade
和 -- migration:downgrade
节中加入 SQL 命令。
vi tmp/migrations/versions/<rev_file>
-- identifiers used by mroll
-- id=fe00de6bfa19
-- description=create tbl foo
-- ts=2020-05-08T14:19:46.839773
-- migration:upgrade
create table foo (a string, b string);
alter table foo add constraint foo_pk primary key (a);
-- migration:downgrade
drop table foo;
然后运行“升级”命令。
$ mroll upgrade
Done
使用“历史”命令检查已应用的内容。
$ mroll history
<Revision id=fe00de6bfa19 description=create tbl foo>
使用 mroll show [all|pending|applied]
查看修订版概览,其中 mroll applied
等同于 mroll history
。
$mroll show applied
<Revision id=fe00de6bfa19 description=create tbl foo>
要回滚最后应用的修订版,请运行 rollback
命令。这将执行 migration:downgrade
节下的 SQL。
$ mroll rollback
Rolling back id=fe00de6bfa19 description=create tbl foo ...
Done
开发
开发者注意
mroll
使用 Poetry 进行开发,用于依赖管理和打包。
开发安装
为了安装 mroll
,请按照以下步骤操作:
pip3 install --user poetry
PYTHON_BIN_PATH="$(python3 -m site --user-base)/bin"
export PATH="$PATH:$PYTHON_BIN_PATH"
git clone git@github.com:MonetDBSolutions/mroll.git
cd mroll
poetry install
poetry run mroll/commands.py --help
使用以下命令安装项目依赖项:
poetry install
这将在虚拟环境中创建虚拟环境并从 poetry.lock
文件中安装依赖项。然后可以使用 poetry 运行上述任何命令。
poetry run mroll/commands.py <command>
测试
运行所有单元测试
make test
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。