备份百万级表

【 TiDB 使用环境】生产环境 /测试/ Poc
【 TiDB 版本】
【复现路径】insert into A select * from B
【遇到的问题:问题现象及影响】耗时 且容易备份失败
【资源配置】
【附件:截图/日志/监控】资源占用很高

这样子会产生大事务,导致tidb-server内存使用增加很多,可能导致最终失败,建议用br进行数据备份。如果没有权限用br备份,那么建议分批提交的方式进行备份。

容易失败是tidb oom了还是只是这个SQL被终止了? 看下你的 txn-total-size-limit (事务大小) tidb_mem_quota_query (单个SQL允许的内存大小) 是否满足要求? 如果资源不足且事务太大 可以在insert前开启batch dml 设置多少条提交一次

这种最好是对B表按条件分批复制到A表

用dumpling+lightning的路由会不会更好一点

目的是备份,数据量也才百万级,dumpling可能会更适合你的需求。

dumping备份吧

导出导入吧,直接插入的话很容易超过大事务

大sql需要的内存大,但这与tidb的默认配置冲突,tidb底层需要复制协议,好像默认不超过1G的,如果这样备份极有可能报错,dumpling更事和你的需求

导出来放到别的地方不是更好的策略么?

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