从 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 留足本地盘。