微服务中的RDBMS数据库迁移,正确的做法是什么?

问题描述

如果您有一个多租户微服务,其中 sql/RDBMS(Postgres) 部署在云中,通常它会有多个实例。

我们一般使用 flyway 或 liquibase 等迁移框架来运行 Postgres 等 RBMS/sql 数据库的迁移脚本。

典型的基于 spring 的微服务在部署时每个实例都会尝试通过运行脚本将数据库升级到新版本。这种方法有问题

  • 假设您有 100 个实例,所有实例都将在启动时开始迁移
  • 您需要添加一个锁,以便只有一个实例可以迁移
  • 实例可以随机启动然后它也会尝试运行脚本

为大型分布式服务进行数据库升级的正确方法是什么?

  1. 当访问租户时,迁移服务可以监听事件并迁移单个租户。
  2. 在部署应用程序之前的管道中,它将尝试升级所有租户
  3. 读取时升级,假设租户有读取操作,请在同一个读取调用或异步线程中升级它。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)