Tidb数据库表数据按时间导出

【 TiDB 使用环境】生产环境
【 TiDB 版本】5.2.4
【遇到的问题:】
1.有什么工具将数据库表数据按照3个月时间周期导出,再导入数据库,目的是将正式库导出部分数据然后导入到开发库做测试用,在同一个tidb内操作;
2.删除数据库、表,数据量大时应该怎么操作避免对业务冲击大。

方法其实很多。
1.离线方式数据量不大的话可以用dumpling 和lightning 导,大数据量用BR,或者使用TiCDC实时同步

2.建议使用分区表,按时间分区,可以随时删除历史数据而且对集群影响很小

duimping可以指定3个月按时间导出吗

印象中是可以指定where条件导出数据的。如果数据量不大,你完全可以使用mysqldump来导出导入,我们几百万几千万行的场景经常就这样做,毕竟时间不急简单又直接

好的,dumpling貌似不能指定时间,我用 mysqldump操作下

这个具体怎么操作,麻烦告知下

其实很简单的,选用range 分区 (按时间分),具体操作可以看下官方文档:

https://docs.pingcap.com/zh/tidb/stable/partitioned-table#分区表

如果有问题可以随时交流

可以指定时间导出的,和mysqldump基本一样

你可以使用 --where <SQL where expression> 来指定要导出的记录:

./dumpling -u root -P 4000 -h 127.0.0.1 -o /tmp/test --where "id < 100"

上述命令将会导出表满足条件 id < 100 的数据,这里如果你使用时间则替换为相应的条件即可

具体可以参考文档:
https://docs.pingcap.com/zh/tidb/stable/dumpling-overview#使用-dumpling-导出数据

这种的我都是写kettle脚本按日期循环导数

是的,写段脚本定期导也很方便。

我的做法,实际上大多数时候我会写一条flink流实时同步,可以随时控制数据量、并发、QPS,很方便

1 个赞

写个脚本自己导出,本身这些工具也是go开发的

导出的时候可以加条件–where 或者是–sql

在同一个数据库,数据量小的话,就直接insert into select呗,where后面加上时间就行了。数据量大的话就用dumpling导出,可以加 --where来筛选数据

此话题已在最后回复的 60 天后被自动关闭。不再允许新回复。