方便更快捷的说明问题,可以按需填写(可删除)
使用环境:测试,代码:master
proxy仅配置server.yaml,内容以下:
mode:
type: Cluster
repository:
type: ZooKeeper
props:
namespace: data_migration_1
server-lists: xxx:2181
retryIntervalMilliseconds: 500
timeToLiveSeconds: 60
maxRetries: 3
operationTimeoutMilliseconds: 500
overwrite: false
rules:
- !AUTHORITY
users:
- root@:root
- sharding@:sharding
provider:
type: ALL_PRIVILEGES_PERMITTED
- !SQL_PARSER
sqlCommentParseEnabled: true
props:
max-connections-size-per-query: 1
kernel-executor-size: 16 # Infinite by default.
proxy-frontend-flush-threshold: 128 # The default value is 128.
proxy-hint-enabled: false
sql-show: true
check-table-metadata-enabled: false
测试数据迁移场景,打开mysql客户端连接3307 proxy服务
依次执行以下命令:
// 创建库
CREATE DATABASE scaling_db;
USE scaling_db;
// 添加源数据源
ADD RESOURCE ds_0 (
URL="jdbc:mysql://xx:3306/ds_0?serverTimezone=UTC&useSSL=false",
USER=abm_dev,
PASSWORD=xx,
PROPERTIES("connectionTimeoutMilliseconds"=30000,"idleTimeout"="60000")
);
// 分表规则
CREATE SHARDING TABLE RULE t_order (DATANODES("ds_0.t_order"));
// 创建表&插入数据
CREATE TABLE t_order (order_id INT NOT NULL, user_id INT NOT NULL, status VARCHAR(45) CHARSET utf8mb4, PRIMARY KEY (order_id));
INSERT INTO t_order (order_id, user_id, status) VALUES (1,2,'ok'),(2,4,'ok'),(3,6,'ok'),(4,1,'ok'),(5,3,'ok'),(6,5,'ok');
// 数据同步
CREATE SHARDING SCALING RULE scaling_manual (
DATA_CONSISTENCY_CHECKER(TYPE(NAME=CRC32_MATCH))
);
// 添加目标数据源
ADD RESOURCE ds_1 (
URL="jdbc:mysql://xx:3306/ds_1?serverTimezone=UTC&useSSL=false",
USER=abm_dev,
PASSWORD=xx,
PROPERTIES("connectionTimeoutMilliseconds"=30000,"idleTimeout"="60000")
);
// 修改分表规则
ALTER SHARDING TABLE RULE t_order (
DATANODES("ds_1.t_order_${0..5}"),
TABLE_STRATEGY(TYPE=standard,SHARDING_COLUMN=order_id, SHARDING_ALGORITHM(TYPE(NAME=MOD,PROPERTIES("sharding-count"=6)))),
KEY_GENERATE_STRATEGY(COLUMN=order_id,TYPE(NAME=INCREMENT)));
// 查询迁移任务列表
SHOW SCALING LIST;
// 查询任务进度
SHOW SCALING STATUS
// 停止写入
STOP SCALING SOURCE WRITING
// 检查
CHECK SCALING
问题:
数据迁移执行完修改语句,zk没有分片表,重启后才有,试了3遍都是一样的,每次都是重启完才创建然后执行CHECK SCALING 就没有问题
zk没有分片表节点,但是库中已经创建分片表,并且数据已经迁移完成,jobid查询进度100,状态:EXECUTE_INCREMENTAL_TASK,执行CHECK SCALING 提示could not get metadata for table xxx