nacos2.0引入flyway管理数据库脚本

这篇博客介绍了如何在Nacos 2.0部署中结合Flyway自动执行和管理数据库脚本。在遇到版本问题和Spring Boot的Flyway集成问题后,博主选择自定义DataSource并解决了与aws SecretManager的集成,以拉取数据库密码。此外,还讨论了Nacos启动时的数据dump操作和依赖调整,以确保Flyway的正确执行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

生产采用外部mysql部署时,为了方便后续定制sql及减少与infra沟通,采用flyway自动执行和管理sql脚本,具体过程及相关点记录一下,方便后续回顾,希望对你也有所帮助。

flyway的引入

版本问题

本着要用就是最新的原则,直接使用了8.5.5,启动报类缺失的错,后发现springboot本身有管理flyway版本,因此不需要指定版本即可

FlywayAutoConfiguration

查看源码可知,依赖一个DataSource,因此我引入了starter-jpa,配置了datasource相关属性,无奈还是没法字段创建flyway(知道原因的小伙伴可以留言给我,谢谢),因此只能自己创建一个DataSource

aws的secretmanager

由于数据库的密码信息是配置在aws的secretmanager中,因此需要在spring启动后进行配置拉取,并覆盖本地配置文件的值。
这里采用添加Listener的方式进行监听处理

# spring.factories
org.springframework.context.ApplicationListener=xx.AwsFetchConfigurationListener
public class AwsFetchConfigurationListener implements ApplicationListener<ApplicationEnvironmentPreparedEvent> {
   
    @Override
    public void onApplicationEvent(ApplicationEnvironmentPreparedEvent event) {
   
       
        ConfigurableEnvironment environment = event.getEnvironment();
		// 拉取配置,并添加到环境中
        getCredential(environment).ifPresent(credential -> {
   
            // all properties need to be config in AWS Secrets Management, otherwise it will occur error when setting
            Properties props = new Properties();
            props.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值