gpt4 book ai didi

flyway - 我们可以使用flyway在多个数据库上并行部署sql代码吗

转载 作者:行者123 更新时间:2023-12-04 23:18:25 25 4
gpt4 key购买 nike

我有包含多个数据库的服务器,现在我需要在所有数据库上并行部署代码,是否可以在 flyway 中实现这一点,因为对于每个数据库,我需要有单独的配置文件。所以我想知道如何以这种方式实现所有配置将并行触发。

问候,
阿达什

最佳答案

为什么每个数据库都需要一个单独的配置文件?您可以使用此处记录的各种 Flyway 命令开关覆盖配置文件中的大部分/所有数据:

http://flywaydb.org/documentation/commandline/migrate.html

例如,您可以使用 -URL 开关来覆盖配置文件中的 JDBC 连接字符串。这允许您拥有一个配置文件,但可以针对不同的目标数据库运行升级。

通常最好使用这些开关,因为它可以避免代码重复。 (您不需要维护这么多配置文件。)这也意味着您可以避免将密码之类的东西放入源代码中。

下一步是创建一个脚本,对每个目标数据库运行 flyway migrate。例如,您可以编写一个执行以下操作的脚本:

flyway migrate -url:jdbc:mysql://<host>:<port>/<database1>
flyway migrate -url:jdbc:mysql://<host>:<port>/<database2>
flyway migrate -url:jdbc:mysql://<host>:<port>/<database3>
flyway migrate -url:jdbc:mysql://<host>:<port>/<database4>

现在,当您运行此脚本时,您的每个数据库都将按顺序更新。

或者,如果您需要并行而不是按顺序运行更新,则需要找到一种方法来安排每行同时运行。实现此目的的一种方法是使用自动化工具,例如 Octopus Deploy来编排您的部署。

如果您想使用 Octopus Deploy,您可能会发现此步骤模板很有用。此步骤模板还包括“漂移检查”功能,以确保您的数据库同步:

Flyway migrate step template for Octopus Deploy

如果您打算使用任何其他工具,您可能会发现此 PowerShell 脚本很有用(从上面的链接复制),其中 $locationsPath , $targetUrl , $targetUser$targetPassword都是变量。
# Executing deployment
Write-Host "*******************************************"
Write-Host "Executing deployment:"
Write-Host " - - - - - - - - - - - - - - - - - - - - -"
$arguments = @(
"migrate"
"-locations=filesystem:$locationsPath",
"-url=$targetUrl",
"-user=$targetUser",
"-password=$targetPassword"
)
Write-Host "Executing the following command: & $flywayCmd $arguments"

& $flywayCmd $arguments

问候,亚历克斯

(公开披露:我是 Redgate Software 的售前工程师。我编写了上面提到的步骤模板,并与团队合作构建了 FlySQL,这是一个帮助 MySQL Flyway 用户更高效地构建项目的工具。)

关于flyway - 我们可以使用flyway在多个数据库上并行部署sql代码吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34216225/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com