Flyway多数据源初始化数据

背景

目前服务多需求并行开发,多套环境并行。包括开发环境,测试环境,预发布环境,正式环境,目前使用k8s进行镜像移交的方式,能保证服务一致性,但是脚本单独交付,零散且无法保证统一性,因此使用flyway方式,在服务启动时,执行脚本

实现方式

引入flyway依赖

<dependency>
	<groupId>org.flywaydb</groupId>
	<artifactId>flyway-core</artifactId>
	<version>6.5.7</version>
</dependency>
implementation("org.flywaydb:flyway-core:6.5.7")

数据库配置

  datasource:
    dynamic:
      primary: master
      strict: true
      datasource:
        master:
          driverClassName: com.mysql.cj.jdbc.Driver
          url: jdbc:mysql://${mysql.master.host}/master?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&useSSL=false&allowPublicKeyRetrieval=true
          username: ${mysql.master.username}
          password: ${mysql.master.password}
        sub:
          driverClassName: com.mysql.cj.jdbc.Driver
          url: jdbc:mysql://${mysql.sub.host}/mcex_gw?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&useSSL=false&zeroDateTimeBehavior=convertToNull
          username: ${mysql.sub.username}
          password: ${mysql.sub.password}

多数据源代码

import com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DataSourceProperty;
import com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties;
import java.util.Map;
import javax.annotation.Resource;
import org.flywaydb.core.Flyway;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 *  flyWay 多数据源执行配置
 * @author Liaowc
 * @version 1.0
 * @since 2024/7/9 上午10:16
 */
@Configuration
public class FlyWayLoadConfig {
  private static final String ENCODING = "UTF-8";
  @Resource
  private DynamicDataSourceProperties dynamicDataSourceProperties;

  @Bean
  public void migrate() {
    final Map<String, DataSourceProperty> datasource = dynamicDataSourceProperties.getDatasource();
    datasource.forEach((k,v)->{
      Flyway flyway = Flyway.configure()
          .dataSource(v.getUrl(),v.getUsername(),v.getPassword())
          .encoding(ENCODING)
          .baselineOnMigrate(true)
          .load();
      flyway.migrate();
    });
  }

}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值