测试容器、mariadb、shardingsphere和flyway

44u64gxh  于 2022-12-13  发布在  其他
关注(0)|答案(1)|浏览(307)

我正在寻找一些非常好的例子,它们可以启发我如何设置我的集成测试,给出一个使用Testcontainers、mariadb、shardingsphere和flyway的设置。
如果需要3个分片,我假设需要初始化3个不同的数据源,每个分片对应一个数据源,如下所示

spring:
  config:
    activate:
      on-profile: test
  shardingsphere:
    datasource:
      names: test-api-1, test-api-2, test-api-3,
      test-api-1:
        type: org.apache.commons.dbcp2.BasicDataSource
        driver-class-name: org.testcontainers.jdbc.ContainerDatabaseDriver
        url: jdbc:tc:mariadb:10.6.7:///
        validationQuery: /* ping */ select 1
        name: testapi01
        username: root
        password: root1234
      test-api-2:
        type: org.apache.commons.dbcp2.BasicDataSource
        driver-class-name: org.testcontainers.jdbc.ContainerDatabaseDriver
        url: jdbc:tc:mariadb:10.6.7:///
        validationQuery: /* ping */ select 1
        name: testapi02
        username: root
        password: root1234
      test-api-3:
        type: org.apache.commons.dbcp2.BasicDataSource
        driver-class-name: org.testcontainers.jdbc.ContainerDatabaseDriver
        url: jdbc:tc:mariadb:10.6.7:///
        validationQuery: /* ping */ select 1
        name: testapi03
        username: root
        password: root1234

我想不出的是如何正确地配置flyway。所以,底线是,我正在寻找一对夫妇的好的实际例子,可以指出我在正确的方向。也随时纠正我,如果我以上的假设是错误的。
到目前为止,我们一直在运行基于单个数据源的集成测试,因为主要的重点是测试数据库迁移之类的生产环境。但是,由于我们正在尝试改变我们的分片选择,我们也需要测试多个分片。

axr492tv

axr492tv1#

其实有两种方法
首先,如果你在flyway中使用shardingsphere-jdbc,可以分别配置它们。这意味着你在这里使用3个DB进行分片,需要告诉flyway所有这些3个DB和所有分片的实际表。注意,这种方式会导致漂移问题,因为shardingsphere-jdbc无法感知flyway的变化。
其次,使用shardingsphere-proxy进行分片和flyway迁移。因为shardingsphere-proxy与shardingsphere-jdbc共享相同的功能,并且作为database server工作。因此,您可以使用Shardingsphere-proxy [1]创建一个包含许多逻辑分片表的逻辑分片数据库。然后使用此逻辑数据库和分片表通知flyway、用户名和密码进行迁移。

flyway.user=shardingsphere-proxy-username # Defined in a server.yaml file.
flyway.password=shardingsphere-proxy-databasePassword # Defined in a server.yaml file.
flyway.schemas=shardingsphere-proxy-schemaName # Defined in a config-sharding.yaml file.

[1][https://shardingsphere.apache.org/document/5.2.1/en/user-manual/shardingsphere-proxy/startup/](https://shardingsphere.apache.org/document/5.2.1/en/user-manual/shardingsphere-proxy/startup/)

相关问题