我的服务器包含多个数据库,现在我需要在所有数据库上并行部署代码。在flyway中是否有可能实现这一目标,因为对于每个数据库,我都需要有单独的配置文件。所以我想知道如何以这种方式实现所有配置将并行触发。
问候,阿达什
为什么每个数据库都需要一个单独的配置文件?您可以使用此处记录的各种Flyway命令开关覆盖配置文件中的大多数/所有数据:
http://flywaydb.org/documentation/commandline/migrate.html
例如,您可以使用-URL开关覆盖配置文件中的JDBC连接字符串。这使您可以拥有一个配置文件,但可以针对不同的目标数据库运行升级。
通常最好使用这些开关,因为这样可以避免代码重复。(您不需要维护那么多的配置文件。)这也意味着您可以避免将密码之类的东西放入源代码中。
下一步是创建一个脚本,对每个目标数据库运行flyway migration。例如,您可以编写一个执行以下操作的脚本:
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,则可能会发现此步骤模板很有用。此步骤模板还包括“漂移检查”功能,以确保您的数据库同步:
如果您打算使用任何其他工具,你会发现这个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用户更有效地构建其项目。)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句