当前位置: 首页 > 知识库问答 >
问题:

在Spring Boot应用程序中使用Flyway实现多数据源迁移

易扬
2023-03-14

我们在基于Spring Boot的应用程序中使用Flyway进行数据库迁移,现在我们需要在使用多数据源策略的同时引入多租户支持。作为其中的一部分,我们还需要支持多个数据源的迁移。所有数据源都应该保持相同的结构,因此应该使用相同的迁移脚本来迁移所有数据源。此外,迁移应该在应用程序启动时发生(与构建时相反,而maven插件似乎可以配置为迁移多个数据源)。要实现这一点,最好的方法是什么?应用程序已经定义了数据源bean,但Flyway只对主数据源执行迁移。

共有1个答案

张瀚漠
2023-03-14

Flyway支持Java内部编码的迁移,因此您可以在应用程序启动期间启动Flyway。

https://flywaydb.org/documentation/migration/java

我不确定如何通过Flyway的配置文件配置Flyway以多个数据源为目标。我自己的开发是基于使用Java对需要处理的每个数据源调用一次Flyway。Spring Boot支持标记为@flywaydatasource的bean自动连接,但我没有研究如何使用它。

对于一个在Java中的解决方案,代码可以像

    Flyway flyway = new Flyway();

    // Set the data source
    flyway.setDataSource(dataSource);

    // Where to search for classes to be executed or SQL scripts to be found
    flyway.setLocations("net.somewhere.flyway");

    flyway.setTarget(MigrationVersion.LATEST);
    flyway.migrate();
 类似资料:
  • 我使用Hibernate将Roo生成的SpringMVC应用程序连接到PostgreSQL。我试图将Flyway1.6作为一个bean集成到Spring应用程序上下文中。“有什么东西阻止”迁移的执行,我在上下文初始化时遇到了由Hibernate元数据验证引起的错误。使用Flyway 1.6 Maven插件(clean、init、migrate)执行迁移没有问题。 Flyway 1.5(早期版本)的

  • 这是我的应用程序工作流程。我有一个在Jetty/Tomcat中运行的springboot应用程序。该应用程序与MySQL/MariaDB的flyway数据库迁移功能集成在一起。 在很多情况下,应用程序都是使用docker-compose(我们需要的副本数实例)部署在服务器上的。 app_webapp.2.5kv8hnbu5myt@sophea-linux在org.springframework.b

  • 本文向大家介绍SpringBoot使用flyway初始化数据库,包括了SpringBoot使用flyway初始化数据库的使用技巧和注意事项,需要的朋友参考一下 概述 Flyway这款数据库版本工具就算大家没有使用过但也略有耳闻了,SpringBoot对该款工具进行集成的框架可以让我们在启动SpringBoot应用时自动去找SQL版本文件进行比对执行,但在迁移或初始化时往往还是需要先手动进行下数据库

  • 我试图在Spring Boot(v1.2.3)应用程序中使用两个数据库连接,如文档(http://docs.spring.io/spring-boot/docs/1.2.3.RELEASE/reference/htmlsingle/#howto-two-datasources. 问题似乎是次要数据源是用主要数据源的属性构建的。 有人能指出我错过了什么吗? 应用特性:

  • 我是kubernetes的新手,需要在openshift平台上使用k8s confimap将springboot应用程序的属性文件外部化。我已将属性文件保存在git repo中,作为“greeter.message=Spring Bootmyapplication.properties已在库伯内特斯上挂载为卷!”并使用“oc create confimap myconfig--from-file=

  • 我正试图将运行在tomcat上的现有应用程序更改为SpringBoot。它一直运行到真正的SpringBoot启动。我有一个类似的应用程序运行在SpringBoot上。这就是我知道它一直运行到Springboot的原因。 我的主要方法: 我尝试使用@componentscan运行main方法,该方法具有如下所示的basePackages: 这无济于事。我尝试在main类的顶部添加@SpringBo