使用ShardingSphere-proxy数据迁移的问题

方便更快捷的说明问题,可以按需填写(可删除)

使用环境:

ShardingSphere-proxy 5.1.2

场景、问题:

使用scaling自动模式,自定义分片算法。在修改表规则后无法触发Scaling完成迁移

已进行操作:

现有数据源

  • 原数据 oms_0
  • 分片数据 oms-2022-1,oms-2022-2,oms-2022-3,oms-2022-4

算法

表规则

预览分片规则

image

##配置文件

schemaName: sharding_db

dataSources:
  oms_0:
    url: jdbc:mysql://127.0.0.1:13306/db_oms1?serverTimezone=UTC&useSSL=false&useUnicode=true&characterEncoding=UTF-8
    username: root
    password: root
    connectionTimeoutMilliseconds: 30000
    idleTimeoutMilliseconds: 60000
    maxLifetimeMilliseconds: 1800000
    maxPoolSize: 50

rules:
- !SHARDING
  # 忽略的配置
  
  scalingName: scaling_auto
  scaling:
    scaling_auto:
      input:
        workerThread: 40
        batchSize: 1000
      output:
        workerThread: 40
        batchSize: 1000
      streamChannel:
        type: MEMORY
        props:
          block-queue-size: 10000
      completionDetector:
        type: IDLE
        props:
          incremental-task-idle-seconds-threshold: 1800
      dataConsistencyChecker:
        type: DATA_MATCH
        props:
          chunk-size: 1000

现状:

查看SCALING LIST

问题原因

在创建table rule之前添加了分片数据源

正确的执行顺序

  • 1.创建分片算法 CREATE SHARDING ALGORITHM
  • 2.创建分片表规则 CREATE SHARDING TABLE RULE
  • 3.添加目标数据源 ADD RESOURCE
  • 4.创建迁移规则 (如果配置文件中存在则跳过 )
  • 5.修改表分片规则(触发迁移) ALTER SHARDING TABLE RULE
  • 6.查看scaling任务列表 SHOW SCALING LIST;

感谢分享。

5.2.0刚发布,对数据迁移在易用性和功能方面都做了优化,可以参考 使用手册 做验证。

京ICP备2021015875号