lightning 表可以路由嘛

从 MySQL 迁到 TiDB,如果原来用了自增主键,高并发下会产生写入热点,因为所有写操作都集中在同一个 Region。建议评估下改成 AUTO_RANDOM 或者业务自己生成分布式ID,利用 TiDB 的 Region 自动拆分机制提高写入吞吐。

可以,通过 CSV 导入或设置target-schema映射,dumpling 导出 a 表数据可由 Lightning 写入同库 b 表。

小数据量(几十 G 以内,同库迁移):直接执行分批 INSERT INTO b SELECT * FROM a,最优;大数据量必须使用 Lightning:物理 local 导入务必切换成 tidb 后端,保证分区正常打散。

mysqldump

可以的

需要配置 [[mydumper.files]] 或更常用的 [[routes]] 规则来重命名目标表。

可以实现:Dumpling 导出 db.a,Lightning 直接写入同库 db.b,不需要修改 dump 文件、不需要重命名文件

TiDB Lightning 支持通过 routes 配置将源表名映射到目标表名

[mydumper]
data-source-dir = "/path/to/dumpling-export"

[[mydumper.routes]]
schema-pattern = "your_db"
table-pattern  = "a"
target-schema  = "your_db"
target-table   = "b"

Lightning 会把原本属于 your_db.a 的数据,全部导入到 your_db.b 中。
Dumpling 导出 a 表,Lightning 导入到同实例的 b 表,官方支持且常用 ,只需在 Lightning 配置里写一条路由规则即可。

1 个赞

源库到目标库迁移,是不是可以这样设置呀?
[[mydumper.routes]]
schema-pattern = “your_db”
target-schema = “your_db”

#表库重命名

routes 功能在 https://docs.pingcap.com/zh/tidb/stable/tidb-lightning-configuration/ 里并没有,历史遗留功能不建议使用

应该没这个参数吧,官方手册没

好的呀,谢谢

Lightning 用 local 后端导入最快,导入前目标表尽量去二级索引、给 sort-dir 留足本地盘。